From f9f6825776d23def09d77937124d94d1315f6cc2 Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Mon, 12 Oct 2020 20:49:17 +0200 Subject: [PATCH 001/101] Fix physics --- backend/.dockerignore => .dockerignore | 2 +- Dockerfile | 8 +- backend/Dockerfile | 11 -- backend/docker-compose.yml | 22 --- backend/src/main.ts | 20 +-- backend/src/map/create-dungeon.ts | 150 ++++++++++++++---- backend/src/objects/character-physical.ts | 139 +++++++++------- backend/src/objects/circle-physical.ts | 99 +++++++----- backend/src/objects/lamp-physical.ts | 13 +- backend/src/objects/projectile-physical.ts | 67 ++++++++ backend/src/objects/stone-physical.ts | 78 +++++++++ backend/src/objects/tunnel-physical.ts | 48 ------ .../bounding-boxes/bounding-box-base.ts | 2 + .../physics/containers/bounding-box-list.ts | 14 +- .../physics/containers/bounding-box-tree.ts | 34 ++-- .../physics/containers/dynamic-physical.ts | 5 + .../physics/containers/physical-container.ts | 56 +------ ...-physical-object.ts => static-physical.ts} | 0 backend/src/physics/move-circle.ts | 83 ++++------ backend/src/physics/physical.ts | 1 - backend/src/players/player-color-service.ts | 15 ++ backend/src/players/player.ts | 32 +++- frontend/src/index.html | 35 ++-- frontend/src/index.ts | 9 +- .../commands/generators/mouse-listener.ts | 7 +- .../commands/generators/touch-listener.ts | 9 +- frontend/src/scripts/game.ts | 43 +++-- frontend/src/scripts/objects/camera.ts | 31 ++-- .../src/scripts/objects/character-view.ts | 35 ++-- .../scripts/objects/game-object-container.ts | 35 ++-- frontend/src/scripts/objects/lamp-view.ts | 13 +- .../src/scripts/objects/projectile-view.ts | 19 +++ frontend/src/scripts/objects/stone-view.ts | 25 +++ frontend/src/scripts/objects/tunnel-view.ts | 17 -- frontend/src/scripts/objects/view-object.ts | 7 + frontend/src/scripts/shapes/blob-shape.ts | 20 ++- frontend/src/scripts/shapes/polygon.ts | 4 + package.json | 2 +- shared/src/commands/types/step.ts | 7 - shared/src/helper/mix-rgb.ts | 12 ++ shared/src/helper/random.ts | 13 ++ .../src/scripts => shared/src}/helper/rgb.ts | 0 .../scripts => shared/src}/helper/rgb255.ts | 0 shared/src/main.ts | 8 +- shared/src/objects/game-object.ts | 7 +- shared/src/objects/types/character-base.ts | 5 +- shared/src/objects/types/lamp-base.ts | 2 +- shared/src/objects/types/projectile-base.ts | 15 ++ shared/src/objects/types/stone-base.ts | 15 ++ shared/src/objects/types/tunnel-base.ts | 22 --- shared/src/settings.ts | 57 +++++-- 51 files changed, 832 insertions(+), 541 deletions(-) rename backend/.dockerignore => .dockerignore (60%) delete mode 100644 backend/Dockerfile delete mode 100644 backend/docker-compose.yml create mode 100644 backend/src/objects/projectile-physical.ts create mode 100644 backend/src/objects/stone-physical.ts delete mode 100644 backend/src/objects/tunnel-physical.ts create mode 100644 backend/src/physics/containers/dynamic-physical.ts rename backend/src/physics/containers/{static-physical-object.ts => static-physical.ts} (100%) create mode 100644 backend/src/players/player-color-service.ts create mode 100644 frontend/src/scripts/objects/projectile-view.ts create mode 100644 frontend/src/scripts/objects/stone-view.ts delete mode 100644 frontend/src/scripts/objects/tunnel-view.ts create mode 100644 frontend/src/scripts/objects/view-object.ts create mode 100644 frontend/src/scripts/shapes/polygon.ts delete mode 100644 shared/src/commands/types/step.ts create mode 100644 shared/src/helper/mix-rgb.ts rename {frontend/src/scripts => shared/src}/helper/rgb.ts (100%) rename {frontend/src/scripts => shared/src}/helper/rgb255.ts (100%) create mode 100644 shared/src/objects/types/projectile-base.ts create mode 100644 shared/src/objects/types/stone-base.ts delete mode 100644 shared/src/objects/types/tunnel-base.ts diff --git a/backend/.dockerignore b/.dockerignore similarity index 60% rename from backend/.dockerignore rename to .dockerignore index a9c8231..e10427c 100644 --- a/backend/.dockerignore +++ b/.dockerignore @@ -1,3 +1,3 @@ .dockerignore Dockerfile -node_modules +**/node_modules diff --git a/Dockerfile b/Dockerfile index ae21f1e..e4e26b2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,17 +1,15 @@ -FROM node:14.13.0-alpine3.10 as base +FROM node:14.13.0-alpine3.10 as build COPY . . - RUN npm install && npm run initialize && npm run build + FROM node:14.13.0-alpine3.10 COPY backend/package.json . - RUN npm install --production -COPY --from=base backend/dist/main.js main.js +COPY --from=build backend/dist/main.js main.js EXPOSE 3000 - CMD [ "node", "main.js" ] diff --git a/backend/Dockerfile b/backend/Dockerfile deleted file mode 100644 index 3ea763a..0000000 --- a/backend/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM node:14.13.0-alpine3.10 - -COPY package.json . - -RUN npm install --production - -COPY dist/main.js main.js - -EXPOSE 3000 - -CMD [ "node", "main.js" ] diff --git a/backend/docker-compose.yml b/backend/docker-compose.yml deleted file mode 100644 index c44fd30..0000000 --- a/backend/docker-compose.yml +++ /dev/null @@ -1,22 +0,0 @@ -version: '3.8' - -services: - decla-red-server: - init: true - image: schmelczera/decla-red-server - networks: - - network - deploy: - resources: - limits: - cpus: '1.0' - memory: 256M - reservations: - cpus: '0.25' - memory: 256M - restart_policy: - condition: on-failure - window: 30s - -networks: - network: diff --git a/backend/src/main.ts b/backend/src/main.ts index be08247..a8c860a 100644 --- a/backend/src/main.ts +++ b/backend/src/main.ts @@ -7,7 +7,6 @@ import { Random, TransportEvents, deserialize, - StepCommand, settings, } from 'shared'; import './index.html'; @@ -25,9 +24,6 @@ Random.seed = 42; const objects = new PhysicalContainer(); createDungeon(objects); -createDungeon(objects); -createDungeon(objects); -createDungeon(objects); objects.initialize(); @@ -88,8 +84,7 @@ let deltas: Array = []; const handlePhysics = () => { const delta = deltaTimeCalculator.getNextDeltaTimeInMilliseconds(); deltas.push(delta); - const step = new StepCommand(delta); - if (deltas.length > 100) { + if (deltas.length > 1000) { deltas.sort((a, b) => a - b); console.log(`Median physics time: ${deltas[50].toFixed(2)} ms`); console.log( @@ -99,17 +94,8 @@ const handlePhysics = () => { console.log(players.map((p) => p.latency)); } - if (deltas.length > 100) { - deltas.sort((a, b) => a - b); - console.log(`Median physics time: ${deltas[50].toFixed(2)} ms`); - console.log( - `Memory used: ${(process.memoryUsage().rss / 1024 / 1024).toFixed(2)} MB`, - ); - deltas = []; - } - - objects.sendCommand(step); - players.forEach((p) => p.sendCommand(step)); + objects.stepObjects(delta); + players.forEach((p) => p.sendObjects()); const physicsDelta = deltaTimeCalculator.getDeltaTimeInMilliseconds(); deltas.push(physicsDelta); diff --git a/backend/src/map/create-dungeon.ts b/backend/src/map/create-dungeon.ts index f654b71..1c6b952 100644 --- a/backend/src/map/create-dungeon.ts +++ b/backend/src/map/create-dungeon.ts @@ -1,45 +1,127 @@ import { vec2, vec3 } from 'gl-matrix'; -import { Random } from 'shared'; +import { last, Random, settings } from 'shared'; import { LampPhysical } from '../objects/lamp-physical'; -import { TunnelPhysical } from '../objects/tunnel-physical'; +import { StonePhysical } from '../objects/stone-physical'; import { PhysicalContainer } from '../physics/containers/physical-container'; +import { Physical } from '../physics/physical'; -export const createDungeon = (objects: PhysicalContainer) => { - let previousRadius = 350; - let previousEnd = vec2.create(); +export const createDungeon = (objectContainer: PhysicalContainer) => { + const width = 100000; + const height = 10000; + const objects: Array = []; + const lights: Array = []; - let tunnelsCountSinceLastLight = 0; + let previousEnd = vec2.fromValues(-width / 2, 0); + while (previousEnd.x < width / 2) { + const { stone, end } = createFloorElement(previousEnd); + objects.push(stone); + previousEnd = end; + } + const calculateDistanceField = (target: vec2): number => + objects.reduce((min, i) => (min = Math.min(min, i.distance(target))), 1000); - for (let i = 0; i < 50000; i += 500) { - const deltaHeight = (Random.getRandom() - 0.5) * 500; - const height = previousEnd.y + deltaHeight; - const currentEnd = vec2.fromValues(i, height); - const currentToRadius = Random.getRandom() * 300 + 150; + for (let i = 0; i < 400; i++) { + let position: vec2; - const tunnel = new TunnelPhysical( - previousEnd, - currentEnd, - previousRadius, - currentToRadius, + do { + position = vec2.fromValues( + Random.getRandomInRange(-width / 2, width / 2), + Random.getRandomInRange(0, height), + ); + } while ( + calculateDistanceField(position) < 600 || + calculateDistanceField(position) > 2000 ); - objects.addObject(tunnel); - - if (++tunnelsCountSinceLastLight > 3 && Random.getRandom() > 0.7) { - objects.addObject( - new LampPhysical( - currentEnd, - vec3.normalize( - vec3.create(), - vec3.fromValues(Random.getRandom(), 0, Random.getRandom()), - ), - 0.5, - ), - ); - tunnelsCountSinceLastLight = 0; - } - - previousEnd = currentEnd; - previousRadius = currentToRadius; + objects.push( + createBlob( + position, + Random.getRandomInRange(200, 2000), + Random.getRandomInRange(100, 500), + Random.getRandomInRange(10, 40), + ), + ); } + + let tryCount = 0; + lightGeneration: for (let i = 0; i < 300; i++) { + console.log(i); + let position: vec2; + do { + position = vec2.fromValues( + Random.getRandomInRange(-width / 2, width / 2), + Random.getRandomInRange(-1000, height), + ); + + if (tryCount++ > 1e4) { + break lightGeneration; + } + } while ( + calculateDistanceField(position) < 200 || + lights.find((l) => l.distance(position) < 1200) + ); + lights.push( + new LampPhysical( + position, + vec3.normalize( + vec3.create(), + vec3.fromValues( + Random.getRandomInRange(0.5, 1), + 0, + Random.getRandomInRange(0.5, 1), + ), + ), + Random.getRandomInRange(0.75, 1.5), + ), + ); + } + + [...objects, ...lights].forEach((o) => objectContainer.addObject(o)); +}; + +const createBlob = ( + center: vec2, + width: number, + height: number, + randomness: number, +): StonePhysical => { + const vertices = []; + + for (let i = 0; i < settings.polygonEdgeCount; i++) { + vertices.push( + vec2.fromValues( + center.x + + (width / 2) * Math.cos((i / settings.polygonEdgeCount) * -Math.PI * 2) + + Random.getRandomInRange(-randomness, randomness), + center.y + + (height / 2) * Math.sin((i / settings.polygonEdgeCount) * -Math.PI * 2) + + Random.getRandomInRange(-randomness, randomness), + ), + ); + } + return new StonePhysical(vertices); +}; + +const createFloorElement = ( + start: vec2, +): { + stone: StonePhysical; + end: vec2; +} => { + const vertices: Array = [vec2.fromValues(start.x, -10000), start]; + + let previousX = start.x; + let previousY = start.y; + for (let i = 0; i < settings.polygonEdgeCount - 3; i++) { + previousX += Random.getRandomInRange(200, 800); + previousY += Random.getRandomInRange(-100, 100); + vertices.push(vec2.fromValues(previousX, previousY)); + } + + const end = last(vertices)!; + vertices.push(vec2.fromValues(end.x, -10000)); + return { + stone: new StonePhysical(vertices), + end, + }; }; diff --git a/backend/src/objects/character-physical.ts b/backend/src/objects/character-physical.ts index 93eecd0..d1023db 100644 --- a/backend/src/objects/character-physical.ts +++ b/backend/src/objects/character-physical.ts @@ -2,25 +2,22 @@ import { vec2 } from 'gl-matrix'; import { id, CharacterBase, - StepCommand, settings, - CommandExecutors, MoveActionCommand, serializesTo, clamp, last, - Circle, } from 'shared'; +import { DynamicPhysical } from '../physics/conatiners/dynamic-physical'; import { ImmutableBoundingBox } from '../physics/bounding-boxes/immutable-bounding-box'; import { CirclePhysical } from './circle-physical'; -import { Physical } from '../physics/physical'; + import { PhysicalContainer } from '../physics/containers/physical-container'; import { Spring } from './spring'; @serializesTo(CharacterBase) -export class CharacterPhysical extends CharacterBase implements Physical { +export class CharacterPhysical extends CharacterBase implements DynamicPhysical { public readonly canCollide = true; - public readonly isInverted = false; public readonly canMove = true; private jumpEnergyLeft = settings.defaultJumpEnergy; @@ -32,17 +29,19 @@ export class CharacterPhysical extends CharacterBase implements Physical { private movementActions: Array = []; private lastMovementAction: MoveActionCommand = new MoveActionCommand(vec2.create()); - protected commandExecutors: CommandExecutors = { - [StepCommand.type]: this.step.bind(this), - [MoveActionCommand.type]: (c: MoveActionCommand) => this.movementActions.push(c), - }; + public handleMovementAction(c: MoveActionCommand) { + this.movementActions.push(c); + } private static readonly headOffset = vec2.fromValues(0, 40); private static readonly leftFootOffset = vec2.fromValues(-20, -35); private static readonly rightFootOffset = vec2.fromValues(20, -35); - constructor(private readonly container: PhysicalContainer) { - super(id()); + constructor( + public readonly colorIndex: number, + private readonly container: PhysicalContainer, + ) { + super(id(), colorIndex); this.head = new CirclePhysical( vec2.clone(CharacterPhysical.headOffset), 50, @@ -76,7 +75,7 @@ export class CharacterPhysical extends CharacterBase implements Physical { return this._boundingBox; } - public get gameObject(): CharacterPhysical { + public get gameObject(): this { return this; } @@ -84,6 +83,10 @@ export class CharacterPhysical extends CharacterBase implements Physical { return this.head.center; } + public get velocity(): vec2 { + return this.head.velocity; + } + public distance(target: vec2): number { return ( Math.min( @@ -113,11 +116,11 @@ export class CharacterPhysical extends CharacterBase implements Physical { return direction; } - public step(c: StepCommand) { - const deltaTime = c.deltaTimeInMiliseconds / 1000; - + public step(deltaTimeInMiliseconds: number) { + const deltaTime = deltaTimeInMiliseconds / 1000; const direction = this.sumAndResetMovementActions(); - const isAirborne = this.leftFoot.isAirborne && this.rightFoot.isAirborne; + const feetAirborne = this.leftFoot.isAirborne && this.rightFoot.isAirborne; + const isAirborne = feetAirborne && this.head.isAirborne; this.jumpEnergyLeft += isAirborne ? -deltaTime : deltaTime; this.jumpEnergyLeft = clamp(this.jumpEnergyLeft, 0, settings.defaultJumpEnergy); @@ -129,52 +132,80 @@ export class CharacterPhysical extends CharacterBase implements Physical { vec2.fromValues(xMax, yMax), ); - const sumBody = vec2.add(vec2.create(), this.head.center, this.leftFoot.center); - vec2.add(sumBody, sumBody, this.rightFoot.center); - vec2.scale(sumBody, sumBody, 1 / 3); - - const headPosition = vec2.add(vec2.create(), sumBody, CharacterPhysical.headOffset); - - Spring.step(new Circle(headPosition, 0), this.head, 0, 30, deltaTime); - - const footDistance = vec2.distance( - CharacterPhysical.headOffset, - CharacterPhysical.leftFootOffset, - ); - - Spring.step( - new Circle(this.head.center, this.head.radius), - this.leftFoot, - footDistance, - 25, - deltaTime, - ); - Spring.step( - new Circle(this.head.center, this.head.radius), - this.rightFoot, - footDistance, - 25, - deltaTime, - ); Spring.step( this.leftFoot, this.rightFoot, vec2.distance(CharacterPhysical.leftFootOffset, CharacterPhysical.rightFootOffset), - 100, + 300, deltaTime, ); - this.head.applyForce(movementForce, deltaTime); - this.leftFoot.applyForce(movementForce, deltaTime); - this.rightFoot.applyForce(movementForce, deltaTime); + this.applyForce(this.head, movementForce, deltaTime); + this.applyForce(this.leftFoot, movementForce, deltaTime); + this.applyForce(this.rightFoot, movementForce, deltaTime); - this.head.applyForce(settings.gravitationalForce, deltaTime); - this.leftFoot.applyForce(settings.gravitationalForce, deltaTime); - this.rightFoot.applyForce(settings.gravitationalForce, deltaTime); + if (feetAirborne) { + this.applyForce(this.head, settings.gravitationalForce, deltaTime); + } + this.applyForce(this.leftFoot, settings.gravitationalForce, deltaTime); + this.applyForce(this.rightFoot, settings.gravitationalForce, deltaTime); - this.head.step(deltaTime); - this.leftFoot.step(deltaTime); - this.rightFoot.step(deltaTime); + this.head.step2(deltaTime); + this.leftFoot.step2(deltaTime); + this.rightFoot.step2(deltaTime); + + let sumBody = vec2.add(vec2.create(), this.head.center, this.leftFoot.center); + vec2.add(sumBody, sumBody, this.rightFoot.center); + vec2.scale(sumBody, sumBody, 1 / 3); + + const headPosition = vec2.add(vec2.create(), sumBody, CharacterPhysical.headOffset); + const headDelta = vec2.subtract(headPosition, headPosition, this.head.center); + vec2.scale(headDelta, headDelta, 0.5); + this.head.tryMove(headDelta); + + sumBody = vec2.add(vec2.create(), this.head.center, this.leftFoot.center); + vec2.add(sumBody, sumBody, this.rightFoot.center); + vec2.scale(sumBody, sumBody, 1 / 3); + + const leftFootPosition = vec2.add( + vec2.create(), + sumBody, + CharacterPhysical.leftFootOffset, + ); + const leftFootDelta = vec2.subtract( + leftFootPosition, + leftFootPosition, + this.leftFoot.center, + ); + vec2.scale(leftFootDelta, leftFootDelta, 1); + this.leftFoot.tryMove(leftFootDelta); + + const rightFootPosition = vec2.add( + vec2.create(), + sumBody, + CharacterPhysical.rightFootOffset, + ); + const rightFootDelta = vec2.subtract( + rightFootPosition, + rightFootPosition, + this.rightFoot.center, + ); + vec2.scale(rightFootDelta, rightFootDelta, 1); + this.rightFoot.tryMove(rightFootDelta); + } + + public applyForce(circle: CirclePhysical, force: vec2, timeInSeconds: number) { + vec2.add( + circle.velocity, + circle.velocity, + vec2.scale(vec2.create(), force, timeInSeconds), + ); + + vec2.set( + circle.velocity, + clamp(circle.velocity.x, -settings.maxVelocityX, settings.maxVelocityX), + clamp(circle.velocity.y, -settings.maxVelocityY, settings.maxVelocityY), + ); } public destroy() { diff --git a/backend/src/objects/circle-physical.ts b/backend/src/objects/circle-physical.ts index a4872ad..d858630 100644 --- a/backend/src/objects/circle-physical.ts +++ b/backend/src/objects/circle-physical.ts @@ -1,20 +1,20 @@ import { vec2 } from 'gl-matrix'; -import { Circle, clamp, GameObject, serializesTo, settings } from 'shared'; +import { Circle, GameObject, serializesTo, settings } from 'shared'; import { Physical } from '../physics/physical'; import { BoundingBox } from '../physics/bounding-boxes/bounding-box'; import { BoundingBoxBase } from '../physics/bounding-boxes/bounding-box-base'; import { moveCircle } from '../physics/move-circle'; import { PhysicalContainer } from '../physics/containers/physical-container'; +import { DynamicPhysical } from '../physics/conatiners/dynamic-physical'; @serializesTo(Circle) -export class CirclePhysical implements Circle, Physical { - readonly isInverted = false; +export class CirclePhysical implements Circle, DynamicPhysical { readonly canCollide = true; readonly canMove = true; private _isAirborne = true; - private velocity = vec2.create(); + public velocity = vec2.create(); public get isAirborne(): boolean { return this._isAirborne; @@ -27,6 +27,7 @@ export class CirclePhysical implements Circle, Physical { private _radius: number, public owner: GameObject, private readonly container: PhysicalContainer, + private restitution = 0, ) { this._boundingBox = new BoundingBox(); this.recalculateBoundingBox(); @@ -74,19 +75,6 @@ export class CirclePhysical implements Circle, Physical { return other.distance(this.center) < -this.radius; } - public getPerimeterPoints(count: number): Array { - const result: Array = []; - for (let i = 0; i < count; i++) { - result.push( - vec2.fromValues( - Math.cos((2 * Math.PI * i) / count) * this.radius + this.center.x, - Math.sin((2 * Math.PI * i) / count) * this.radius + this.center.y, - ), - ); - } - return result; - } - private recalculateBoundingBox() { this._boundingBox.xMin = this.center.x - this._radius; this._boundingBox.xMax = this.center.x + this._radius; @@ -100,48 +88,75 @@ export class CirclePhysical implements Circle, Physical { this.velocity, vec2.scale(vec2.create(), force, timeInSeconds), ); - - vec2.set( - this.velocity, - clamp(this.velocity.x, -settings.maxVelocityX, settings.maxVelocityX), - clamp(this.velocity.y, -settings.maxVelocityY, settings.maxVelocityY), - ); } - public resetVelocity() { - this.velocity = vec2.create(); - } + public step(deltaTime: number) {} - public step(deltaTimeInSeconds: number): boolean { + public step2(deltaTimeInSeconds: number): boolean { vec2.scale( this.velocity, this.velocity, Math.pow(settings.velocityAttenuation, deltaTimeInSeconds), ); - const distance = vec2.scale(vec2.create(), this.velocity, deltaTimeInSeconds); + const delta = vec2.scale(vec2.create(), this.velocity, deltaTimeInSeconds); - const distanceLength = vec2.length(distance); - const stepCount = Math.ceil(distanceLength / settings.physicsMaxStep); - vec2.scale(distance, distance, 1 / stepCount); + const stepCount = Math.ceil(vec2.length(delta) / settings.physicsMaxStep); + vec2.scale(delta, delta, 1 / stepCount); let wasHit = false; for (let i = 0; i < stepCount; i++) { - const { tangent, hitSurface } = moveCircle( - this, - vec2.clone(distance), - this.container.findIntersecting(this.boundingBox), + const distance = vec2.scale( + vec2.create(), + this.velocity, + deltaTimeInSeconds / stepCount, ); + this.radius += vec2.length(distance); + const intersecting = this.container.findIntersecting(this.boundingBox); + this.radius -= vec2.length(distance); + + const { normal, hitSurface } = moveCircle(this, vec2.clone(distance), intersecting); if (hitSurface) { - vec2.scale(this.velocity, tangent!, vec2.dot(tangent!, this.velocity)); - if ( - vec2.length(this.velocity) < - settings.frictionMinVelocity * deltaTimeInSeconds - ) { - this.velocity = vec2.create(); - } + vec2.subtract( + this.velocity, + this.velocity, + vec2.scale( + normal!, + normal!, + (1 + this.restitution) * vec2.dot(normal!, this.velocity), + ), + ); + + wasHit = true; + } + } + + this._isAirborne = !wasHit; + return wasHit; + } + + public tryMove(delta: vec2) { + const stepCount = Math.ceil(vec2.length(delta) / settings.physicsMaxStep); + vec2.scale(delta, delta, 1 / stepCount); + + let wasHit = false; + + for (let i = 0; i < stepCount; i++) { + this.radius += vec2.length(delta); + const intersecting = this.container.findIntersecting(this.boundingBox); + this.radius -= vec2.length(delta); + + const { normal, hitSurface } = moveCircle(this, vec2.clone(delta), intersecting); + + if (hitSurface) { + vec2.subtract( + delta, + delta, + vec2.scale(normal!, normal!, vec2.dot(normal!, delta)), + ); + wasHit = true; } } diff --git a/backend/src/objects/lamp-physical.ts b/backend/src/objects/lamp-physical.ts index f93e9d9..2ca2dca 100644 --- a/backend/src/objects/lamp-physical.ts +++ b/backend/src/objects/lamp-physical.ts @@ -2,13 +2,11 @@ import { vec2, vec3 } from 'gl-matrix'; import { LampBase, settings, id, serializesTo } from 'shared'; import { ImmutableBoundingBox } from '../physics/bounding-boxes/immutable-bounding-box'; - -import { Physical } from '../physics/physical'; +import { StaticPhysical } from '../physics/containers/static-physical'; @serializesTo(LampBase) -export class LampPhysical extends LampBase implements Physical { +export class LampPhysical extends LampBase implements StaticPhysical { public readonly canCollide = false; - public readonly isInverted = false; public readonly canMove = false; constructor(center: vec2, color: vec3, lightness: number) { @@ -30,12 +28,11 @@ export class LampPhysical extends LampBase implements Physical { return this._boundingBox; } - public get gameObject(): LampPhysical { + public get gameObject(): this { return this; } - // todo - public distance(_: vec2): number { - return 0; + public distance(target: vec2): number { + return vec2.distance(this.center, target); } } diff --git a/backend/src/objects/projectile-physical.ts b/backend/src/objects/projectile-physical.ts new file mode 100644 index 0000000..a2f68a2 --- /dev/null +++ b/backend/src/objects/projectile-physical.ts @@ -0,0 +1,67 @@ +import { vec2 } from 'gl-matrix'; +import { + id, + settings, + serializesTo, + ProjectileBase, + GameObject, + rotate90Deg, +} from 'shared'; +import { ImmutableBoundingBox } from '../physics/bounding-boxes/immutable-bounding-box'; +import { CirclePhysical } from './circle-physical'; +import { DynamicPhysical } from '../physics/conatiners/dynamic-physical'; +import { PhysicalContainer } from '../physics/containers/physical-container'; + +@serializesTo(ProjectileBase) +export class ProjectilePhysical extends ProjectileBase implements DynamicPhysical { + public readonly canCollide = true; + public readonly canMove = true; + + public object: CirclePhysical; + + constructor( + center: vec2, + radius: number, + private velocity: vec2, + readonly container: PhysicalContainer, + ) { + super(id(), center, radius); + this.object = new CirclePhysical(center, radius, this, container, 0.9); + } + + private _boundingBox?: ImmutableBoundingBox; + + public get boundingBox(): ImmutableBoundingBox { + if (!this._boundingBox) { + this._boundingBox = (this.object as CirclePhysical).boundingBox; + } + + return this._boundingBox; + } + + public get gameObject(): this { + return this; + } + + public distance(target: vec2): number { + return this.object.distance(target); + } + + public onCollision(normal: vec2, other: GameObject) { + const tangent = rotate90Deg(normal); + vec2.scale(this.velocity, tangent, vec2.dot(tangent, this.velocity)); + } + + public step(deltaTimeInMiliseconds: number) { + const deltaTime = deltaTimeInMiliseconds / 1000; + + vec2.add( + this.velocity, + this.velocity, + vec2.scale(vec2.create(), settings.gravitationalForce, deltaTime), + ); + + this.object.velocity = this.velocity; + this.object.step2(deltaTime); + } +} diff --git a/backend/src/objects/stone-physical.ts b/backend/src/objects/stone-physical.ts new file mode 100644 index 0000000..743c3ac --- /dev/null +++ b/backend/src/objects/stone-physical.ts @@ -0,0 +1,78 @@ +import { vec2 } from 'gl-matrix'; +import { clamp01, id, serializesTo, StoneBase } from 'shared'; + +import { ImmutableBoundingBox } from '../physics/bounding-boxes/immutable-bounding-box'; +import { StaticPhysical } from '../physics/containers/static-physical'; + +@serializesTo(StoneBase) +export class StonePhysical extends StoneBase implements StaticPhysical { + public readonly canCollide = true; + public readonly canMove = false; + + private _boundingBox?: ImmutableBoundingBox; + + constructor(vertices: Array) { + super(id(), vertices); + } + + public distance(target: vec2): number { + const startEnd = this.vertices[0]; + let vb = startEnd; + + let d = vec2.squaredDistance(target, vb); + let sign = 1; + + for (let i = 1; i <= this.vertices.length; i++) { + const va = vb; + vb = i === this.vertices.length ? startEnd : this.vertices[i]; + const targetFromDelta = vec2.subtract(vec2.create(), target, va); + const toFromDelta = vec2.subtract(vec2.create(), vb, va); + const h = clamp01( + vec2.dot(targetFromDelta, toFromDelta) / vec2.squaredLength(toFromDelta), + ); + + const ds = vec2.fromValues( + vec2.dist(targetFromDelta, vec2.scale(vec2.create(), toFromDelta, h)), + toFromDelta.x * targetFromDelta.y - toFromDelta.y * targetFromDelta.x, + ); + + if ( + (target.y >= va.y && target.y < vb.y && ds.y > 0) || + (target.y < va.y && target.y >= vb.y && ds.y <= 0) + ) { + sign *= -1; + } + + d = Math.min(d, ds.x); + } + + return sign * d; + } + + public get boundingBox(): ImmutableBoundingBox { + if (!this._boundingBox) { + const { xMin, xMax, yMin, yMax } = this.vertices.reduce( + (extremities, vertex) => ({ + xMin: Math.min(extremities.xMin, vertex.x), + xMax: Math.max(extremities.xMax, vertex.x), + yMin: Math.min(extremities.yMin, vertex.y), + yMax: Math.max(extremities.yMax, vertex.y), + }), + { + xMin: Infinity, + xMax: -Infinity, + yMin: Infinity, + yMax: -Infinity, + }, + ); + + this._boundingBox = new ImmutableBoundingBox(xMin, xMax, yMin, yMax); + } + + return this._boundingBox; + } + + public get gameObject(): this { + return this; + } +} diff --git a/backend/src/objects/tunnel-physical.ts b/backend/src/objects/tunnel-physical.ts deleted file mode 100644 index 54042f7..0000000 --- a/backend/src/objects/tunnel-physical.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { vec2 } from 'gl-matrix'; -import { clamp01, mix, TunnelBase, id, serializesTo } from 'shared'; - -import { ImmutableBoundingBox } from '../physics/bounding-boxes/immutable-bounding-box'; -import { StaticPhysical } from '../physics/containers/static-physical-object'; - -@serializesTo(TunnelBase) -export class TunnelPhysical extends TunnelBase implements StaticPhysical { - public readonly canCollide = true; - public readonly isInverted = true; - public readonly canMove = false; - - private _boundingBox?: ImmutableBoundingBox; - - constructor(from: vec2, to: vec2, fromRadius: number, toRadius: number) { - super(id(), from, to, fromRadius, toRadius); - } - - public distance(target: vec2): number { - const toFromDelta = vec2.subtract(vec2.create(), this.to, this.from); - const targetFromDelta = vec2.subtract(vec2.create(), target, this.from); - - const h = clamp01( - vec2.dot(targetFromDelta, toFromDelta) / vec2.dot(toFromDelta, toFromDelta), - ); - - return ( - vec2.distance(targetFromDelta, vec2.scale(vec2.create(), toFromDelta, h)) - - mix(this.fromRadius, this.toRadius, h) - ); - } - - public get boundingBox(): ImmutableBoundingBox { - if (!this._boundingBox) { - const xMin = Math.min(this.from.x - this.fromRadius, this.to.x - this.toRadius); - const yMin = Math.min(this.from.y - this.fromRadius, this.to.y - this.toRadius); - const xMax = Math.max(this.from.x + this.fromRadius, this.to.x + this.toRadius); - const yMax = Math.max(this.from.y + this.fromRadius, this.to.y + this.toRadius); - this._boundingBox = new ImmutableBoundingBox(xMin, xMax, yMin, yMax); - } - - return this._boundingBox; - } - - public get gameObject(): TunnelPhysical { - return this; - } -} diff --git a/backend/src/physics/bounding-boxes/bounding-box-base.ts b/backend/src/physics/bounding-boxes/bounding-box-base.ts index 8bb1c1b..753bbb0 100644 --- a/backend/src/physics/bounding-boxes/bounding-box-base.ts +++ b/backend/src/physics/bounding-boxes/bounding-box-base.ts @@ -8,6 +8,8 @@ export class BoundingBoxBase { protected _yMax: number = 0, ) {} + [key: number]: number | undefined; + public get 0(): number { return this._xMin; } diff --git a/backend/src/physics/containers/bounding-box-list.ts b/backend/src/physics/containers/bounding-box-list.ts index df48c07..1a9f963 100644 --- a/backend/src/physics/containers/bounding-box-list.ts +++ b/backend/src/physics/containers/bounding-box-list.ts @@ -1,21 +1,25 @@ -import { Physical } from '../physical'; +import { DynamicPhysical } from '../dynamic-physical'; import { BoundingBoxBase } from '../bounding-boxes/bounding-box-base'; export class BoundingBoxList { - constructor(private objects: Array = []) {} + constructor(private objects: Array = []) {} - public insert(object: Physical) { + public insert(object: DynamicPhysical) { this.objects.push(object); } - public remove(object: Physical) { + public remove(object: DynamicPhysical) { this.objects.splice( this.objects.findIndex((i) => i === object), 1, ); } - public findIntersecting(boundingBox: BoundingBoxBase): Array { + public forEach(func: (object: DynamicPhysical) => unknown) { + this.objects.forEach(func); + } + + public findIntersecting(boundingBox: BoundingBoxBase): Array { return this.objects.filter((b) => b.boundingBox.intersects(boundingBox)); } } diff --git a/backend/src/physics/containers/bounding-box-tree.ts b/backend/src/physics/containers/bounding-box-tree.ts index 3821033..00b1371 100644 --- a/backend/src/physics/containers/bounding-box-tree.ts +++ b/backend/src/physics/containers/bounding-box-tree.ts @@ -1,15 +1,15 @@ import { BoundingBoxBase } from '../bounding-boxes/bounding-box-base'; -import { StaticPhysical } from './static-physical-object'; +import { StaticPhysical } from './static-physical'; // source: https://github.com/ubilabs/kd-tree-javascript/blob/master/kdTree.js class Node { - public left?: Node = null; - public right?: Node = null; - constructor(public object: StaticPhysical, public parent: Node) {} + public left: Node | null = null; + public right: Node | null = null; + constructor(public object: StaticPhysical, public parent: Node | null) {} } export class BoundingBoxTree { - root?: Node; + root?: Node | null; constructor(objects: Array = []) { this.build(objects); @@ -22,8 +22,8 @@ export class BoundingBoxTree { private buildRecursive( objects: Array, depth: number, - parent: Node, - ): Node { + parent: Node | null, + ): Node | null { if (objects.length === 0) { return null; } @@ -34,7 +34,7 @@ export class BoundingBoxTree { const dimension = depth % 4; - objects.sort((a, b) => a.boundingBox[dimension] - b.boundingBox[dimension]); + objects.sort((a, b) => a.boundingBox[dimension]! - b.boundingBox[dimension]!); const median = Math.floor(objects.length / 2); @@ -54,7 +54,9 @@ export class BoundingBoxTree { const node = new Node(object, insertPosition); const dimension = depth % 4; - if (object.boundingBox[dimension] < insertPosition.object.boundingBox[dimension]) { + if ( + object.boundingBox[dimension]! < insertPosition.object.boundingBox[dimension]! + ) { insertPosition.left = node; } else { insertPosition.right = node; @@ -63,14 +65,14 @@ export class BoundingBoxTree { } public findIntersecting(boundingBox: BoundingBoxBase): Array { - const maybeResults = this.findMaybeIntersecting(boundingBox, this.root, 0); + const maybeResults = this.findMaybeIntersecting(boundingBox, this.root!, 0); const results = maybeResults.filter((b) => b.boundingBox.intersects(boundingBox)); return results; } private findMaybeIntersecting( boundingBox: BoundingBoxBase, - node: Node, + node: Node | null, depth: number, ): Array { if (node === null) { @@ -102,17 +104,17 @@ export class BoundingBoxTree { private findParent( object: StaticPhysical, - node: Node, + node: Node | null | undefined, depth: number, - parent: Node, - ): [Node, number] { - if (node === null) { + parent: Node | null, + ): [Node | null, number] { + if (!node) { return [parent, depth - 1]; } const dimension = depth % 4; - if (object.boundingBox[dimension] < node.object.boundingBox[dimension]) { + if (object.boundingBox[dimension]! < node.object.boundingBox[dimension]!) { return this.findParent(object, node.left, depth + 1, node); } diff --git a/backend/src/physics/containers/dynamic-physical.ts b/backend/src/physics/containers/dynamic-physical.ts new file mode 100644 index 0000000..326b56e --- /dev/null +++ b/backend/src/physics/containers/dynamic-physical.ts @@ -0,0 +1,5 @@ +import { Physical } from '../physical'; + +export interface DynamicPhysical extends Physical { + step(deltaTimeInMilliseconds: number): void; +} diff --git a/backend/src/physics/containers/physical-container.ts b/backend/src/physics/containers/physical-container.ts index ab34fda..4d1e6f4 100644 --- a/backend/src/physics/containers/physical-container.ts +++ b/backend/src/physics/containers/physical-container.ts @@ -1,11 +1,11 @@ -import { GameObject, Id } from 'shared'; import { BoundingBoxBase } from '../bounding-boxes/bounding-box-base'; import { BoundingBoxList } from './bounding-box-list'; import { BoundingBoxTree } from './bounding-box-tree'; -import { Command } from 'shared'; + import { Physical } from '../physical'; -import { StaticPhysical } from './static-physical-object'; +import { StaticPhysical } from './static-physical'; +import { DynamicPhysical } from './dynamic-physical'; export class PhysicalContainer { private isTreeInitialized = false; @@ -13,27 +13,12 @@ export class PhysicalContainer { private staticBoundingBoxes = new BoundingBoxTree(); private dynamicBoundingBoxes = new BoundingBoxList(); - protected objects: Map = new Map(); - private objectsGroupedByAbilities: Map> = new Map(); - public initialize() { this.staticBoundingBoxes.build(this.staticBoundingBoxesWaitList); this.isTreeInitialized = true; } - public addObject(object: Physical) { - this.objects.set(object.gameObject.id, object.gameObject); - - for (const command of this.objectsGroupedByAbilities.keys()) { - if (object.gameObject.reactsToCommand(command)) { - this.objectsGroupedByAbilities.get(command).push(object.gameObject); - } - } - - this.addPhysical(object); - } - - public addPhysical(physical: Physical) { + public addObject(physical: Physical) { if (physical.canMove) { this.dynamicBoundingBoxes.insert(physical); } else { @@ -45,39 +30,12 @@ export class PhysicalContainer { } } - public removeObject(object: Physical) { - this.objects.delete(object.gameObject.id); - - for (const command of this.objectsGroupedByAbilities.keys()) { - if (object.gameObject.reactsToCommand(command)) { - const array = this.objectsGroupedByAbilities.get(command); - array.splice( - array.findIndex((i) => i.id == object.gameObject.id), - 1, - ); - } - } - + public removeObject(object: DynamicPhysical) { this.dynamicBoundingBoxes.remove(object); } - public sendCommand(e: Command) { - if (!this.objectsGroupedByAbilities.has(e.type)) { - this.createGroupForCommand(e.type); - } - - this.objectsGroupedByAbilities.get(e.type).forEach((o, _) => o.sendCommand(e)); - } - - private createGroupForCommand(commandType: string) { - const objectsReactingToCommand = []; - this.objects.forEach((o, _) => { - if (o.reactsToCommand(commandType)) { - objectsReactingToCommand.push(o); - } - }); - - this.objectsGroupedByAbilities.set(commandType, objectsReactingToCommand); + public stepObjects(deltaTimeInMilliseconds: number) { + this.dynamicBoundingBoxes.forEach((o) => o.step(deltaTimeInMilliseconds)); } public findIntersecting(box: BoundingBoxBase): Array { diff --git a/backend/src/physics/containers/static-physical-object.ts b/backend/src/physics/containers/static-physical.ts similarity index 100% rename from backend/src/physics/containers/static-physical-object.ts rename to backend/src/physics/containers/static-physical.ts diff --git a/backend/src/physics/move-circle.ts b/backend/src/physics/move-circle.ts index 1c30524..4ff6e8b 100644 --- a/backend/src/physics/move-circle.ts +++ b/backend/src/physics/move-circle.ts @@ -1,5 +1,5 @@ import { vec2 } from 'gl-matrix'; -import { rotate90Deg, settings } from 'shared'; +import { Circle, rotate90Deg } from 'shared'; import { CirclePhysical } from '../objects/circle-physical'; import { Physical } from './physical'; @@ -13,71 +13,48 @@ export const moveCircle = ( normal?: vec2; tangent?: vec2; } => { - circle.center = vec2.add(circle.center, circle.center, delta); + const nextCircle = new Circle(vec2.clone(circle.center), circle.radius); + vec2.add(nextCircle.center, nextCircle.center, delta); - const intersecting = possibleIntersectors.filter( - (b) => - b.gameObject !== circle.gameObject && circle.areIntersecting(b) && b.canCollide, + possibleIntersectors = possibleIntersectors.filter( + (b) => b.gameObject !== circle.gameObject && b.canCollide, ); - if (intersecting.length === 0) { + const getSdfAtPoint = (point: vec2): number => { + return possibleIntersectors + .filter((i) => i.canCollide) + .reduce((min, i) => (min = Math.min(min, i.distance(point))), 1000); + }; + + const sdfAtCenter = getSdfAtPoint(nextCircle.center); + + if (sdfAtCenter > nextCircle.radius) { + circle.center = vec2.add(circle.center, circle.center, delta); + return { realDelta: delta, hitSurface: false, }; } - const points = circle.getPerimeterPoints(settings.hitDetectionCirclePointCount); + const dx = + getSdfAtPoint(vec2.add(vec2.create(), nextCircle.center, vec2.fromValues(1, 0))) - + sdfAtCenter; + const dy = + getSdfAtPoint(vec2.add(vec2.create(), nextCircle.center, vec2.fromValues(0, 1))) - + sdfAtCenter; + const normal = vec2.fromValues(dx, dy); - const distancesOfPoints = points - .map((point) => ({ - point, - closest: intersecting - .map((i) => ({ - inverted: i.isInverted, - distance: i.distance(point), - })) - .sort((a, b) => a.distance - b.distance)[0], - })) - .filter((i) => i.closest); + vec2.normalize(normal, normal); - const distancesOfIntersectingPoints = distancesOfPoints.filter( - (d) => - (d.closest.distance > 0 && d.closest.inverted) || - (d.closest.distance < 0 && !d.closest.inverted), - ); - - if (distancesOfIntersectingPoints.length === 0) { - return { - realDelta: delta, - hitSurface: false, - }; - } - - const deltas = distancesOfIntersectingPoints.map((pointDistance) => { - vec2.subtract(pointDistance.point, circle.center, pointDistance.point); - vec2.normalize(pointDistance.point, pointDistance.point); - vec2.scale( - pointDistance.point, - pointDistance.point, - (pointDistance.closest.inverted ? 1 : -1) * pointDistance.closest.distance, - ); - return pointDistance.point; - }); - - const approxNormal = deltas.reduce( - (sum, current) => vec2.add(sum, sum, current), - vec2.create(), - ); - vec2.scale(approxNormal, approxNormal, 1 / deltas.length); - - circle.center = vec2.add(circle.center, circle.center, approxNormal); - - vec2.normalize(approxNormal, approxNormal); + const rotatedNormal = rotate90Deg(normal); return { realDelta: delta, hitSurface: true, - normal: approxNormal, - tangent: rotate90Deg(approxNormal), + normal, + tangent: + vec2.dot(rotatedNormal, delta) < 0 + ? vec2.scale(rotatedNormal, rotatedNormal, -1) + : rotatedNormal, }; }; diff --git a/backend/src/physics/physical.ts b/backend/src/physics/physical.ts index 0948fd3..962d699 100644 --- a/backend/src/physics/physical.ts +++ b/backend/src/physics/physical.ts @@ -3,7 +3,6 @@ import { GameObject } from 'shared'; import { BoundingBoxBase } from './bounding-boxes/bounding-box-base'; export interface Physical { - readonly isInverted: boolean; readonly canCollide: boolean; readonly canMove: boolean; readonly boundingBox: BoundingBoxBase; diff --git a/backend/src/players/player-color-service.ts b/backend/src/players/player-color-service.ts new file mode 100644 index 0000000..e23d49d --- /dev/null +++ b/backend/src/players/player-color-service.ts @@ -0,0 +1,15 @@ +import { settings } from 'shared'; + +const colorUsage: Array = new Array(settings.playerColors.length).fill(false); + +export const requestColor = (): number => { + const index = colorUsage.findIndex((a) => !a); + if (index >= 0) { + colorUsage[index] = true; + } + return index + settings.playerColorIndexOffset; +}; + +export const freeColor = (index: number) => { + colorUsage[index - settings.playerColorIndexOffset] = false; +}; diff --git a/backend/src/players/player.ts b/backend/src/players/player.ts index 757a004..6a86504 100644 --- a/backend/src/players/player.ts +++ b/backend/src/players/player.ts @@ -1,3 +1,4 @@ +import { vec2 } from 'gl-matrix'; import { CommandExecutors, CommandReceiver, @@ -8,16 +9,19 @@ import { serialize, TransportEvents, UpdateObjectsCommand, - StepCommand, SetAspectRatioActionCommand, calculateViewArea, + SecondaryActionCommand, + settings, } from 'shared'; import { getTimeInMilliseconds } from '../helper/get-time-in-milliseconds'; import { CharacterPhysical } from '../objects/character-physical'; +import { ProjectilePhysical } from '../objects/projectile-physical'; import { BoundingBox } from '../physics/bounding-boxes/bounding-box'; import { PhysicalContainer } from '../physics/containers/physical-container'; import { Physical } from '../physics/physical'; +import { requestColor, freeColor } from './player-color-service'; export class Player extends CommandReceiver { private character: CharacterPhysical; @@ -42,10 +46,24 @@ export class Player extends CommandReceiver { } protected commandExecutors: CommandExecutors = { - [StepCommand.type]: this.sendObjects.bind(this), [SetAspectRatioActionCommand.type]: (v: SetAspectRatioActionCommand) => (this.aspectRatio = v.aspectRatio), - [MoveActionCommand.type]: (c: MoveActionCommand) => this.character.sendCommand(c), + [MoveActionCommand.type]: (c: MoveActionCommand) => + this.character.handleMovementAction(c), + [SecondaryActionCommand.type]: (c: SecondaryActionCommand) => { + const start = vec2.clone(this.character.center); + const direction = vec2.subtract(vec2.create(), c.position, start); + vec2.normalize(direction, direction); + vec2.add( + start, + start, + vec2.scale(vec2.create(), direction, settings.projectileStartOffset), + ); + const velocity = vec2.scale(direction, direction, settings.projectileSpeed); + vec2.add(velocity, velocity, this.character.velocity); + const projectile = new ProjectilePhysical(start, 20, velocity, this.objects); + this.objects.addObject(projectile); + }, }; constructor( @@ -53,7 +71,8 @@ export class Player extends CommandReceiver { private readonly socket: SocketIO.Socket, ) { super(); - this.character = new CharacterPhysical(objects); + const colorIndex = requestColor(); + this.character = new CharacterPhysical(colorIndex, objects); this.objectsPreviouslyInViewArea.push(this.character); this.objectsInViewArea.push(this.character); @@ -70,7 +89,6 @@ export class Player extends CommandReceiver { ); this.measureLatency(); - this.sendObjects(); } @@ -89,6 +107,7 @@ export class Player extends CommandReceiver { const noLongerIntersecting = this.objectsPreviouslyInViewArea.filter( (o) => !this.objectsInViewArea.includes(o), ); + this.objectsPreviouslyInViewArea = this.objectsInViewArea; if (noLongerIntersecting.length > 0) { @@ -113,7 +132,7 @@ export class Player extends CommandReceiver { ); } - this.socket.emit( + this.socket.volatile.emit( TransportEvents.ServerToPlayer, serialize( new UpdateObjectsCommand([ @@ -127,6 +146,7 @@ export class Player extends CommandReceiver { public destroy() { this.isActive = false; + freeColor(this.character.colorIndex); this.character.destroy(); this.objects.removeObject(this.character); } diff --git a/frontend/src/index.html b/frontend/src/index.html index c63c46c..d488574 100644 --- a/frontend/src/index.html +++ b/frontend/src/index.html @@ -1,21 +1,24 @@ + + + + - - - - + + - - + decla.red + - decla.red - - - - -
- - - - \ No newline at end of file + + + +
+ + + diff --git a/frontend/src/index.ts b/frontend/src/index.ts index 27e9fd5..315221d 100644 --- a/frontend/src/index.ts +++ b/frontend/src/index.ts @@ -1,16 +1,19 @@ import { glMatrix } from 'gl-matrix'; -import { CharacterBase, LampBase, overrideDeserialization, TunnelBase } from 'shared'; +import { CharacterBase, LampBase, overrideDeserialization, StoneBase } from 'shared'; +import { ProjectileBase } from 'shared/src/objects/types/projectile-base'; import { Game } from './scripts/game'; import { CharacterView } from './scripts/objects/character-view'; import { LampView } from './scripts/objects/lamp-view'; -import { TunnelView } from './scripts/objects/tunnel-view'; +import { ProjectileView } from './scripts/objects/projectile-view'; +import { StoneView } from './scripts/objects/stone-view'; import './styles/main.scss'; glMatrix.setMatrixArrayType(Array); overrideDeserialization(CharacterBase, CharacterView); -overrideDeserialization(TunnelBase, TunnelView); +overrideDeserialization(StoneBase, StoneView); overrideDeserialization(LampBase, LampView); +overrideDeserialization(ProjectileBase, ProjectileView); const main = async () => { try { diff --git a/frontend/src/scripts/commands/generators/mouse-listener.ts b/frontend/src/scripts/commands/generators/mouse-listener.ts index ca0cdd7..b8cb30a 100644 --- a/frontend/src/scripts/commands/generators/mouse-listener.ts +++ b/frontend/src/scripts/commands/generators/mouse-listener.ts @@ -5,9 +5,10 @@ import { SecondaryActionCommand, TernaryActionCommand, } from 'shared'; +import { Game } from '../../game'; export class MouseListener extends CommandGenerator { - constructor(target: HTMLElement) { + constructor(target: HTMLElement, private readonly game: Game) { super(); target.addEventListener('mousemove', (event: MouseEvent) => { @@ -31,6 +32,8 @@ export class MouseListener extends CommandGenerator { } private positionFromEvent(event: MouseEvent): vec2 { - return vec2.fromValues(event.clientX, event.clientY); + return this.game.displayToWorldCoordinates( + vec2.fromValues(event.clientX, event.clientY), + ); } } diff --git a/frontend/src/scripts/commands/generators/touch-listener.ts b/frontend/src/scripts/commands/generators/touch-listener.ts index ce073bf..371cf6b 100644 --- a/frontend/src/scripts/commands/generators/touch-listener.ts +++ b/frontend/src/scripts/commands/generators/touch-listener.ts @@ -6,11 +6,12 @@ import { TernaryActionCommand, MoveActionCommand, } from 'shared'; +import { Game } from '../../game'; export class TouchListener extends CommandGenerator { private previousPosition = vec2.create(); - constructor(target: HTMLElement) { + constructor(target: HTMLElement, private readonly game: Game) { super(); target.addEventListener('touchstart', (event: TouchEvent) => { @@ -53,10 +54,12 @@ export class TouchListener extends CommandGenerator { const touches = Array.prototype.slice.call(event.touches); const center = touches.reduce( (center: vec2, touch: Touch) => - vec2.add(center, center, vec2.fromValues(-touch.clientX, touch.clientY)), + vec2.add(center, center, vec2.fromValues(-touch.clientX, -touch.clientY)), vec2.create(), ); - return vec2.scale(center, center, 1 / event.touches.length); + return this.game.displayToWorldCoordinates( + vec2.scale(center, center, 1 / event.touches.length), + ); } } diff --git a/frontend/src/scripts/game.ts b/frontend/src/scripts/game.ts index acfba8c..3f183ab 100644 --- a/frontend/src/scripts/game.ts +++ b/frontend/src/scripts/game.ts @@ -5,7 +5,6 @@ import { compile, FilteringOptions, Flashlight, - InvertedTunnel, Renderer, renderNoise, WrapOptions, @@ -13,25 +12,23 @@ import { import { broadcastCommands, deserialize, - prettyPrint, serialize, settings, - StepCommand, TransportEvents, + SetAspectRatioActionCommand, + rgb, } from 'shared'; -import { SetAspectRatioActionCommand } from 'shared/src/main'; import io from 'socket.io-client'; import { KeyboardListener } from './commands/generators/keyboard-listener'; import { MouseListener } from './commands/generators/mouse-listener'; import { TouchListener } from './commands/generators/touch-listener'; import { CommandReceiverSocket } from './commands/receivers/command-receiver-socket'; -import { RenderCommand } from './commands/types/render'; + import { Configuration } from './config/configuration'; import { DeltaTimeCalculator } from './helper/delta-time-calculator'; -import { rgb } from './helper/rgb'; - import { GameObjectContainer } from './objects/game-object-container'; import { BlobShape } from './shapes/blob-shape'; +import { Polygon } from './shapes/polygon'; export class Game { public readonly gameObjects = new GameObjectContainer(this); @@ -46,7 +43,7 @@ export class Game { private async setupCommunication(): Promise { await Configuration.initialize(); - this.socket = io(Configuration.servers[0], { + this.socket = io(Configuration.servers[1], { reconnectionDelayMax: 10000, transports: ['websocket'], }); @@ -69,22 +66,22 @@ export class Game { broadcastCommands( [ new KeyboardListener(document.body), - new MouseListener(this.canvas), - new TouchListener(this.canvas), + new MouseListener(this.canvas, this), + new TouchListener(this.canvas, this), ], [this.gameObjects, new CommandReceiverSocket(this.socket)], ); } private async setupRenderer(): Promise { - const noiseTexture = await renderNoise([512, 1], 50, 1 / 10); + const noiseTexture = await renderNoise([64, 1], 20, 1 / 10); this.renderer = await compile( this.canvas, [ { - ...InvertedTunnel.descriptor, - shaderCombinationSteps: [0, 2, 6, 16], + ...Polygon.descriptor, + shaderCombinationSteps: [0, 2, 6, 16, 32], }, { ...BlobShape.descriptor, @@ -92,7 +89,7 @@ export class Game { }, { ...Circle.descriptor, - shaderCombinationSteps: [0, 2, 16], + shaderCombinationSteps: [0, 2, 16, 32], }, { ...CircleLight.descriptor, @@ -111,16 +108,12 @@ export class Game { ); this.renderer.setRuntimeSettings({ - isWorldInverted: true, - ambientLight: rgb(0.35, 0.1, 0.45), + ambientLight: rgb(0.45, 0.4, 0.45), colorPalette: [ - rgb(0.4, 1, 0.6), - rgb(1, 1, 0), - rgb(0.3, 1, 1), - rgb(0.3, 1, 1), - rgb(0.3, 1, 1), - rgb(0.3, 1, 1), + rgb(1, 1, 1), + rgb(0.4, 0.4, 0.4), rgb(0.3, 1, 1), + ...settings.playerColors, ], enableHighDpiRendering: false, lightCutoffDistance: settings.lightCutoffDistance, @@ -155,11 +148,11 @@ export class Game { private gameLoop(time: DOMHighResTimeStamp) { const deltaTime = this.deltaTimeCalculator.getNextDeltaTimeInMilliseconds(time); - this.gameObjects.sendCommand(new StepCommand(deltaTime)); - this.gameObjects.sendCommand(new RenderCommand(this.renderer)); + this.gameObjects.stepObjects(deltaTime); + this.gameObjects.drawObjects(this.renderer); this.renderer.renderDrawables(); - this.overlay.innerText = prettyPrint(this.renderer.insights); + // this.overlay.innerText = prettyPrint(this.renderer.insights); requestAnimationFrame(this.gameLoop.bind(this)); } } diff --git a/frontend/src/scripts/objects/camera.ts b/frontend/src/scripts/objects/camera.ts index 46a1989..25f88fb 100644 --- a/frontend/src/scripts/objects/camera.ts +++ b/frontend/src/scripts/objects/camera.ts @@ -1,29 +1,38 @@ import { vec2 } from 'gl-matrix'; -import { calculateViewArea, CommandExecutors, GameObject } from 'shared'; -import { RenderCommand } from '../commands/types/render'; -import { Game } from '../game'; +import { Renderer } from 'sdf-2d'; +import { calculateViewArea, GameObject, mixRgb, settings } from 'shared'; -export class Camera extends GameObject { +import { Game } from '../game'; +import { ViewObject } from './view-object'; + +export class Camera extends GameObject implements ViewObject { public center: vec2 = vec2.create(); private aspectRatio?: number; - protected commandExecutors: CommandExecutors = { - [RenderCommand.type]: this.draw.bind(this), - }; - constructor(private game: Game) { super(null); } - private draw(c: RenderCommand) { - const canvasAspectRatio = c.renderer.canvasSize.x / c.renderer.canvasSize.y; + public step(deltaTimeInMilliseconds: number): void {} + + public draw(renderer: Renderer) { + const canvasAspectRatio = renderer.canvasSize.x / renderer.canvasSize.y; if (canvasAspectRatio !== this.aspectRatio) { this.aspectRatio = canvasAspectRatio; this.game.aspectRatioChanged(canvasAspectRatio); } const viewArea = calculateViewArea(this.center, canvasAspectRatio); - c.renderer.setViewArea(viewArea.topLeft, viewArea.size); + renderer.setViewArea(viewArea.topLeft, viewArea.size); + + renderer.setRuntimeSettings({ + backgroundColor: mixRgb( + settings.backgroundGradient[0], + settings.backgroundGradient[1], + (this.center.x - settings.worldLeftEdge) / + (Math.abs(settings.worldLeftEdge) + Math.abs(settings.worldRightEdge)), + ), + }); } } diff --git a/frontend/src/scripts/objects/character-view.ts b/frontend/src/scripts/objects/character-view.ts index 8cb63b6..8f7560e 100644 --- a/frontend/src/scripts/objects/character-view.ts +++ b/frontend/src/scripts/objects/character-view.ts @@ -1,19 +1,32 @@ import { vec2 } from 'gl-matrix'; -import { CharacterBase, CommandExecutors } from 'shared'; -import { RenderCommand } from '../commands/types/render'; +import { Renderer } from 'sdf-2d'; +import { CharacterBase, Circle, Id } from 'shared'; + import { BlobShape } from '../shapes/blob-shape'; +import { ViewObject } from './view-object'; -export class CharacterView extends CharacterBase { - private shape = new BlobShape(); +export class CharacterView extends CharacterBase implements ViewObject { + private shape: BlobShape; - protected commandExecutors: CommandExecutors = { - [RenderCommand.type]: (c: RenderCommand) => { - this.shape.setCircles([this.head, this.leftFoot, this.rightFoot]); - c.renderer.addDrawable(this.shape); - }, - }; + constructor( + id: Id, + colorIndex: number, + head?: Circle, + leftFoot?: Circle, + rightFoot?: Circle, + ) { + super(id, colorIndex, head, leftFoot, rightFoot); + this.shape = new BlobShape(colorIndex); + } public get position(): vec2 { - return this.head.center; + return this.head!.center; + } + + public step(deltaTimeInMilliseconds: number): void {} + + public draw(renderer: Renderer): void { + this.shape.setCircles([this.head!, this.leftFoot!, this.rightFoot!]); + renderer.addDrawable(this.shape); } } diff --git a/frontend/src/scripts/objects/game-object-container.ts b/frontend/src/scripts/objects/game-object-container.ts index 053295f..4fcfcbf 100644 --- a/frontend/src/scripts/objects/game-object-container.ts +++ b/frontend/src/scripts/objects/game-object-container.ts @@ -1,23 +1,22 @@ +import { Renderer } from 'sdf-2d'; import { - Command, CommandExecutors, CommandReceiver, CreateObjectsCommand, CreatePlayerCommand, DeleteObjectsCommand, - GameObject, Id, - StepCommand, UpdateObjectsCommand, } from 'shared'; import { Game } from '../game'; import { Camera } from './camera'; import { CharacterView } from './character-view'; +import { ViewObject } from './view-object'; export class GameObjectContainer extends CommandReceiver { - protected objects: Map = new Map(); - public player: CharacterView; - public camera: Camera; + protected objects: Map = new Map(); + public player!: CharacterView; + public camera!: Camera; protected commandExecutors: CommandExecutors = { [CreatePlayerCommand.type]: (c: CreatePlayerCommand) => { @@ -27,14 +26,8 @@ export class GameObjectContainer extends CommandReceiver { this.addObject(this.camera); }, - [StepCommand.type]: (_: StepCommand) => { - if (this.player) { - this.camera.center = this.player.position; - } - }, - [CreateObjectsCommand.type]: (c: CreateObjectsCommand) => - c.objects.forEach((o) => this.addObject(o)), + c.objects.forEach((o) => this.addObject(o as ViewObject)), [DeleteObjectsCommand.type]: (c: DeleteObjectsCommand) => c.ids.forEach((id: Id) => this.objects.delete(id)), @@ -42,7 +35,7 @@ export class GameObjectContainer extends CommandReceiver { [UpdateObjectsCommand.type]: (c: UpdateObjectsCommand) => { c.objects.forEach((o) => { this.objects.delete(o.id); - this.addObject(o); + this.addObject(o as ViewObject); if (o.id === this.player.id) { this.player = o as CharacterView; } @@ -54,15 +47,19 @@ export class GameObjectContainer extends CommandReceiver { super(); } - protected defaultCommandExecutor(c: Command) { - this.objects.forEach((o) => o.sendCommand(c)); + public stepObjects(delta: number) { + if (this.player) { + this.camera.center = this.player.position; + } + + this.objects.forEach((o) => o.step(delta)); } - public sendCommandToSingleObject(id: Id, e: Command) { - this.objects.get(id)!.sendCommand(e); + public drawObjects(renderer: Renderer) { + this.objects.forEach((o) => o.draw(renderer)); } - private addObject(object: GameObject) { + private addObject(object: ViewObject) { this.objects.set(object.id, object); } } diff --git a/frontend/src/scripts/objects/lamp-view.ts b/frontend/src/scripts/objects/lamp-view.ts index a2b1045..ece2595 100644 --- a/frontend/src/scripts/objects/lamp-view.ts +++ b/frontend/src/scripts/objects/lamp-view.ts @@ -1,17 +1,24 @@ import { vec2, vec3 } from 'gl-matrix'; -import { CircleLight } from 'sdf-2d'; +import { CircleLight, Renderer } from 'sdf-2d'; import { CommandExecutors, Id, LampBase } from 'shared'; import { RenderCommand } from '../commands/types/render'; +import { ViewObject } from './view-object'; -export class LampView extends LampBase { +export class LampView extends LampBase implements ViewObject { private light: CircleLight; protected commandExecutors: CommandExecutors = { [RenderCommand.type]: (c: RenderCommand) => c.renderer.addDrawable(this.light), - } as any; + }; constructor(id: Id, center: vec2, color: vec3, lightness: number) { super(id, center, color, lightness); this.light = new CircleLight(center, color, lightness); } + + public step(deltaTimeInMilliseconds: number): void {} + + public draw(renderer: Renderer): void { + renderer.addDrawable(this.light); + } } diff --git a/frontend/src/scripts/objects/projectile-view.ts b/frontend/src/scripts/objects/projectile-view.ts new file mode 100644 index 0000000..bcb6ef6 --- /dev/null +++ b/frontend/src/scripts/objects/projectile-view.ts @@ -0,0 +1,19 @@ +import { vec2 } from 'gl-matrix'; +import { Circle, Renderer } from 'sdf-2d'; +import { Id, ProjectileBase } from 'shared'; +import { ViewObject } from './view-object'; + +export class ProjectileView extends ProjectileBase implements ViewObject { + private circle: Circle; + + constructor(id: Id, center: vec2, radius: number) { + super(id, center, radius); + this.circle = new Circle(center, radius); + } + + public step(deltaTimeInMilliseconds: number): void {} + + public draw(renderer: Renderer): void { + renderer.addDrawable(this.circle); + } +} diff --git a/frontend/src/scripts/objects/stone-view.ts b/frontend/src/scripts/objects/stone-view.ts new file mode 100644 index 0000000..7595e0b --- /dev/null +++ b/frontend/src/scripts/objects/stone-view.ts @@ -0,0 +1,25 @@ +import { vec2 } from 'gl-matrix'; +import { Drawable, Renderer } from 'sdf-2d'; +import { CommandExecutors, Id, StoneBase } from 'shared'; +import { RenderCommand } from '../commands/types/render'; +import { Polygon } from '../shapes/polygon'; +import { ViewObject } from './view-object'; + +export class StoneView extends StoneBase implements ViewObject { + private shape: Drawable; + + protected commandExecutors: CommandExecutors = { + [RenderCommand.type]: (c: RenderCommand) => c.renderer.addDrawable(this.shape), + }; + + constructor(id: Id, vertices: Array) { + super(id, vertices); + this.shape = new Polygon(vertices); + } + + public step(deltaTimeInMilliseconds: number): void {} + + public draw(renderer: Renderer): void { + renderer.addDrawable(this.shape); + } +} diff --git a/frontend/src/scripts/objects/tunnel-view.ts b/frontend/src/scripts/objects/tunnel-view.ts deleted file mode 100644 index ecd6638..0000000 --- a/frontend/src/scripts/objects/tunnel-view.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { vec2 } from 'gl-matrix'; -import { InvertedTunnel } from 'sdf-2d'; -import { CommandExecutors, Id, TunnelBase } from 'shared'; -import { RenderCommand } from '../commands/types/render'; - -export class TunnelView extends TunnelBase { - private shape: InvertedTunnel; - - protected commandExecutors: CommandExecutors = { - [RenderCommand.type]: (c: RenderCommand) => c.renderer.addDrawable(this.shape), - } as any; - - constructor(id: Id, from: vec2, to: vec2, fromRadius: number, toRadius: number) { - super(id, from, to, fromRadius, toRadius); - this.shape = new InvertedTunnel(from, to, fromRadius, toRadius); - } -} diff --git a/frontend/src/scripts/objects/view-object.ts b/frontend/src/scripts/objects/view-object.ts new file mode 100644 index 0000000..d3ae529 --- /dev/null +++ b/frontend/src/scripts/objects/view-object.ts @@ -0,0 +1,7 @@ +import { Renderer } from 'sdf-2d'; +import { GameObject } from 'shared'; + +export interface ViewObject extends GameObject { + step(deltaTimeInMilliseconds: number): void; + draw(renderer: Renderer): void; +} diff --git a/frontend/src/scripts/shapes/blob-shape.ts b/frontend/src/scripts/shapes/blob-shape.ts index fb5a3fa..0c44f0b 100644 --- a/frontend/src/scripts/shapes/blob-shape.ts +++ b/frontend/src/scripts/shapes/blob-shape.ts @@ -11,6 +11,7 @@ export class BlobShape extends Drawable { uniform vec2 rightFootCenters[BLOB_COUNT]; uniform float headRadii[BLOB_COUNT]; uniform float footRadii[BLOB_COUNT]; + uniform float blobColors[BLOB_COUNT]; float blobSmoothMin(float a, float b) { @@ -25,7 +26,6 @@ export class BlobShape extends Drawable { float blobMinDistance(vec2 target, out float colorIndex) { float minDistance = 1000.0; - colorIndex = 3.0; for (int i = 0; i < BLOB_COUNT; i++) { float headDistance = circleDistance(headCenters[i], headRadii[i], target); @@ -61,6 +61,10 @@ export class BlobShape extends Drawable { ); minDistance = min(minDistance, res); + + if (res < 0.0) { + colorIndex = blobColors[i]; + } } return minDistance; @@ -74,17 +78,18 @@ export class BlobShape extends Drawable { rightFootCenter: 'rightFootCenters', leftFootCenter: 'leftFootCenters', headCenter: 'headCenters', + color: 'blobColors', }, uniformCountMacroName: 'BLOB_COUNT', - shaderCombinationSteps: [0, 1, 10], - empty: new BlobShape(), + shaderCombinationSteps: [], + empty: new BlobShape(0), }; - protected head: Circle; - protected leftFoot: Circle; - protected rightFoot: Circle; + protected head!: Circle; + protected leftFoot!: Circle; + protected rightFoot!: Circle; - public constructor() { + public constructor(private readonly color: number) { super(); const circle = new Circle(vec2.create(), 200); @@ -120,6 +125,7 @@ export class BlobShape extends Drawable { ), headRadius: this.head.radius * transform1d, footRadius: this.leftFoot.radius * transform1d, + color: this.color, }; } } diff --git a/frontend/src/scripts/shapes/polygon.ts b/frontend/src/scripts/shapes/polygon.ts new file mode 100644 index 0000000..5ab0052 --- /dev/null +++ b/frontend/src/scripts/shapes/polygon.ts @@ -0,0 +1,4 @@ +import { PolygonFactory } from 'sdf-2d'; +import { settings } from 'shared'; + +export const Polygon = PolygonFactory(settings.polygonEdgeCount); diff --git a/package.json b/package.json index d90168f..71fa50c 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "gl-matrix": "^3.3.0", "lerna": "^3.22.1", "prettier": "^2.0.5", - "sdf-2d": "^0.4.0", + "sdf-2d": "^0.4.1", "socket.io-client": "^2.3.1", "typescript": "^4.0.3", "uuid": "^8.2.0" diff --git a/shared/src/commands/types/step.ts b/shared/src/commands/types/step.ts deleted file mode 100644 index fb0181c..0000000 --- a/shared/src/commands/types/step.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Command } from '../command'; - -export class StepCommand extends Command { - public constructor(public readonly deltaTimeInMiliseconds: number) { - super(); - } -} diff --git a/shared/src/helper/mix-rgb.ts b/shared/src/helper/mix-rgb.ts new file mode 100644 index 0000000..17195af --- /dev/null +++ b/shared/src/helper/mix-rgb.ts @@ -0,0 +1,12 @@ +import { vec3 } from 'gl-matrix'; +import { clamp01 } from './clamp'; +import { mix } from './mix'; + +export const mixRgb = (a: vec3, b: vec3, q: number): vec3 => { + const clampedQ = clamp01(q); + return vec3.fromValues( + mix(a[0], b[0], clampedQ), + mix(a[1], b[1], clampedQ), + mix(a[2], b[2], clampedQ), + ); +}; diff --git a/shared/src/helper/random.ts b/shared/src/helper/random.ts index 10e93bb..4f800bc 100644 --- a/shared/src/helper/random.ts +++ b/shared/src/helper/random.ts @@ -9,6 +9,19 @@ export abstract class Random { Random._seed = value; } + public static choose(values: Array): T | undefined { + const to = values.length; + if (to === 0) { + return undefined; + } + + return values[Math.floor(this.getRandomInRange(0, to))]; + } + + public static getRandomInRange(from: number, to: number): number { + return from + this.getRandom() * (to - from); + } + public static getRandom(): number { let t = (Random._seed += 0x6d2b79f5); t = Math.imul(t ^ (t >>> 15), t | 1); diff --git a/frontend/src/scripts/helper/rgb.ts b/shared/src/helper/rgb.ts similarity index 100% rename from frontend/src/scripts/helper/rgb.ts rename to shared/src/helper/rgb.ts diff --git a/frontend/src/scripts/helper/rgb255.ts b/shared/src/helper/rgb255.ts similarity index 100% rename from frontend/src/scripts/helper/rgb255.ts rename to shared/src/helper/rgb255.ts diff --git a/shared/src/main.ts b/shared/src/main.ts index bf9a7bb..f21f2c7 100644 --- a/shared/src/main.ts +++ b/shared/src/main.ts @@ -3,10 +3,8 @@ export * from './commands/types/create-objects'; export * from './commands/types/create-player'; export * from './commands/types/delete-objects'; export * from './commands/types/update-objects'; -export * from './commands/types/step'; export * from './commands/types/ternary-action'; export * from './commands/types/move-action'; -export * from './commands/types/set-aspect-ratio-action'; export * from './commands/types/primary-action'; export * from './commands/types/secondary-action'; export * from './commands/command-receiver'; @@ -16,6 +14,9 @@ export * from './commands/broadcast-commands'; export * from './commands/types/set-aspect-ratio-action'; export * from './helper/array'; export * from './helper/last'; +export * from './helper/rgb'; +export * from './helper/rgb255'; +export * from './helper/mix-rgb'; export * from './helper/clamp'; export * from './helper/calculate-view-area'; export * from './helper/pretty-print'; @@ -33,7 +34,8 @@ export * from './transport/serialization/serializable'; export * from './transport/serialization/override-deserialization'; export * from './objects/types/character-base'; export * from './objects/types/lamp-base'; -export * from './objects/types/tunnel-base'; +export * from './objects/types/stone-base'; +export * from './objects/types/projectile-base'; export * from './settings'; export * from './transport/transport-events'; export * from './transport/identity'; diff --git a/shared/src/objects/game-object.ts b/shared/src/objects/game-object.ts index 6192edd..22d9e6f 100644 --- a/shared/src/objects/game-object.ts +++ b/shared/src/objects/game-object.ts @@ -1,8 +1,5 @@ -import { CommandReceiver } from '../commands/command-receiver'; import { Id } from '../transport/identity'; -export abstract class GameObject extends CommandReceiver { - constructor(public readonly id: Id) { - super(); - } +export abstract class GameObject { + constructor(public readonly id: Id) {} } diff --git a/shared/src/objects/types/character-base.ts b/shared/src/objects/types/character-base.ts index a0e6f84..57c9e99 100644 --- a/shared/src/objects/types/character-base.ts +++ b/shared/src/objects/types/character-base.ts @@ -7,6 +7,7 @@ import { GameObject } from '../game-object'; export class CharacterBase extends GameObject { constructor( id: Id, + public colorIndex: number, public head?: Circle, public leftFoot?: Circle, public rightFoot?: Circle, @@ -15,7 +16,7 @@ export class CharacterBase extends GameObject { } public toArray(): Array { - const { id, head, leftFoot, rightFoot } = this as any; - return [id, head, leftFoot, rightFoot]; + const { id, colorIndex, head, leftFoot, rightFoot } = this; + return [id, colorIndex, head, leftFoot, rightFoot]; } } diff --git a/shared/src/objects/types/lamp-base.ts b/shared/src/objects/types/lamp-base.ts index cf594a2..3977fce 100644 --- a/shared/src/objects/types/lamp-base.ts +++ b/shared/src/objects/types/lamp-base.ts @@ -9,7 +9,7 @@ export class LampBase extends GameObject { } public toArray(): Array { - const { id, center, color, lightness } = this as any; + const { id, center, color, lightness } = this; return [id, center, color, lightness]; } } diff --git a/shared/src/objects/types/projectile-base.ts b/shared/src/objects/types/projectile-base.ts new file mode 100644 index 0000000..90ef4e2 --- /dev/null +++ b/shared/src/objects/types/projectile-base.ts @@ -0,0 +1,15 @@ +import { vec2 } from 'gl-matrix'; +import { Id } from '../../transport/identity'; +import { serializable } from '../../transport/serialization/serializable'; +import { GameObject } from '../game-object'; + +@serializable +export class ProjectileBase extends GameObject { + constructor(id: Id, public center: vec2, public radius: number) { + super(id); + } + + public toArray(): Array { + return [this.id, this.center, this.radius]; + } +} diff --git a/shared/src/objects/types/stone-base.ts b/shared/src/objects/types/stone-base.ts new file mode 100644 index 0000000..8736673 --- /dev/null +++ b/shared/src/objects/types/stone-base.ts @@ -0,0 +1,15 @@ +import { vec2 } from 'gl-matrix'; +import { Id } from '../../transport/identity'; +import { serializable } from '../../transport/serialization/serializable'; +import { GameObject } from '../game-object'; + +@serializable +export class StoneBase extends GameObject { + constructor(id: Id, public readonly vertices: Array) { + super(id); + } + + public toArray(): Array { + return [this.id, this.vertices]; + } +} diff --git a/shared/src/objects/types/tunnel-base.ts b/shared/src/objects/types/tunnel-base.ts deleted file mode 100644 index 58dea4d..0000000 --- a/shared/src/objects/types/tunnel-base.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { vec2 } from 'gl-matrix'; -import { Id } from '../../transport/identity'; -import { serializable } from '../../transport/serialization/serializable'; -import { GameObject } from '../game-object'; - -@serializable -export class TunnelBase extends GameObject { - constructor( - id: Id, - public readonly from: vec2, - public readonly to: vec2, - public readonly fromRadius: number, - public readonly toRadius: number, - ) { - super(id); - } - - public toArray(): Array { - const { id, from, to, fromRadius, toRadius } = this as any; - return [id, from, to, fromRadius, toRadius]; - } -} diff --git a/shared/src/settings.ts b/shared/src/settings.ts index 3c9935b..4777e84 100644 --- a/shared/src/settings.ts +++ b/shared/src/settings.ts @@ -1,19 +1,54 @@ import { vec2 } from 'gl-matrix'; +import { rgb255 } from './helper/rgb255'; export const settings = { lightCutoffDistance: 600, - hitDetectionCirclePointCount: 32, - hitDetectionMaxOverlap: 0.01, physicsMaxStep: 5, - gravitationalForce: vec2.fromValues(0, -200), - maxVelocityX: 500, - maxVelocityY: 750, - maxAccelerationX: 16000, - maxAccelerationY: 5500, - targetPhysicsDeltaTimeInMilliseconds: 15, + gravitationalForce: vec2.fromValues(0, -3000), + maxVelocityX: 4800, + maxVelocityY: 3650, + polygonEdgeCount: 8, + projectileSpeed: 2000, + projectileStartOffset: 150, + playerColorIndexOffset: 3, + worldLeftEdge: -5000, + worldRightEdge: 5000, + backgroundGradient: [rgb255(255, 117, 129), rgb255(136, 117, 255)], + playerColors: [ + rgb255(107, 48, 188), + rgb255(56, 254, 220), + rgb255(197, 17, 17), + rgb255(24, 24, 24), + rgb255(245, 245, 88), + rgb255(80, 239, 58), + rgb255(18, 127, 45), + rgb255(240, 125, 13), + rgb255(214, 227, 241), + rgb255(0, 161, 161), + rgb255(250, 161, 151), + rgb255(235, 84, 185), + rgb255(114, 73, 30), + rgb255(75, 75, 75), + rgb255(107, 48, 188), + rgb255(56, 254, 220), + rgb255(197, 17, 17), + rgb255(24, 24, 24), + rgb255(245, 245, 88), + rgb255(80, 239, 58), + rgb255(18, 127, 45), + rgb255(240, 125, 13), + rgb255(214, 227, 241), + rgb255(0, 161, 161), + rgb255(250, 161, 151), + rgb255(235, 84, 185), + rgb255(114, 73, 30), + rgb255(75, 75, 75), + ], + maxAccelerationX: 200000, + maxAccelerationY: 20500, + targetPhysicsDeltaTimeInMilliseconds: 20, minPhysicsSleepTime: 4, - velocityAttenuation: 0.5, - frictionMinVelocity: 400, + velocityAttenuation: 0.33, inViewAreaSize: 1920 * 1080 * 3, - defaultJumpEnergy: 0.75, + defaultJumpEnergy: 0.25, }; From 555be9d60298695915e00b839beb7193ac8bec67 Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Mon, 12 Oct 2020 21:46:23 +0200 Subject: [PATCH 002/101] Add projectile damage --- backend/Dockerfile | 11 +++++ backend/src/main.ts | 2 +- backend/src/map/create-dungeon.ts | 2 +- backend/src/objects/character-physical.ts | 47 +++++++++++++------ backend/src/objects/circle-physical.ts | 8 +++- backend/src/objects/projectile-physical.ts | 25 +++++----- .../physics/containers/dynamic-physical.ts | 3 ++ .../src/physics/containers/static-physical.ts | 1 + backend/src/physics/move-circle.ts | 12 ++++- backend/src/players/player.ts | 12 +++++ .../commands/generators/touch-listener.ts | 13 +++-- frontend/src/scripts/game.ts | 4 +- .../src/scripts/objects/projectile-view.ts | 9 ++-- shared/src/settings.ts | 2 + 14 files changed, 111 insertions(+), 40 deletions(-) create mode 100644 backend/Dockerfile diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 0000000..3ea763a --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,11 @@ +FROM node:14.13.0-alpine3.10 + +COPY package.json . + +RUN npm install --production + +COPY dist/main.js main.js + +EXPOSE 3000 + +CMD [ "node", "main.js" ] diff --git a/backend/src/main.ts b/backend/src/main.ts index a8c860a..9e45d9e 100644 --- a/backend/src/main.ts +++ b/backend/src/main.ts @@ -95,7 +95,7 @@ const handlePhysics = () => { } objects.stepObjects(delta); - players.forEach((p) => p.sendObjects()); + players.forEach((p) => p.step(delta)); const physicsDelta = deltaTimeCalculator.getDeltaTimeInMilliseconds(); deltas.push(physicsDelta); diff --git a/backend/src/map/create-dungeon.ts b/backend/src/map/create-dungeon.ts index 1c6b952..46222b4 100644 --- a/backend/src/map/create-dungeon.ts +++ b/backend/src/map/create-dungeon.ts @@ -71,7 +71,7 @@ export const createDungeon = (objectContainer: PhysicalContainer) => { Random.getRandomInRange(0.5, 1), ), ), - Random.getRandomInRange(0.75, 1.5), + Random.getRandomInRange(0.25, 1), ), ); } diff --git a/backend/src/objects/character-physical.ts b/backend/src/objects/character-physical.ts index d1023db..484fafe 100644 --- a/backend/src/objects/character-physical.ts +++ b/backend/src/objects/character-physical.ts @@ -7,24 +7,26 @@ import { serializesTo, clamp, last, + GameObject, } from 'shared'; import { DynamicPhysical } from '../physics/conatiners/dynamic-physical'; -import { ImmutableBoundingBox } from '../physics/bounding-boxes/immutable-bounding-box'; import { CirclePhysical } from './circle-physical'; - import { PhysicalContainer } from '../physics/containers/physical-container'; import { Spring } from './spring'; +import { BoundingBoxBase } from '../physics/bounding-boxes/bounding-box-base'; +import { ProjectilePhysical } from './projectile-physical'; @serializesTo(CharacterBase) export class CharacterPhysical extends CharacterBase implements DynamicPhysical { public readonly canCollide = true; public readonly canMove = true; - + private isDestroyed = false; private jumpEnergyLeft = settings.defaultJumpEnergy; public head: CirclePhysical; public leftFoot: CirclePhysical; public rightFoot: CirclePhysical; + public bound: CirclePhysical; private movementActions: Array = []; private lastMovementAction: MoveActionCommand = new MoveActionCommand(vec2.create()); @@ -34,6 +36,8 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical } private static readonly headOffset = vec2.fromValues(0, 40); + private static readonly headRadius = 50; + private static readonly feetRadius = 20; private static readonly leftFootOffset = vec2.fromValues(-20, -35); private static readonly rightFootOffset = vec2.fromValues(20, -35); @@ -44,35 +48,44 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical super(id(), colorIndex); this.head = new CirclePhysical( vec2.clone(CharacterPhysical.headOffset), - 50, + CharacterPhysical.headRadius, this, container, ); this.leftFoot = new CirclePhysical( vec2.clone(CharacterPhysical.leftFootOffset), - 20, + CharacterPhysical.feetRadius, this, container, ); this.rightFoot = new CirclePhysical( vec2.clone(CharacterPhysical.rightFootOffset), - 20, + CharacterPhysical.feetRadius, this, container, ); container.addObject(this.head); container.addObject(this.leftFoot); container.addObject(this.rightFoot); + + this.bound = new CirclePhysical( + vec2.create(), + (CharacterPhysical.headRadius + CharacterPhysical.feetRadius * 2) * 2, + this, + container, + ); } - private _boundingBox?: ImmutableBoundingBox; - - public get boundingBox(): ImmutableBoundingBox { - if (!this._boundingBox) { - this._boundingBox = (this.head as CirclePhysical).boundingBox; + public onCollision(other: GameObject) { + if (other instanceof ProjectilePhysical) { + other.destroy(); + this.destroy(); } + } - return this._boundingBox; + public get boundingBox(): BoundingBoxBase { + this.bound.center = this.head.center; + return this.bound.boundingBox; } public get gameObject(): this { @@ -209,8 +222,12 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical } public destroy() { - this.container.removeObject(this.head); - this.container.removeObject(this.leftFoot); - this.container.removeObject(this.rightFoot); + if (!this.isDestroyed) { + this.isDestroyed = true; + this.container.removeObject(this); + this.container.removeObject(this.head); + this.container.removeObject(this.leftFoot); + this.container.removeObject(this.rightFoot); + } } } diff --git a/backend/src/objects/circle-physical.ts b/backend/src/objects/circle-physical.ts index d858630..48a019e 100644 --- a/backend/src/objects/circle-physical.ts +++ b/backend/src/objects/circle-physical.ts @@ -6,7 +6,7 @@ import { BoundingBox } from '../physics/bounding-boxes/bounding-box'; import { BoundingBoxBase } from '../physics/bounding-boxes/bounding-box-base'; import { moveCircle } from '../physics/move-circle'; import { PhysicalContainer } from '../physics/containers/physical-container'; -import { DynamicPhysical } from '../physics/conatiners/dynamic-physical'; +import { DynamicPhysical } from '../physics/containers/dynamic-physical'; @serializesTo(Circle) export class CirclePhysical implements Circle, DynamicPhysical { @@ -25,7 +25,7 @@ export class CirclePhysical implements Circle, DynamicPhysical { constructor( private _center: vec2, private _radius: number, - public owner: GameObject, + public owner: DynamicPhysical, private readonly container: PhysicalContainer, private restitution = 0, ) { @@ -46,6 +46,10 @@ export class CirclePhysical implements Circle, DynamicPhysical { this.recalculateBoundingBox(); } + public onCollision(other: GameObject) { + this.owner.onCollision(other); + } + public get gameObject(): GameObject { return this.owner; } diff --git a/backend/src/objects/projectile-physical.ts b/backend/src/objects/projectile-physical.ts index a2f68a2..7ff2824 100644 --- a/backend/src/objects/projectile-physical.ts +++ b/backend/src/objects/projectile-physical.ts @@ -1,12 +1,5 @@ import { vec2 } from 'gl-matrix'; -import { - id, - settings, - serializesTo, - ProjectileBase, - GameObject, - rotate90Deg, -} from 'shared'; +import { id, settings, serializesTo, ProjectileBase, GameObject } from 'shared'; import { ImmutableBoundingBox } from '../physics/bounding-boxes/immutable-bounding-box'; import { CirclePhysical } from './circle-physical'; import { DynamicPhysical } from '../physics/conatiners/dynamic-physical'; @@ -16,6 +9,8 @@ import { PhysicalContainer } from '../physics/containers/physical-container'; export class ProjectilePhysical extends ProjectileBase implements DynamicPhysical { public readonly canCollide = true; public readonly canMove = true; + private isDestroyed = false; + private bounceCount = 0; public object: CirclePhysical; @@ -47,9 +42,17 @@ export class ProjectilePhysical extends ProjectileBase implements DynamicPhysica return this.object.distance(target); } - public onCollision(normal: vec2, other: GameObject) { - const tangent = rotate90Deg(normal); - vec2.scale(this.velocity, tangent, vec2.dot(tangent, this.velocity)); + public destroy() { + if (!this.isDestroyed) { + this.isDestroyed = true; + this.container.removeObject(this); + } + } + + public onCollision(other: GameObject) { + if (this.bounceCount++ === settings.projectileMaxBounceCount) { + this.destroy(); + } } public step(deltaTimeInMiliseconds: number) { diff --git a/backend/src/physics/containers/dynamic-physical.ts b/backend/src/physics/containers/dynamic-physical.ts index 326b56e..fd0e066 100644 --- a/backend/src/physics/containers/dynamic-physical.ts +++ b/backend/src/physics/containers/dynamic-physical.ts @@ -1,5 +1,8 @@ +import { GameObject } from 'shared'; import { Physical } from '../physical'; export interface DynamicPhysical extends Physical { + readonly canMove: true; step(deltaTimeInMilliseconds: number): void; + onCollision(other: GameObject): void; } diff --git a/backend/src/physics/containers/static-physical.ts b/backend/src/physics/containers/static-physical.ts index 2ad7303..47e8de8 100644 --- a/backend/src/physics/containers/static-physical.ts +++ b/backend/src/physics/containers/static-physical.ts @@ -2,5 +2,6 @@ import { Physical } from '../physical'; import { ImmutableBoundingBox } from '../bounding-boxes/immutable-bounding-box'; export interface StaticPhysical extends Physical { + readonly canMove: false; readonly boundingBox: ImmutableBoundingBox; } diff --git a/backend/src/physics/move-circle.ts b/backend/src/physics/move-circle.ts index 4ff6e8b..d7ef36a 100644 --- a/backend/src/physics/move-circle.ts +++ b/backend/src/physics/move-circle.ts @@ -1,6 +1,7 @@ import { vec2 } from 'gl-matrix'; import { Circle, rotate90Deg } from 'shared'; import { CirclePhysical } from '../objects/circle-physical'; +import { DynamicPhysical } from './containers/dynamic-physical'; import { Physical } from './physical'; export const moveCircle = ( @@ -37,6 +38,15 @@ export const moveCircle = ( }; } + const intersecting = possibleIntersectors + .filter((i) => i.canCollide && i.canMove) + .find((i) => i.distance(nextCircle.center) < circle.radius); + + (intersecting?.gameObject as DynamicPhysical)?.onCollision(circle.gameObject); + ((circle.gameObject as unknown) as DynamicPhysical).onCollision( + intersecting?.gameObject, + ); + const dx = getSdfAtPoint(vec2.add(vec2.create(), nextCircle.center, vec2.fromValues(1, 0))) - sdfAtCenter; @@ -44,9 +54,7 @@ export const moveCircle = ( getSdfAtPoint(vec2.add(vec2.create(), nextCircle.center, vec2.fromValues(0, 1))) - sdfAtCenter; const normal = vec2.fromValues(dx, dy); - vec2.normalize(normal, normal); - const rotatedNormal = rotate90Deg(normal); return { realDelta: delta, diff --git a/backend/src/players/player.ts b/backend/src/players/player.ts index 6a86504..0023969 100644 --- a/backend/src/players/player.ts +++ b/backend/src/players/player.ts @@ -28,6 +28,8 @@ export class Player extends CommandReceiver { private aspectRatio: number = 16 / 9; private isActive = true; + private timeSinceLastProjectile = 0; + private objectsPreviouslyInViewArea: Array = []; private objectsInViewArea: Array = []; @@ -51,6 +53,10 @@ export class Player extends CommandReceiver { [MoveActionCommand.type]: (c: MoveActionCommand) => this.character.handleMovementAction(c), [SecondaryActionCommand.type]: (c: SecondaryActionCommand) => { + if (this.timeSinceLastProjectile < settings.projectileCreationInterval) { + return; + } + const start = vec2.clone(this.character.center); const direction = vec2.subtract(vec2.create(), c.position, start); vec2.normalize(direction, direction); @@ -63,6 +69,8 @@ export class Player extends CommandReceiver { vec2.add(velocity, velocity, this.character.velocity); const projectile = new ProjectilePhysical(start, 20, velocity, this.objects); this.objects.addObject(projectile); + + this.timeSinceLastProjectile = 0; }, }; @@ -92,6 +100,10 @@ export class Player extends CommandReceiver { this.sendObjects(); } + public step(deltaTimeInMilliseconds: number) { + this.sendObjects(); + this.timeSinceLastProjectile += deltaTimeInMilliseconds; + } public sendObjects() { const viewArea = calculateViewArea(this.character.center, this.aspectRatio, 1.5); const bb = new BoundingBox(); diff --git a/frontend/src/scripts/commands/generators/touch-listener.ts b/frontend/src/scripts/commands/generators/touch-listener.ts index 371cf6b..0fa4797 100644 --- a/frontend/src/scripts/commands/generators/touch-listener.ts +++ b/frontend/src/scripts/commands/generators/touch-listener.ts @@ -33,7 +33,7 @@ export class TouchListener extends CommandGenerator { target.addEventListener('touchmove', (event: TouchEvent) => { event.preventDefault(); - const position = this.positionFromEvent(event); + const position = this.positionFromEvent(event, true); const movement = vec2.subtract(vec2.create(), position, this.previousPosition); if (vec2.squaredLength(movement) > 0) { @@ -50,11 +50,18 @@ export class TouchListener extends CommandGenerator { }); } - private positionFromEvent(event: TouchEvent): vec2 { + private positionFromEvent(event: TouchEvent, invert = false): vec2 { const touches = Array.prototype.slice.call(event.touches); const center = touches.reduce( (center: vec2, touch: Touch) => - vec2.add(center, center, vec2.fromValues(-touch.clientX, -touch.clientY)), + vec2.add( + center, + center, + vec2.fromValues( + touch.clientX * (invert ? -1 : 1), + touch.clientY * (invert ? -1 : 1), + ), + ), vec2.create(), ); diff --git a/frontend/src/scripts/game.ts b/frontend/src/scripts/game.ts index 3f183ab..218393a 100644 --- a/frontend/src/scripts/game.ts +++ b/frontend/src/scripts/game.ts @@ -103,7 +103,7 @@ export class Game { { shadowTraceCount: 16, paletteSize: 10, - enableStopwatch: true, + //enableStopwatch: true, }, ); @@ -112,7 +112,7 @@ export class Game { colorPalette: [ rgb(1, 1, 1), rgb(0.4, 0.4, 0.4), - rgb(0.3, 1, 1), + rgb(1, 1, 1), ...settings.playerColors, ], enableHighDpiRendering: false, diff --git a/frontend/src/scripts/objects/projectile-view.ts b/frontend/src/scripts/objects/projectile-view.ts index bcb6ef6..bb1b2d1 100644 --- a/frontend/src/scripts/objects/projectile-view.ts +++ b/frontend/src/scripts/objects/projectile-view.ts @@ -1,19 +1,22 @@ import { vec2 } from 'gl-matrix'; -import { Circle, Renderer } from 'sdf-2d'; -import { Id, ProjectileBase } from 'shared'; +import { Circle, CircleLight, Renderer } from 'sdf-2d'; +import { Id, ProjectileBase, rgb } from 'shared'; import { ViewObject } from './view-object'; export class ProjectileView extends ProjectileBase implements ViewObject { private circle: Circle; + private light: CircleLight; constructor(id: Id, center: vec2, radius: number) { super(id, center, radius); - this.circle = new Circle(center, radius); + this.circle = new Circle(center, radius / 2); + this.light = new CircleLight(center, rgb(1, 0.5, 0), 0.35); } public step(deltaTimeInMilliseconds: number): void {} public draw(renderer: Renderer): void { renderer.addDrawable(this.circle); + renderer.addDrawable(this.light); } } diff --git a/shared/src/settings.ts b/shared/src/settings.ts index 4777e84..5c15dc6 100644 --- a/shared/src/settings.ts +++ b/shared/src/settings.ts @@ -9,7 +9,9 @@ export const settings = { maxVelocityY: 3650, polygonEdgeCount: 8, projectileSpeed: 2000, + projectileMaxBounceCount: 1, projectileStartOffset: 150, + projectileCreationInterval: 500, playerColorIndexOffset: 3, worldLeftEdge: -5000, worldRightEdge: 5000, From ba4dd5c4703d6a0b50acb5a560fbfb3fec60bc44 Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Tue, 13 Oct 2020 12:47:25 +0200 Subject: [PATCH 003/101] Fix bugs and add improvements --- backend/src/map/create-dungeon.ts | 6 +++--- backend/src/players/player.ts | 1 - frontend/src/scripts/game.ts | 5 +++-- frontend/src/scripts/objects/projectile-view.ts | 2 +- frontend/src/scripts/objects/stone-view.ts | 8 +++++--- frontend/src/scripts/shapes/polygon.ts | 4 ++-- shared/src/helper/{unique.ts => id.ts} | 0 shared/src/main.ts | 2 +- shared/src/settings.ts | 6 +++--- shared/src/transport/serialization/deserialize.ts | 13 ++++++++----- 10 files changed, 26 insertions(+), 21 deletions(-) rename shared/src/helper/{unique.ts => id.ts} (100%) diff --git a/backend/src/map/create-dungeon.ts b/backend/src/map/create-dungeon.ts index 46222b4..989771f 100644 --- a/backend/src/map/create-dungeon.ts +++ b/backend/src/map/create-dungeon.ts @@ -29,15 +29,15 @@ export const createDungeon = (objectContainer: PhysicalContainer) => { Random.getRandomInRange(0, height), ); } while ( - calculateDistanceField(position) < 600 || + calculateDistanceField(position) < 800 || calculateDistanceField(position) > 2000 ); objects.push( createBlob( position, - Random.getRandomInRange(200, 2000), - Random.getRandomInRange(100, 500), + Random.getRandomInRange(300, 800), + Random.getRandomInRange(300, 800), Random.getRandomInRange(10, 40), ), ); diff --git a/backend/src/players/player.ts b/backend/src/players/player.ts index 0023969..4fdcd7f 100644 --- a/backend/src/players/player.ts +++ b/backend/src/players/player.ts @@ -160,6 +160,5 @@ export class Player extends CommandReceiver { this.isActive = false; freeColor(this.character.colorIndex); this.character.destroy(); - this.objects.removeObject(this.character); } } diff --git a/frontend/src/scripts/game.ts b/frontend/src/scripts/game.ts index 218393a..3e26d16 100644 --- a/frontend/src/scripts/game.ts +++ b/frontend/src/scripts/game.ts @@ -74,7 +74,7 @@ export class Game { } private async setupRenderer(): Promise { - const noiseTexture = await renderNoise([64, 1], 20, 1 / 10); + const noiseTexture = await renderNoise([256, 256], 2, 1 / 10); this.renderer = await compile( this.canvas, @@ -123,6 +123,7 @@ export class Game { overrides: { maxFilter: FilteringOptions.LINEAR, wrapS: WrapOptions.MIRRORED_REPEAT, + wrapT: WrapOptions.MIRRORED_REPEAT, }, }, }, @@ -135,7 +136,7 @@ export class Game { } public displayToWorldCoordinates(p: vec2): vec2 { - return this.renderer.displayToWorldCoordinates(p); + return this.renderer?.displayToWorldCoordinates(p); } public aspectRatioChanged(aspectRatio: number) { diff --git a/frontend/src/scripts/objects/projectile-view.ts b/frontend/src/scripts/objects/projectile-view.ts index bb1b2d1..02aa249 100644 --- a/frontend/src/scripts/objects/projectile-view.ts +++ b/frontend/src/scripts/objects/projectile-view.ts @@ -10,7 +10,7 @@ export class ProjectileView extends ProjectileBase implements ViewObject { constructor(id: Id, center: vec2, radius: number) { super(id, center, radius); this.circle = new Circle(center, radius / 2); - this.light = new CircleLight(center, rgb(1, 0.5, 0), 0.35); + this.light = new CircleLight(center, rgb(1, 0.5, 0), 0.15); } public step(deltaTimeInMilliseconds: number): void {} diff --git a/frontend/src/scripts/objects/stone-view.ts b/frontend/src/scripts/objects/stone-view.ts index 7595e0b..56d1b32 100644 --- a/frontend/src/scripts/objects/stone-view.ts +++ b/frontend/src/scripts/objects/stone-view.ts @@ -1,6 +1,6 @@ import { vec2 } from 'gl-matrix'; import { Drawable, Renderer } from 'sdf-2d'; -import { CommandExecutors, Id, StoneBase } from 'shared'; +import { CommandExecutors, Id, Random, StoneBase } from 'shared'; import { RenderCommand } from '../commands/types/render'; import { Polygon } from '../shapes/polygon'; import { ViewObject } from './view-object'; @@ -14,10 +14,12 @@ export class StoneView extends StoneBase implements ViewObject { constructor(id: Id, vertices: Array) { super(id, vertices); - this.shape = new Polygon(vertices); + this.shape = new Polygon(vertices, Random.getRandom()); } - public step(deltaTimeInMilliseconds: number): void {} + public step(deltaTimeInMilliseconds: number): void { + this.shape.randomOffset += deltaTimeInMilliseconds / 5000; + } public draw(renderer: Renderer): void { renderer.addDrawable(this.shape); diff --git a/frontend/src/scripts/shapes/polygon.ts b/frontend/src/scripts/shapes/polygon.ts index 5ab0052..df62695 100644 --- a/frontend/src/scripts/shapes/polygon.ts +++ b/frontend/src/scripts/shapes/polygon.ts @@ -1,4 +1,4 @@ -import { PolygonFactory } from 'sdf-2d'; +import { NoisyPolygonFactory } from 'sdf-2d'; import { settings } from 'shared'; -export const Polygon = PolygonFactory(settings.polygonEdgeCount); +export const Polygon = NoisyPolygonFactory(settings.polygonEdgeCount, 1); diff --git a/shared/src/helper/unique.ts b/shared/src/helper/id.ts similarity index 100% rename from shared/src/helper/unique.ts rename to shared/src/helper/id.ts diff --git a/shared/src/main.ts b/shared/src/main.ts index f21f2c7..dcdfc00 100644 --- a/shared/src/main.ts +++ b/shared/src/main.ts @@ -24,7 +24,7 @@ export * from './helper/circle'; export * from './helper/rectangle'; export * from './helper/mix'; export * from './helper/random'; -export * from './helper/unique'; +export * from './helper/id'; export * from './helper/rotate-90-deg'; export * from './objects/game-object'; export * from './transport/serialization/deserialize'; diff --git a/shared/src/settings.ts b/shared/src/settings.ts index 5c15dc6..c933924 100644 --- a/shared/src/settings.ts +++ b/shared/src/settings.ts @@ -5,7 +5,7 @@ export const settings = { lightCutoffDistance: 600, physicsMaxStep: 5, gravitationalForce: vec2.fromValues(0, -3000), - maxVelocityX: 4800, + maxVelocityX: 2000, maxVelocityY: 3650, polygonEdgeCount: 8, projectileSpeed: 2000, @@ -46,11 +46,11 @@ export const settings = { rgb255(114, 73, 30), rgb255(75, 75, 75), ], - maxAccelerationX: 200000, + maxAccelerationX: 2000000, maxAccelerationY: 20500, targetPhysicsDeltaTimeInMilliseconds: 20, minPhysicsSleepTime: 4, - velocityAttenuation: 0.33, + velocityAttenuation: 0.1, inViewAreaSize: 1920 * 1080 * 3, defaultJumpEnergy: 0.25, }; diff --git a/shared/src/transport/serialization/deserialize.ts b/shared/src/transport/serialization/deserialize.ts index 3d9dcfb..382aad8 100644 --- a/shared/src/transport/serialization/deserialize.ts +++ b/shared/src/transport/serialization/deserialize.ts @@ -2,11 +2,14 @@ import { serializableMapping } from './serializable-mapping'; export const deserialize = (json: string): any => { return JSON.parse(json, (k, v) => { - const possibleType = v[0]; - const overridableConstructor = serializableMapping.get(possibleType); - if (overridableConstructor) { - v.shift(); - return new overridableConstructor.constructor(...v); + if (v !== null && Object.prototype.hasOwnProperty.call(v, '0')) { + const possibleType = v[0]; + const overridableConstructor = serializableMapping.get(possibleType); + if (overridableConstructor) { + v.shift(); + return new overridableConstructor.constructor(...v); + } + return v; } return v; }); From cd65cb5b6c3fb3f2ce4fd412ed735493acb4caac Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Fri, 16 Oct 2020 11:15:53 +0200 Subject: [PATCH 004/101] Fix player spawn overlap --- backend/src/players/player.ts | 46 ++++++++++++++++++++++++++++++----- 1 file changed, 40 insertions(+), 6 deletions(-) diff --git a/backend/src/players/player.ts b/backend/src/players/player.ts index 4fdcd7f..faadb80 100644 --- a/backend/src/players/player.ts +++ b/backend/src/players/player.ts @@ -13,6 +13,7 @@ import { calculateViewArea, SecondaryActionCommand, settings, + Circle, } from 'shared'; import { getTimeInMilliseconds } from '../helper/get-time-in-milliseconds'; import { CharacterPhysical } from '../objects/character-physical'; @@ -20,7 +21,9 @@ import { ProjectilePhysical } from '../objects/projectile-physical'; import { BoundingBox } from '../physics/bounding-boxes/bounding-box'; import { PhysicalContainer } from '../physics/containers/physical-container'; -import { Physical } from '../physics/physical'; +import { PhysicalBase } from '../physics/physicals/physical-base'; +import { getBoundingBoxOfCircle } from '../physics/functions/get-bounding-box-of-circle'; +import { isCircleIntersecting } from '../physics/functions/is-circle-intersecting'; import { requestColor, freeColor } from './player-color-service'; export class Player extends CommandReceiver { @@ -30,8 +33,8 @@ export class Player extends CommandReceiver { private timeSinceLastProjectile = 0; - private objectsPreviouslyInViewArea: Array = []; - private objectsInViewArea: Array = []; + private objectsPreviouslyInViewArea: Array = []; + private objectsInViewArea: Array = []; private pingTime?: number; private _latency?: number; @@ -74,13 +77,44 @@ export class Player extends CommandReceiver { }, }; + private findEmptyPositionForPlayer(): vec2 { + let rotation = 0; + let radius = 0; + for (;;) { + const playerPosition = vec2.fromValues( + radius * Math.cos(rotation), + radius * Math.sin(rotation), + ); + + const playerBoundingCircle = new Circle( + playerPosition, + CharacterPhysical.boundRadius, + ); + + const playerBoundingBox = getBoundingBoxOfCircle(playerBoundingCircle); + const possibleIntersectors = this.objects.findIntersecting(playerBoundingBox); + if (!isCircleIntersecting(playerBoundingCircle, possibleIntersectors)) { + return playerPosition; + } + + rotation += Math.PI / 12; + radius += 10; + } + } + constructor( private readonly objects: PhysicalContainer, private readonly socket: SocketIO.Socket, ) { super(); const colorIndex = requestColor(); - this.character = new CharacterPhysical(colorIndex, objects); + + this.character = new CharacterPhysical( + colorIndex, + objects, + this.findEmptyPositionForPlayer(), + ); + this.objectsPreviouslyInViewArea.push(this.character); this.objectsInViewArea.push(this.character); @@ -100,9 +134,9 @@ export class Player extends CommandReceiver { this.sendObjects(); } - public step(deltaTimeInMilliseconds: number) { + public step(deltaTime: number) { this.sendObjects(); - this.timeSinceLastProjectile += deltaTimeInMilliseconds; + this.timeSinceLastProjectile += deltaTime; } public sendObjects() { const viewArea = calculateViewArea(this.character.center, this.aspectRatio, 1.5); From 155e360c8ed277120f389c284853715eeac1a7e4 Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Fri, 16 Oct 2020 11:16:15 +0200 Subject: [PATCH 005/101] Add source map loader to frontend --- frontend/package.json | 1 + frontend/webpack.config.js | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/frontend/package.json b/frontend/package.json index 4e10c8b..31d8075 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -36,6 +36,7 @@ "webpack": "^4.43.0", "webpack-bundle-analyzer": "^3.9.0", "webpack-cli": "^3.3.11", + "source-map-loader": "^1.1.0", "webpack-dev-server": "^3.10.3" }, "postcss": { diff --git a/frontend/webpack.config.js b/frontend/webpack.config.js index f2a7f66..3ab9498 100644 --- a/frontend/webpack.config.js +++ b/frontend/webpack.config.js @@ -112,6 +112,11 @@ module.exports = (env, argv) => ({ }, exclude: /node_modules/, }, + { + test: /\.js$/, + enforce: 'pre', + use: ['source-map-loader'], + }, ], }, resolve: { From 89fafeafd3331cd3275c328781b6106dcc153461 Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Fri, 16 Oct 2020 11:48:52 +0200 Subject: [PATCH 006/101] Make physics more fun --- .gitignore | 1 + backend/src/helper/interpolate-angles.ts | 9 + backend/src/main.ts | 6 +- backend/src/map/create-dungeon.ts | 82 ++---- backend/src/objects/character-physical.ts | 245 ++++++++++++------ backend/src/objects/circle-physical.ts | 68 ++--- backend/src/objects/lamp-physical.ts | 6 +- .../{stone-physical.ts => planet-physical.ts} | 61 ++++- backend/src/objects/projectile-physical.ts | 24 +- backend/src/objects/spring.ts | 37 --- .../physics/containers/dynamic-physical.ts | 8 - .../physics/containers/physical-container.ts | 10 +- .../src/physics/containers/static-physical.ts | 7 - .../physics/functions/apply-spring-force.ts | 24 ++ backend/src/physics/functions/evaluate-sdf.ts | 7 + .../physics/functions/force-at-position.ts | 9 + .../functions/get-bounding-box-of-circle.ts | 10 + .../functions/is-circle-intersecting.ts | 8 + .../physics/{ => functions}/move-circle.ts | 46 ++-- .../src/physics/physicals/dynamic-physical.ts | 6 + .../physical-base.ts} | 4 +- backend/src/physics/physicals/physical.ts | 4 + .../physics/physicals/reacts-to-collision.ts | 8 + .../src/physics/physicals/static-physical.ts | 10 + backend/tsconfig.json | 17 ++ frontend/src/index.ts | 6 +- .../commands/generators/keyboard-listener.ts | 2 +- .../commands/generators/touch-listener.ts | 4 +- frontend/src/scripts/game.ts | 10 +- frontend/src/scripts/objects/camera.ts | 2 +- .../objects/{stone-view.ts => planet-view.ts} | 9 +- .../src/scripts/objects/projectile-view.ts | 5 +- frontend/src/scripts/shapes/blob-shape.ts | 34 +-- frontend/src/scripts/shapes/circle.ts | 3 + package.json | 2 +- shared/src/commands/types/move-action.ts | 7 +- shared/src/helper/rotate-minus-90-deg.ts | 3 + shared/src/main.ts | 3 +- .../types/{stone-base.ts => planet-base.ts} | 2 +- shared/src/settings.ts | 33 +-- tsconfig.json | 3 +- 41 files changed, 511 insertions(+), 334 deletions(-) create mode 100644 backend/src/helper/interpolate-angles.ts rename backend/src/objects/{stone-physical.ts => planet-physical.ts} (52%) delete mode 100644 backend/src/objects/spring.ts delete mode 100644 backend/src/physics/containers/dynamic-physical.ts delete mode 100644 backend/src/physics/containers/static-physical.ts create mode 100644 backend/src/physics/functions/apply-spring-force.ts create mode 100644 backend/src/physics/functions/evaluate-sdf.ts create mode 100644 backend/src/physics/functions/force-at-position.ts create mode 100644 backend/src/physics/functions/get-bounding-box-of-circle.ts create mode 100644 backend/src/physics/functions/is-circle-intersecting.ts rename backend/src/physics/{ => functions}/move-circle.ts (50%) create mode 100644 backend/src/physics/physicals/dynamic-physical.ts rename backend/src/physics/{physical.ts => physicals/physical-base.ts} (70%) create mode 100644 backend/src/physics/physicals/physical.ts create mode 100644 backend/src/physics/physicals/reacts-to-collision.ts create mode 100644 backend/src/physics/physicals/static-physical.ts create mode 100644 backend/tsconfig.json rename frontend/src/scripts/objects/{stone-view.ts => planet-view.ts} (66%) create mode 100644 frontend/src/scripts/shapes/circle.ts create mode 100644 shared/src/helper/rotate-minus-90-deg.ts rename shared/src/objects/types/{stone-base.ts => planet-base.ts} (89%) diff --git a/.gitignore b/.gitignore index 713f044..bbc4e21 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ lib node_modules package-lock.json .firebase +lerna-debug.log diff --git a/backend/src/helper/interpolate-angles.ts b/backend/src/helper/interpolate-angles.ts new file mode 100644 index 0000000..13cf942 --- /dev/null +++ b/backend/src/helper/interpolate-angles.ts @@ -0,0 +1,9 @@ +const shortAngleDist = (a0: number, a1: number): number => { + const max = Math.PI * 2; + const da = (a1 - a0) % max; + return ((2 * da) % max) - da; +}; + +export const interpolateAngles = (a0: number, a1: number, t: number) => { + return a0 + shortAngleDist(a0, a1) * t; +}; diff --git a/backend/src/main.ts b/backend/src/main.ts index 9e45d9e..c2adba2 100644 --- a/backend/src/main.ts +++ b/backend/src/main.ts @@ -20,7 +20,7 @@ glMatrix.setMatrixArrayType(Array); applyArrayPlugins(); -Random.seed = 42; +Random.seed = 44; const objects = new PhysicalContainer(); createDungeon(objects); @@ -94,8 +94,8 @@ const handlePhysics = () => { console.log(players.map((p) => p.latency)); } - objects.stepObjects(delta); - players.forEach((p) => p.step(delta)); + objects.stepObjects(delta / 1000); + players.forEach((p) => p.step(delta / 1000)); const physicsDelta = deltaTimeCalculator.getDeltaTimeInMilliseconds(); deltas.push(physicsDelta); diff --git a/backend/src/map/create-dungeon.ts b/backend/src/map/create-dungeon.ts index 989771f..f7475f8 100644 --- a/backend/src/map/create-dungeon.ts +++ b/backend/src/map/create-dungeon.ts @@ -1,36 +1,35 @@ import { vec2, vec3 } from 'gl-matrix'; -import { last, Random, settings } from 'shared'; +import { Random, settings } from 'shared'; import { LampPhysical } from '../objects/lamp-physical'; -import { StonePhysical } from '../objects/stone-physical'; +import { PlanetPhysical } from '../objects/planet-physical'; import { PhysicalContainer } from '../physics/containers/physical-container'; -import { Physical } from '../physics/physical'; +import { evaluateSdf } from '../physics/functions/evaluate-sdf'; +import { Physical } from '../physics/physicals/physical'; export const createDungeon = (objectContainer: PhysicalContainer) => { - const width = 100000; - const height = 10000; const objects: Array = []; const lights: Array = []; - let previousEnd = vec2.fromValues(-width / 2, 0); - while (previousEnd.x < width / 2) { - const { stone, end } = createFloorElement(previousEnd); - objects.push(stone); - previousEnd = end; - } - const calculateDistanceField = (target: vec2): number => - objects.reduce((min, i) => (min = Math.min(min, i.distance(target))), 1000); + const worldSize = vec2.length( + vec2.fromValues( + settings.worldTopEdge - settings.worldBottomEdge, + settings.worldRightEdge - settings.worldLeftEdge, + ), + ); + + for (let i = 0; i < worldSize / 400; i++) { + console.log('planet', i); - for (let i = 0; i < 400; i++) { let position: vec2; do { position = vec2.fromValues( - Random.getRandomInRange(-width / 2, width / 2), - Random.getRandomInRange(0, height), + Random.getRandomInRange(settings.worldLeftEdge, settings.worldRightEdge), + Random.getRandomInRange(settings.worldBottomEdge, settings.worldTopEdge), ); } while ( - calculateDistanceField(position) < 800 || - calculateDistanceField(position) > 2000 + evaluateSdf(position, objects) < 800 || + evaluateSdf(position, objects) > 2500 ); objects.push( @@ -38,27 +37,22 @@ export const createDungeon = (objectContainer: PhysicalContainer) => { position, Random.getRandomInRange(300, 800), Random.getRandomInRange(300, 800), - Random.getRandomInRange(10, 40), + Random.getRandomInRange(20, 40), ), ); } - let tryCount = 0; - lightGeneration: for (let i = 0; i < 300; i++) { - console.log(i); + for (let i = 0; i < worldSize / 350; i++) { + console.log('light', i); let position: vec2; do { position = vec2.fromValues( - Random.getRandomInRange(-width / 2, width / 2), - Random.getRandomInRange(-1000, height), + Random.getRandomInRange(settings.worldLeftEdge, settings.worldRightEdge), + Random.getRandomInRange(settings.worldBottomEdge, settings.worldTopEdge), ); - - if (tryCount++ > 1e4) { - break lightGeneration; - } } while ( - calculateDistanceField(position) < 200 || - lights.find((l) => l.distance(position) < 1200) + evaluateSdf(position, objects) < 200 || + lights.find((l) => l.distance(position) < 1800) ); lights.push( new LampPhysical( @@ -84,7 +78,7 @@ const createBlob = ( width: number, height: number, randomness: number, -): StonePhysical => { +): PlanetPhysical => { const vertices = []; for (let i = 0; i < settings.polygonEdgeCount; i++) { @@ -99,29 +93,5 @@ const createBlob = ( ), ); } - return new StonePhysical(vertices); -}; - -const createFloorElement = ( - start: vec2, -): { - stone: StonePhysical; - end: vec2; -} => { - const vertices: Array = [vec2.fromValues(start.x, -10000), start]; - - let previousX = start.x; - let previousY = start.y; - for (let i = 0; i < settings.polygonEdgeCount - 3; i++) { - previousX += Random.getRandomInRange(200, 800); - previousY += Random.getRandomInRange(-100, 100); - vertices.push(vec2.fromValues(previousX, previousY)); - } - - const end = last(vertices)!; - vertices.push(vec2.fromValues(end.x, -10000)); - return { - stone: new StonePhysical(vertices), - end, - }; + return new PlanetPhysical(vertices); }; diff --git a/backend/src/objects/character-physical.ts b/backend/src/objects/character-physical.ts index 484fafe..a7c8711 100644 --- a/backend/src/objects/character-physical.ts +++ b/backend/src/objects/character-physical.ts @@ -8,20 +8,70 @@ import { clamp, last, GameObject, + Circle, } from 'shared'; -import { DynamicPhysical } from '../physics/conatiners/dynamic-physical'; +import { DynamicPhysical } from '../physics/physicals/dynamic-physical'; import { CirclePhysical } from './circle-physical'; import { PhysicalContainer } from '../physics/containers/physical-container'; -import { Spring } from './spring'; import { BoundingBoxBase } from '../physics/bounding-boxes/bounding-box-base'; import { ProjectilePhysical } from './projectile-physical'; +import { interpolateAngles } from '../helper/interpolate-angles'; +import { forceAtPosition } from '../physics/functions/force-at-position'; +import { getBoundingBoxOfCircle } from '../physics/functions/get-bounding-box-of-circle'; +import { PlanetPhysical } from './planet-physical'; +import { ReactsToCollision } from '../physics/physicals/reacts-to-collision'; @serializesTo(CharacterBase) -export class CharacterPhysical extends CharacterBase implements DynamicPhysical { +export class CharacterPhysical + extends CharacterBase + implements DynamicPhysical, ReactsToCollision { public readonly canCollide = true; public readonly canMove = true; + + private static readonly headRadius = 50; + private static readonly feetRadius = 20; + // offsets are meassured from (0, 0) + private static readonly desiredHeadOffset = vec2.fromValues(0, 65); + private static readonly desiredLeftFootOffset = vec2.fromValues(-20, 0); + private static readonly desiredRightFootOffset = vec2.fromValues(20, 0); + private static readonly centerOfMass = vec2.scale( + vec2.create(), + vec2.add( + vec2.create(), + vec2.add( + vec2.create(), + CharacterPhysical.desiredHeadOffset, + CharacterPhysical.desiredLeftFootOffset, + ), + CharacterPhysical.desiredRightFootOffset, + ), + 1 / 3, + ); + + private static readonly headOffset = vec2.subtract( + vec2.create(), + CharacterPhysical.desiredHeadOffset, + CharacterPhysical.centerOfMass, + ); + private static readonly leftFootOffset = vec2.subtract( + vec2.create(), + CharacterPhysical.desiredLeftFootOffset, + CharacterPhysical.centerOfMass, + ); + private static readonly rightFootOffset = vec2.subtract( + vec2.create(), + CharacterPhysical.desiredRightFootOffset, + CharacterPhysical.centerOfMass, + ); + + public static readonly boundRadius = + (CharacterPhysical.headRadius + CharacterPhysical.feetRadius * 2) * 2; + private isDestroyed = false; - private jumpEnergyLeft = settings.defaultJumpEnergy; + private direction = 0; + private currentPlanet?: PlanetPhysical; + private lastMovementWasRelative = false; + private secondsSinceOnSurface = 1000; public head: CirclePhysical; public leftFoot: CirclePhysical; @@ -29,37 +79,31 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical public bound: CirclePhysical; private movementActions: Array = []; - private lastMovementAction: MoveActionCommand = new MoveActionCommand(vec2.create()); - - public handleMovementAction(c: MoveActionCommand) { - this.movementActions.push(c); - } - - private static readonly headOffset = vec2.fromValues(0, 40); - private static readonly headRadius = 50; - private static readonly feetRadius = 20; - private static readonly leftFootOffset = vec2.fromValues(-20, -35); - private static readonly rightFootOffset = vec2.fromValues(20, -35); + private lastMovementAction: MoveActionCommand = new MoveActionCommand( + vec2.create(), + false, + ); constructor( public readonly colorIndex: number, private readonly container: PhysicalContainer, + startPosition: vec2, ) { super(id(), colorIndex); this.head = new CirclePhysical( - vec2.clone(CharacterPhysical.headOffset), + vec2.add(vec2.create(), startPosition, CharacterPhysical.headOffset), CharacterPhysical.headRadius, this, container, ); this.leftFoot = new CirclePhysical( - vec2.clone(CharacterPhysical.leftFootOffset), + vec2.add(vec2.create(), startPosition, CharacterPhysical.leftFootOffset), CharacterPhysical.feetRadius, this, container, ); this.rightFoot = new CirclePhysical( - vec2.clone(CharacterPhysical.rightFootOffset), + vec2.add(vec2.create(), startPosition, CharacterPhysical.rightFootOffset), CharacterPhysical.feetRadius, this, container, @@ -70,12 +114,16 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical this.bound = new CirclePhysical( vec2.create(), - (CharacterPhysical.headRadius + CharacterPhysical.feetRadius * 2) * 2, + CharacterPhysical.boundRadius, this, container, ); } + public handleMovementAction(c: MoveActionCommand) { + this.movementActions.push(c); + } + public onCollision(other: GameObject) { if (other instanceof ProjectilePhysical) { other.destroy(); @@ -110,7 +158,7 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical ); } - private sumAndResetMovementActions(): vec2 { + private averageAndResetMovementActions(): vec2 { let direction: vec2; if (this.movementActions.length === 0) { direction = vec2.clone(this.lastMovementAction.direction); @@ -122,6 +170,9 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical vec2.scale(direction, direction, 1 / this.movementActions.length); + this.lastMovementWasRelative = + this.movementActions.find((a) => a.isCharacterRelative) !== undefined; + this.lastMovementAction = last(this.movementActions)!; this.movementActions = []; } @@ -129,82 +180,104 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical return direction; } - public step(deltaTimeInMiliseconds: number) { - const deltaTime = deltaTimeInMiliseconds / 1000; - const direction = this.sumAndResetMovementActions(); - const feetAirborne = this.leftFoot.isAirborne && this.rightFoot.isAirborne; - const isAirborne = feetAirborne && this.head.isAirborne; - this.jumpEnergyLeft += isAirborne ? -deltaTime : deltaTime; - this.jumpEnergyLeft = clamp(this.jumpEnergyLeft, 0, settings.defaultJumpEnergy); + public step(deltaTime: number) { + if ((this.secondsSinceOnSurface += deltaTime) > 1) { + this.currentPlanet = undefined; + } - const xMax = deltaTime * settings.maxAccelerationX; - const yMax = this.jumpEnergyLeft > 0 ? settings.maxAccelerationY : 0; - const movementForce = vec2.multiply( - direction, - direction, - vec2.fromValues(xMax, yMax), + const intersectingWithForcefield = this.container.findIntersecting( + getBoundingBoxOfCircle( + new Circle( + this.center, + CharacterPhysical.boundRadius + settings.maxGravityDistance, + ), + ), ); + const actualGravity = forceAtPosition(this.center, intersectingWithForcefield); - Spring.step( - this.leftFoot, - this.rightFoot, - vec2.distance(CharacterPhysical.leftFootOffset, CharacterPhysical.rightFootOffset), - 300, - deltaTime, - ); + const direction = this.averageAndResetMovementActions(); + const movementForce = vec2.scale(direction, direction, settings.maxAcceleration); + + if (!this.currentPlanet) { + this.applyForce(this.leftFoot, actualGravity, deltaTime); + this.applyForce(this.rightFoot, actualGravity, deltaTime); + + const sumForce = vec2.subtract(vec2.create(), actualGravity, movementForce); + + this.setDirection( + vec2.length(sumForce) === 0 ? vec2.fromValues(0, -1) : sumForce, + deltaTime, + ); + } else { + const leftFootGravity = this.currentPlanet!.getForce(this.leftFoot.center); + const rightFootGravity = this.currentPlanet!.getForce(this.rightFoot.center); + if (movementForce.y > settings.maxAcceleration / 4) { + vec2.scale(leftFootGravity, leftFootGravity, 0.35); + vec2.scale(rightFootGravity, rightFootGravity, 0.35); + } + this.applyForce(this.leftFoot, leftFootGravity, deltaTime); + this.applyForce(this.rightFoot, rightFootGravity, deltaTime); + + if (this.lastMovementWasRelative) { + vec2.rotate(movementForce, movementForce, vec2.create(), this.direction); + } + + const headGravity = this.currentPlanet!.getForce(this.head.center); + + if (vec2.length(headGravity) < vec2.length(actualGravity) / 2) { + this.currentPlanet = undefined; + } + this.setDirection(headGravity, deltaTime); + } - this.applyForce(this.head, movementForce, deltaTime); this.applyForce(this.leftFoot, movementForce, deltaTime); this.applyForce(this.rightFoot, movementForce, deltaTime); - if (feetAirborne) { - this.applyForce(this.head, settings.gravitationalForce, deltaTime); + this.stepBodyPart(this.leftFoot, deltaTime); + this.stepBodyPart(this.rightFoot, deltaTime); + this.keepPosture(); + } + + private setDirection(direction: vec2, deltaTime: number) { + this.direction = interpolateAngles( + this.direction, + Math.atan2(direction.y, direction.x) + Math.PI / 2, + Math.pow(4, deltaTime), + ); + } + + private keepPosture() { + const bodyCenter = vec2.add(vec2.create(), this.head.center, this.leftFoot.center); + vec2.add(bodyCenter, bodyCenter, this.rightFoot.center); + vec2.scale(bodyCenter, bodyCenter, 1 / 3); + this.springMove(this.leftFoot, bodyCenter, CharacterPhysical.leftFootOffset); + this.springMove(this.rightFoot, bodyCenter, CharacterPhysical.rightFootOffset); + this.springMove(this.head, bodyCenter, CharacterPhysical.headOffset); + } + + private springMove(object: CirclePhysical, center: vec2, offset: vec2) { + // todo: make time-independent + const springConstant = 0.35; + + const desiredPosition = vec2.add(vec2.create(), center, offset); + vec2.rotate(desiredPosition, desiredPosition, center, this.direction); + const positionDelta = vec2.subtract(desiredPosition, desiredPosition, object.center); + vec2.scale(positionDelta, positionDelta, springConstant); + const hitObject = object.tryMove(positionDelta); + + if (hitObject instanceof PlanetPhysical) { + this.secondsSinceOnSurface = 0; + this.currentPlanet = hitObject; } - this.applyForce(this.leftFoot, settings.gravitationalForce, deltaTime); - this.applyForce(this.rightFoot, settings.gravitationalForce, deltaTime); + } - this.head.step2(deltaTime); - this.leftFoot.step2(deltaTime); - this.rightFoot.step2(deltaTime); + private stepBodyPart(part: CirclePhysical, deltaTime: number) { + const hitObject = part.step2(deltaTime); - let sumBody = vec2.add(vec2.create(), this.head.center, this.leftFoot.center); - vec2.add(sumBody, sumBody, this.rightFoot.center); - vec2.scale(sumBody, sumBody, 1 / 3); - - const headPosition = vec2.add(vec2.create(), sumBody, CharacterPhysical.headOffset); - const headDelta = vec2.subtract(headPosition, headPosition, this.head.center); - vec2.scale(headDelta, headDelta, 0.5); - this.head.tryMove(headDelta); - - sumBody = vec2.add(vec2.create(), this.head.center, this.leftFoot.center); - vec2.add(sumBody, sumBody, this.rightFoot.center); - vec2.scale(sumBody, sumBody, 1 / 3); - - const leftFootPosition = vec2.add( - vec2.create(), - sumBody, - CharacterPhysical.leftFootOffset, - ); - const leftFootDelta = vec2.subtract( - leftFootPosition, - leftFootPosition, - this.leftFoot.center, - ); - vec2.scale(leftFootDelta, leftFootDelta, 1); - this.leftFoot.tryMove(leftFootDelta); - - const rightFootPosition = vec2.add( - vec2.create(), - sumBody, - CharacterPhysical.rightFootOffset, - ); - const rightFootDelta = vec2.subtract( - rightFootPosition, - rightFootPosition, - this.rightFoot.center, - ); - vec2.scale(rightFootDelta, rightFootDelta, 1); - this.rightFoot.tryMove(rightFootDelta); + if (hitObject instanceof PlanetPhysical) { + this.secondsSinceOnSurface = 0; + this.currentPlanet = hitObject; + } } public applyForce(circle: CirclePhysical, force: vec2, timeInSeconds: number) { diff --git a/backend/src/objects/circle-physical.ts b/backend/src/objects/circle-physical.ts index 48a019e..daf6191 100644 --- a/backend/src/objects/circle-physical.ts +++ b/backend/src/objects/circle-physical.ts @@ -1,31 +1,28 @@ import { vec2 } from 'gl-matrix'; import { Circle, GameObject, serializesTo, settings } from 'shared'; -import { Physical } from '../physics/physical'; - +import { PhysicalBase } from '../physics/physicals/physical-base'; import { BoundingBox } from '../physics/bounding-boxes/bounding-box'; import { BoundingBoxBase } from '../physics/bounding-boxes/bounding-box-base'; -import { moveCircle } from '../physics/move-circle'; +import { moveCircle } from '../physics/functions/move-circle'; import { PhysicalContainer } from '../physics/containers/physical-container'; -import { DynamicPhysical } from '../physics/containers/dynamic-physical'; +import { DynamicPhysical } from '../physics/physicals/dynamic-physical'; +import { + ReactsToCollision, + reactsToCollision, +} from '../physics/physicals/reacts-to-collision'; @serializesTo(Circle) -export class CirclePhysical implements Circle, DynamicPhysical { +export class CirclePhysical implements Circle, DynamicPhysical, ReactsToCollision { readonly canCollide = true; readonly canMove = true; - private _isAirborne = true; public velocity = vec2.create(); - - public get isAirborne(): boolean { - return this._isAirborne; - } - private _boundingBox: BoundingBox; constructor( private _center: vec2, private _radius: number, - public owner: DynamicPhysical, + public owner: GameObject, private readonly container: PhysicalContainer, private restitution = 0, ) { @@ -47,7 +44,9 @@ export class CirclePhysical implements Circle, DynamicPhysical { } public onCollision(other: GameObject) { - this.owner.onCollision(other); + if (reactsToCollision(this.owner)) { + this.owner.onCollision(other); + } } public get gameObject(): GameObject { @@ -71,11 +70,11 @@ export class CirclePhysical implements Circle, DynamicPhysical { return vec2.distance(target.center, this.center) - this.radius - target.radius; } - public areIntersecting(other: Physical): boolean { + public areIntersecting(other: PhysicalBase): boolean { return other.distance(this.center) < this.radius; } - public isInside(other: Physical): boolean { + public isInside(other: PhysicalBase): boolean { return other.distance(this.center) < -this.radius; } @@ -94,9 +93,9 @@ export class CirclePhysical implements Circle, DynamicPhysical { ); } - public step(deltaTime: number) {} + public step(_: number) {} - public step2(deltaTimeInSeconds: number): boolean { + public step2(deltaTimeInSeconds: number): GameObject | undefined { vec2.scale( this.velocity, this.velocity, @@ -108,7 +107,7 @@ export class CirclePhysical implements Circle, DynamicPhysical { const stepCount = Math.ceil(vec2.length(delta) / settings.physicsMaxStep); vec2.scale(delta, delta, 1 / stepCount); - let wasHit = false; + let lastHit: GameObject | undefined; for (let i = 0; i < stepCount; i++) { const distance = vec2.scale( @@ -120,7 +119,11 @@ export class CirclePhysical implements Circle, DynamicPhysical { const intersecting = this.container.findIntersecting(this.boundingBox); this.radius -= vec2.length(distance); - const { normal, hitSurface } = moveCircle(this, vec2.clone(distance), intersecting); + const { normal, hitSurface, hitObject } = moveCircle( + this, + vec2.clone(distance), + intersecting, + ); if (hitSurface) { vec2.subtract( @@ -133,40 +136,37 @@ export class CirclePhysical implements Circle, DynamicPhysical { ), ); - wasHit = true; + lastHit = hitObject; } } - this._isAirborne = !wasHit; - return wasHit; + return lastHit; } - public tryMove(delta: vec2) { + public tryMove(delta: vec2): GameObject | undefined { const stepCount = Math.ceil(vec2.length(delta) / settings.physicsMaxStep); vec2.scale(delta, delta, 1 / stepCount); - let wasHit = false; + let lastHit: GameObject | undefined; for (let i = 0; i < stepCount; i++) { this.radius += vec2.length(delta); const intersecting = this.container.findIntersecting(this.boundingBox); this.radius -= vec2.length(delta); - const { normal, hitSurface } = moveCircle(this, vec2.clone(delta), intersecting); + const { tangent, hitSurface, hitObject } = moveCircle( + this, + vec2.clone(delta), + intersecting, + ); if (hitSurface) { - vec2.subtract( - delta, - delta, - vec2.scale(normal!, normal!, vec2.dot(normal!, delta)), - ); - - wasHit = true; + delta = vec2.scale(delta, tangent!, vec2.length(delta)); + lastHit = hitObject; } } - this._isAirborne = !wasHit; - return wasHit; + return lastHit; } public toArray(): Array { diff --git a/backend/src/objects/lamp-physical.ts b/backend/src/objects/lamp-physical.ts index 2ca2dca..b10a1cb 100644 --- a/backend/src/objects/lamp-physical.ts +++ b/backend/src/objects/lamp-physical.ts @@ -2,7 +2,7 @@ import { vec2, vec3 } from 'gl-matrix'; import { LampBase, settings, id, serializesTo } from 'shared'; import { ImmutableBoundingBox } from '../physics/bounding-boxes/immutable-bounding-box'; -import { StaticPhysical } from '../physics/containers/static-physical'; +import { StaticPhysical } from '../physics/physicals/static-physical'; @serializesTo(LampBase) export class LampPhysical extends LampBase implements StaticPhysical { @@ -32,6 +32,10 @@ export class LampPhysical extends LampBase implements StaticPhysical { return this; } + public getForce(_: vec2): vec2 { + return vec2.create(); + } + public distance(target: vec2): number { return vec2.distance(this.center, target); } diff --git a/backend/src/objects/stone-physical.ts b/backend/src/objects/planet-physical.ts similarity index 52% rename from backend/src/objects/stone-physical.ts rename to backend/src/objects/planet-physical.ts index 743c3ac..a53b053 100644 --- a/backend/src/objects/stone-physical.ts +++ b/backend/src/objects/planet-physical.ts @@ -1,18 +1,31 @@ import { vec2 } from 'gl-matrix'; -import { clamp01, id, serializesTo, StoneBase } from 'shared'; + +import { + clamp, + clamp01, + id, + rotate90Deg, + rotateMinus90Deg, + serializesTo, + settings, + PlanetBase, +} from 'shared'; import { ImmutableBoundingBox } from '../physics/bounding-boxes/immutable-bounding-box'; -import { StaticPhysical } from '../physics/containers/static-physical'; +import { StaticPhysical } from '../physics/physicals/static-physical'; -@serializesTo(StoneBase) -export class StonePhysical extends StoneBase implements StaticPhysical { +@serializesTo(PlanetBase) +export class PlanetPhysical extends PlanetBase implements StaticPhysical { public readonly canCollide = true; public readonly canMove = false; + private center: vec2; private _boundingBox?: ImmutableBoundingBox; constructor(vertices: Array) { super(id(), vertices); + this.center = vertices.reduce((sum, v) => vec2.add(sum, sum, v), vec2.create()); + vec2.scale(this.center, this.center, 1 / vertices.length); } public distance(target: vec2): number { @@ -72,6 +85,46 @@ export class StonePhysical extends StoneBase implements StaticPhysical { return this._boundingBox; } + public getForce(position: vec2): vec2 { + const height = this.distance(position); + + let closestIndex = 0; + this.vertices.forEach((v, i) => { + if ( + vec2.distance(position, v) < vec2.distance(position, this.vertices[closestIndex]) + ) { + closestIndex = i; + } + }); + + const afterClosest = this.vertices[(closestIndex + 1) % this.vertices.length]; + const closest = this.vertices[closestIndex]; + const beforeClosest = this.vertices[ + (closestIndex - 1 + this.vertices.length) % this.vertices.length + ]; + + const diff = vec2.subtract(vec2.create(), position, closest); + const edge1 = vec2.subtract(vec2.create(), afterClosest, closest); + const edge2 = vec2.subtract(vec2.create(), closest, beforeClosest); + const normalizedDiff = vec2.normalize(vec2.create(), diff); + + const currentEdge = + vec2.dot(vec2.normalize(vec2.create(), rotate90Deg(edge1)), normalizedDiff) > + vec2.dot(vec2.normalize(vec2.create(), rotate90Deg(edge2)), normalizedDiff) + ? edge1 + : edge2; + + vec2.normalize(currentEdge, currentEdge); + const normal = rotateMinus90Deg(currentEdge); + + const scale = clamp( + settings.maxGravityQ * ((settings.maxGravityDistance / height) ** 3 - 1), + 0, + settings.maxGravityStrength, + ); + return vec2.scale(normal, normal, scale); + } + public get gameObject(): this { return this; } diff --git a/backend/src/objects/projectile-physical.ts b/backend/src/objects/projectile-physical.ts index 7ff2824..fb64343 100644 --- a/backend/src/objects/projectile-physical.ts +++ b/backend/src/objects/projectile-physical.ts @@ -2,11 +2,15 @@ import { vec2 } from 'gl-matrix'; import { id, settings, serializesTo, ProjectileBase, GameObject } from 'shared'; import { ImmutableBoundingBox } from '../physics/bounding-boxes/immutable-bounding-box'; import { CirclePhysical } from './circle-physical'; -import { DynamicPhysical } from '../physics/conatiners/dynamic-physical'; +import { DynamicPhysical } from '../physics/physicals/dynamic-physical'; import { PhysicalContainer } from '../physics/containers/physical-container'; +import { PlanetPhysical } from './planet-physical'; +import { ReactsToCollision } from '../physics/physicals/reacts-to-collision'; @serializesTo(ProjectileBase) -export class ProjectilePhysical extends ProjectileBase implements DynamicPhysical { +export class ProjectilePhysical + extends ProjectileBase + implements DynamicPhysical, ReactsToCollision { public readonly canCollide = true; public readonly canMove = true; private isDestroyed = false; @@ -55,14 +59,16 @@ export class ProjectilePhysical extends ProjectileBase implements DynamicPhysica } } - public step(deltaTimeInMiliseconds: number) { - const deltaTime = deltaTimeInMiliseconds / 1000; + public step(deltaTime: number) { + const gravity = vec2.create(); + const intersecting = this.container.findIntersecting(this.boundingBox); + intersecting.forEach((i) => { + if (i instanceof PlanetPhysical) { + vec2.add(gravity, gravity, i.getForce(this.center)); + } + }); - vec2.add( - this.velocity, - this.velocity, - vec2.scale(vec2.create(), settings.gravitationalForce, deltaTime), - ); + vec2.add(this.velocity, this.velocity, vec2.scale(vec2.create(), gravity, deltaTime)); this.object.velocity = this.velocity; this.object.step2(deltaTime); diff --git a/backend/src/objects/spring.ts b/backend/src/objects/spring.ts deleted file mode 100644 index 91f121b..0000000 --- a/backend/src/objects/spring.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { vec2 } from 'gl-matrix'; -import { Circle } from 'shared'; -import { CirclePhysical } from './circle-physical'; - -export class Spring { - constructor( - private a: CirclePhysical | Circle, - private b: CirclePhysical | Circle, - private distance: number, - private strength: number, - ) {} - - public step(deltaTimeInSeconds: number) { - Spring.step(this.a, this.b, this.distance, this.strength, deltaTimeInSeconds); - } - - public static step( - a: CirclePhysical | Circle, - b: CirclePhysical | Circle, - distance: number, - strength: number, - deltaTimeInSeconds: number, - ) { - const length = vec2.dist(a.center, b.center) - distance; - - const abDirection = vec2.subtract(vec2.create(), b.center, a.center); - vec2.normalize(abDirection, abDirection); - const force = vec2.scale(abDirection, abDirection, strength * length); - if (a instanceof CirclePhysical) { - a.applyForce(force, deltaTimeInSeconds); - } - if (b instanceof CirclePhysical) { - vec2.scale(force, force, -1); - b.applyForce(force, deltaTimeInSeconds); - } - } -} diff --git a/backend/src/physics/containers/dynamic-physical.ts b/backend/src/physics/containers/dynamic-physical.ts deleted file mode 100644 index fd0e066..0000000 --- a/backend/src/physics/containers/dynamic-physical.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { GameObject } from 'shared'; -import { Physical } from '../physical'; - -export interface DynamicPhysical extends Physical { - readonly canMove: true; - step(deltaTimeInMilliseconds: number): void; - onCollision(other: GameObject): void; -} diff --git a/backend/src/physics/containers/physical-container.ts b/backend/src/physics/containers/physical-container.ts index 4d1e6f4..80ad925 100644 --- a/backend/src/physics/containers/physical-container.ts +++ b/backend/src/physics/containers/physical-container.ts @@ -3,9 +3,9 @@ import { BoundingBoxBase } from '../bounding-boxes/bounding-box-base'; import { BoundingBoxList } from './bounding-box-list'; import { BoundingBoxTree } from './bounding-box-tree'; -import { Physical } from '../physical'; -import { StaticPhysical } from './static-physical'; -import { DynamicPhysical } from './dynamic-physical'; +import { Physical } from '../physicals/physical'; +import { StaticPhysical } from '../physicals/static-physical'; +import { DynamicPhysical } from '../physicals/dynamic-physical'; export class PhysicalContainer { private isTreeInitialized = false; @@ -34,8 +34,8 @@ export class PhysicalContainer { this.dynamicBoundingBoxes.remove(object); } - public stepObjects(deltaTimeInMilliseconds: number) { - this.dynamicBoundingBoxes.forEach((o) => o.step(deltaTimeInMilliseconds)); + public stepObjects(deltaTime: number) { + this.dynamicBoundingBoxes.forEach((o) => o.step(deltaTime)); } public findIntersecting(box: BoundingBoxBase): Array { diff --git a/backend/src/physics/containers/static-physical.ts b/backend/src/physics/containers/static-physical.ts deleted file mode 100644 index 47e8de8..0000000 --- a/backend/src/physics/containers/static-physical.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Physical } from '../physical'; -import { ImmutableBoundingBox } from '../bounding-boxes/immutable-bounding-box'; - -export interface StaticPhysical extends Physical { - readonly canMove: false; - readonly boundingBox: ImmutableBoundingBox; -} diff --git a/backend/src/physics/functions/apply-spring-force.ts b/backend/src/physics/functions/apply-spring-force.ts new file mode 100644 index 0000000..e2d3db3 --- /dev/null +++ b/backend/src/physics/functions/apply-spring-force.ts @@ -0,0 +1,24 @@ +import { vec2 } from 'gl-matrix'; +import { Circle } from 'shared'; +import { CirclePhysical } from '../../objects/circle-physical'; + +export const applySpringForce = ( + a: CirclePhysical | Circle, + b: CirclePhysical | Circle, + distance: number, + strength: number, + deltaTimeInSeconds: number, +) => { + const length = vec2.dist(a.center, b.center) - distance; + + const abDirection = vec2.subtract(vec2.create(), b.center, a.center); + vec2.normalize(abDirection, abDirection); + const force = vec2.scale(abDirection, abDirection, strength * length); + if (a instanceof CirclePhysical) { + a.applyForce(force, deltaTimeInSeconds); + } + if (b instanceof CirclePhysical) { + vec2.scale(force, force, -1); + b.applyForce(force, deltaTimeInSeconds); + } +}; diff --git a/backend/src/physics/functions/evaluate-sdf.ts b/backend/src/physics/functions/evaluate-sdf.ts new file mode 100644 index 0000000..69d0d6d --- /dev/null +++ b/backend/src/physics/functions/evaluate-sdf.ts @@ -0,0 +1,7 @@ +import { vec2 } from 'gl-matrix'; +import { PhysicalBase } from '../physicals/physical-base'; + +export const evaluateSdf = (target: vec2, objects: Array) => + objects + .filter((i) => i.canCollide) + .reduce((min, i) => (min = Math.min(min, i.distance(target))), 1000); diff --git a/backend/src/physics/functions/force-at-position.ts b/backend/src/physics/functions/force-at-position.ts new file mode 100644 index 0000000..5eef3ab --- /dev/null +++ b/backend/src/physics/functions/force-at-position.ts @@ -0,0 +1,9 @@ +import { vec2 } from 'gl-matrix'; +import { Physical } from '../physicals/physical'; + +export const forceAtPosition = (position: vec2, objects: Array) => + objects.reduce( + (sum: vec2, o: Physical) => + !o.canMove ? vec2.add(sum, sum, o.getForce(position)) : sum, + vec2.create(), + ); diff --git a/backend/src/physics/functions/get-bounding-box-of-circle.ts b/backend/src/physics/functions/get-bounding-box-of-circle.ts new file mode 100644 index 0000000..4677bd2 --- /dev/null +++ b/backend/src/physics/functions/get-bounding-box-of-circle.ts @@ -0,0 +1,10 @@ +import { Circle } from 'shared'; +import { BoundingBoxBase } from '../bounding-boxes/bounding-box-base'; + +export const getBoundingBoxOfCircle = (circle: Circle): BoundingBoxBase => + new BoundingBoxBase( + circle.center.x - circle.radius, + circle.center.x + circle.radius, + circle.center.y - circle.radius, + circle.center.y + circle.radius, + ); diff --git a/backend/src/physics/functions/is-circle-intersecting.ts b/backend/src/physics/functions/is-circle-intersecting.ts new file mode 100644 index 0000000..3f497fa --- /dev/null +++ b/backend/src/physics/functions/is-circle-intersecting.ts @@ -0,0 +1,8 @@ +import { Circle } from 'shared'; +import { evaluateSdf } from './evaluate-sdf'; +import { PhysicalBase } from '../physicals/physical-base'; + +export const isCircleIntersecting = ( + circle: Circle, + intersectors: Array, +): boolean => evaluateSdf(circle.center, intersectors) < circle.radius; diff --git a/backend/src/physics/move-circle.ts b/backend/src/physics/functions/move-circle.ts similarity index 50% rename from backend/src/physics/move-circle.ts rename to backend/src/physics/functions/move-circle.ts index d7ef36a..9f80bd5 100644 --- a/backend/src/physics/move-circle.ts +++ b/backend/src/physics/functions/move-circle.ts @@ -1,8 +1,9 @@ import { vec2 } from 'gl-matrix'; -import { Circle, rotate90Deg } from 'shared'; -import { CirclePhysical } from '../objects/circle-physical'; -import { DynamicPhysical } from './containers/dynamic-physical'; -import { Physical } from './physical'; +import { Circle, GameObject, rotate90Deg } from 'shared'; +import { CirclePhysical } from '../../objects/circle-physical'; +import { reactsToCollision } from '../physicals/reacts-to-collision'; +import { evaluateSdf } from './evaluate-sdf'; +import { Physical } from '../physicals/physical'; export const moveCircle = ( circle: CirclePhysical, @@ -13,6 +14,7 @@ export const moveCircle = ( hitSurface: boolean; normal?: vec2; tangent?: vec2; + hitObject?: GameObject; } => { const nextCircle = new Circle(vec2.clone(circle.center), circle.radius); vec2.add(nextCircle.center, nextCircle.center, delta); @@ -21,13 +23,7 @@ export const moveCircle = ( (b) => b.gameObject !== circle.gameObject && b.canCollide, ); - const getSdfAtPoint = (point: vec2): number => { - return possibleIntersectors - .filter((i) => i.canCollide) - .reduce((min, i) => (min = Math.min(min, i.distance(point))), 1000); - }; - - const sdfAtCenter = getSdfAtPoint(nextCircle.center); + const sdfAtCenter = evaluateSdf(nextCircle.center, possibleIntersectors); if (sdfAtCenter > nextCircle.radius) { circle.center = vec2.add(circle.center, circle.center, delta); @@ -38,21 +34,26 @@ export const moveCircle = ( }; } - const intersecting = possibleIntersectors - .filter((i) => i.canCollide && i.canMove) - .find((i) => i.distance(nextCircle.center) < circle.radius); + const intersecting = possibleIntersectors.find( + (i) => i.distance(nextCircle.center) <= circle.radius, + )!; - (intersecting?.gameObject as DynamicPhysical)?.onCollision(circle.gameObject); - ((circle.gameObject as unknown) as DynamicPhysical).onCollision( - intersecting?.gameObject, - ); + if (reactsToCollision(intersecting)) { + intersecting.onCollision(circle.gameObject); + } + + if (reactsToCollision(circle)) { + circle.onCollision(intersecting.gameObject); + } const dx = - getSdfAtPoint(vec2.add(vec2.create(), nextCircle.center, vec2.fromValues(1, 0))) - - sdfAtCenter; + evaluateSdf(vec2.add(vec2.create(), nextCircle.center, vec2.fromValues(0.01, 0)), [ + intersecting, + ]) - sdfAtCenter; const dy = - getSdfAtPoint(vec2.add(vec2.create(), nextCircle.center, vec2.fromValues(0, 1))) - - sdfAtCenter; + evaluateSdf(vec2.add(vec2.create(), nextCircle.center, vec2.fromValues(0, 0.01)), [ + intersecting, + ]) - sdfAtCenter; const normal = vec2.fromValues(dx, dy); vec2.normalize(normal, normal); const rotatedNormal = rotate90Deg(normal); @@ -60,6 +61,7 @@ export const moveCircle = ( realDelta: delta, hitSurface: true, normal, + hitObject: intersecting?.gameObject, tangent: vec2.dot(rotatedNormal, delta) < 0 ? vec2.scale(rotatedNormal, rotatedNormal, -1) diff --git a/backend/src/physics/physicals/dynamic-physical.ts b/backend/src/physics/physicals/dynamic-physical.ts new file mode 100644 index 0000000..a5e03c1 --- /dev/null +++ b/backend/src/physics/physicals/dynamic-physical.ts @@ -0,0 +1,6 @@ +import { PhysicalBase } from './physical-base'; + +export interface DynamicPhysical extends PhysicalBase { + readonly canMove: true; + step(deltaTimeInMilliseconds: number): void; +} diff --git a/backend/src/physics/physical.ts b/backend/src/physics/physicals/physical-base.ts similarity index 70% rename from backend/src/physics/physical.ts rename to backend/src/physics/physicals/physical-base.ts index 962d699..3f923b6 100644 --- a/backend/src/physics/physical.ts +++ b/backend/src/physics/physicals/physical-base.ts @@ -1,8 +1,8 @@ import { vec2 } from 'gl-matrix'; import { GameObject } from 'shared'; -import { BoundingBoxBase } from './bounding-boxes/bounding-box-base'; +import { BoundingBoxBase } from '../bounding-boxes/bounding-box-base'; -export interface Physical { +export interface PhysicalBase { readonly canCollide: boolean; readonly canMove: boolean; readonly boundingBox: BoundingBoxBase; diff --git a/backend/src/physics/physicals/physical.ts b/backend/src/physics/physicals/physical.ts new file mode 100644 index 0000000..2e3189b --- /dev/null +++ b/backend/src/physics/physicals/physical.ts @@ -0,0 +1,4 @@ +import { DynamicPhysical } from './dynamic-physical'; +import { StaticPhysical } from './static-physical'; + +export type Physical = StaticPhysical | DynamicPhysical; diff --git a/backend/src/physics/physicals/reacts-to-collision.ts b/backend/src/physics/physicals/reacts-to-collision.ts new file mode 100644 index 0000000..90e880a --- /dev/null +++ b/backend/src/physics/physicals/reacts-to-collision.ts @@ -0,0 +1,8 @@ +import { GameObject } from 'shared'; + +export interface ReactsToCollision { + onCollision(other: GameObject): void; +} + +export const reactsToCollision = (a: any): a is ReactsToCollision => + a && 'onCollision' in a; diff --git a/backend/src/physics/physicals/static-physical.ts b/backend/src/physics/physicals/static-physical.ts new file mode 100644 index 0000000..e222397 --- /dev/null +++ b/backend/src/physics/physicals/static-physical.ts @@ -0,0 +1,10 @@ +import { PhysicalBase } from './physical-base'; +import { ImmutableBoundingBox } from '../bounding-boxes/immutable-bounding-box'; +import { vec2 } from 'gl-matrix'; + +export interface StaticPhysical extends PhysicalBase { + readonly canMove: false; + readonly boundingBox: ImmutableBoundingBox; + + getForce(target: vec2): vec2; +} diff --git a/backend/tsconfig.json b/backend/tsconfig.json new file mode 100644 index 0000000..d477e81 --- /dev/null +++ b/backend/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "sourceMap": true, + "declaration": true, + "declarationMap": true, + "target": "es6", + "esModuleInterop": true, + "strict": true, + "experimentalDecorators": true, + "downlevelIteration": true, + "moduleResolution": "node", + "module": "commonjs", + "composite": true, + "lib": ["dom", "es2017"] + }, + "include": ["src/**/*.ts", "src/*.ts"] +} diff --git a/frontend/src/index.ts b/frontend/src/index.ts index 315221d..b5f2bc9 100644 --- a/frontend/src/index.ts +++ b/frontend/src/index.ts @@ -1,17 +1,17 @@ import { glMatrix } from 'gl-matrix'; -import { CharacterBase, LampBase, overrideDeserialization, StoneBase } from 'shared'; +import { CharacterBase, LampBase, overrideDeserialization, PlanetBase } from 'shared'; import { ProjectileBase } from 'shared/src/objects/types/projectile-base'; import { Game } from './scripts/game'; import { CharacterView } from './scripts/objects/character-view'; import { LampView } from './scripts/objects/lamp-view'; import { ProjectileView } from './scripts/objects/projectile-view'; -import { StoneView } from './scripts/objects/stone-view'; +import { PlanetView } from './scripts/objects/planet-view'; import './styles/main.scss'; glMatrix.setMatrixArrayType(Array); overrideDeserialization(CharacterBase, CharacterView); -overrideDeserialization(StoneBase, StoneView); +overrideDeserialization(PlanetBase, PlanetView); overrideDeserialization(LampBase, LampView); overrideDeserialization(ProjectileBase, ProjectileView); diff --git a/frontend/src/scripts/commands/generators/keyboard-listener.ts b/frontend/src/scripts/commands/generators/keyboard-listener.ts index acde088..09f2c70 100644 --- a/frontend/src/scripts/commands/generators/keyboard-listener.ts +++ b/frontend/src/scripts/commands/generators/keyboard-listener.ts @@ -34,7 +34,7 @@ export class KeyboardListener extends CommandGenerator { if (vec2.squaredLength(movement) > 0) { vec2.normalize(movement, movement); } - this.sendCommandToSubcribers(new MoveActionCommand(movement)); + this.sendCommandToSubcribers(new MoveActionCommand(movement, true)); } private normalize(key: string): string { diff --git a/frontend/src/scripts/commands/generators/touch-listener.ts b/frontend/src/scripts/commands/generators/touch-listener.ts index 0fa4797..7252046 100644 --- a/frontend/src/scripts/commands/generators/touch-listener.ts +++ b/frontend/src/scripts/commands/generators/touch-listener.ts @@ -38,7 +38,7 @@ export class TouchListener extends CommandGenerator { if (vec2.squaredLength(movement) > 0) { vec2.normalize(movement, movement); - this.sendCommandToSubcribers(new MoveActionCommand(movement)); + this.sendCommandToSubcribers(new MoveActionCommand(movement, false)); } this.previousPosition = position; @@ -46,7 +46,7 @@ export class TouchListener extends CommandGenerator { target.addEventListener('touchend', (event: TouchEvent) => { event.preventDefault(); - this.sendCommandToSubcribers(new MoveActionCommand(vec2.create())); + this.sendCommandToSubcribers(new MoveActionCommand(vec2.create(), false)); }); } diff --git a/frontend/src/scripts/game.ts b/frontend/src/scripts/game.ts index 3e26d16..66bda2c 100644 --- a/frontend/src/scripts/game.ts +++ b/frontend/src/scripts/game.ts @@ -1,6 +1,5 @@ import { vec2 } from 'gl-matrix'; import { - Circle, CircleLight, compile, FilteringOptions, @@ -28,6 +27,7 @@ import { Configuration } from './config/configuration'; import { DeltaTimeCalculator } from './helper/delta-time-calculator'; import { GameObjectContainer } from './objects/game-object-container'; import { BlobShape } from './shapes/blob-shape'; +import { Circle } from './shapes/circle'; import { Polygon } from './shapes/polygon'; export class Game { @@ -74,14 +74,14 @@ export class Game { } private async setupRenderer(): Promise { - const noiseTexture = await renderNoise([256, 256], 2, 1 / 10); + const noiseTexture = await renderNoise([256, 256], 2, 1); this.renderer = await compile( this.canvas, [ { ...Polygon.descriptor, - shaderCombinationSteps: [0, 2, 6, 16, 32], + shaderCombinationSteps: [0, 2, 6, 16], }, { ...BlobShape.descriptor, @@ -89,7 +89,7 @@ export class Game { }, { ...Circle.descriptor, - shaderCombinationSteps: [0, 2, 16, 32], + shaderCombinationSteps: [0, 2, 16], }, { ...CircleLight.descriptor, @@ -115,7 +115,7 @@ export class Game { rgb(1, 1, 1), ...settings.playerColors, ], - enableHighDpiRendering: false, + enableHighDpiRendering: true, lightCutoffDistance: settings.lightCutoffDistance, textures: { noiseTexture: { diff --git a/frontend/src/scripts/objects/camera.ts b/frontend/src/scripts/objects/camera.ts index 25f88fb..437d2b0 100644 --- a/frontend/src/scripts/objects/camera.ts +++ b/frontend/src/scripts/objects/camera.ts @@ -27,7 +27,7 @@ export class Camera extends GameObject implements ViewObject { renderer.setViewArea(viewArea.topLeft, viewArea.size); renderer.setRuntimeSettings({ - backgroundColor: mixRgb( + ambientLight: mixRgb( settings.backgroundGradient[0], settings.backgroundGradient[1], (this.center.x - settings.worldLeftEdge) / diff --git a/frontend/src/scripts/objects/stone-view.ts b/frontend/src/scripts/objects/planet-view.ts similarity index 66% rename from frontend/src/scripts/objects/stone-view.ts rename to frontend/src/scripts/objects/planet-view.ts index 56d1b32..22f1263 100644 --- a/frontend/src/scripts/objects/stone-view.ts +++ b/frontend/src/scripts/objects/planet-view.ts @@ -1,11 +1,11 @@ import { vec2 } from 'gl-matrix'; import { Drawable, Renderer } from 'sdf-2d'; -import { CommandExecutors, Id, Random, StoneBase } from 'shared'; +import { CommandExecutors, Id, Random, PlanetBase } from 'shared'; import { RenderCommand } from '../commands/types/render'; import { Polygon } from '../shapes/polygon'; import { ViewObject } from './view-object'; -export class StoneView extends StoneBase implements ViewObject { +export class PlanetView extends PlanetBase implements ViewObject { private shape: Drawable; protected commandExecutors: CommandExecutors = { @@ -14,11 +14,12 @@ export class StoneView extends StoneBase implements ViewObject { constructor(id: Id, vertices: Array) { super(id, vertices); - this.shape = new Polygon(vertices, Random.getRandom()); + this.shape = new Polygon(vertices); + (this.shape as any).randomOffset = Random.getRandom(); } public step(deltaTimeInMilliseconds: number): void { - this.shape.randomOffset += deltaTimeInMilliseconds / 5000; + (this.shape as any).randomOffset += deltaTimeInMilliseconds / 4000; } public draw(renderer: Renderer): void { diff --git a/frontend/src/scripts/objects/projectile-view.ts b/frontend/src/scripts/objects/projectile-view.ts index 02aa249..8968475 100644 --- a/frontend/src/scripts/objects/projectile-view.ts +++ b/frontend/src/scripts/objects/projectile-view.ts @@ -1,10 +1,11 @@ import { vec2 } from 'gl-matrix'; -import { Circle, CircleLight, Renderer } from 'sdf-2d'; +import { CircleLight, Renderer } from 'sdf-2d'; import { Id, ProjectileBase, rgb } from 'shared'; import { ViewObject } from './view-object'; +import { Circle } from '../shapes/circle'; export class ProjectileView extends ProjectileBase implements ViewObject { - private circle: Circle; + private circle: InstanceType; private light: CircleLight; constructor(id: Id, center: vec2, radius: number) { diff --git a/frontend/src/scripts/shapes/blob-shape.ts b/frontend/src/scripts/shapes/blob-shape.ts index 0c44f0b..f79f87f 100644 --- a/frontend/src/scripts/shapes/blob-shape.ts +++ b/frontend/src/scripts/shapes/blob-shape.ts @@ -11,7 +11,7 @@ export class BlobShape extends Drawable { uniform vec2 rightFootCenters[BLOB_COUNT]; uniform float headRadii[BLOB_COUNT]; uniform float footRadii[BLOB_COUNT]; - uniform float blobColors[BLOB_COUNT]; + uniform int blobColors[BLOB_COUNT]; float blobSmoothMin(float a, float b) { @@ -24,7 +24,7 @@ export class BlobShape extends Drawable { return distance(target, circleCenter) - radius; } - float blobMinDistance(vec2 target, out float colorIndex) { + float blobMinDistance(vec2 target, out vec4 color) { float minDistance = 1000.0; for (int i = 0; i < BLOB_COUNT; i++) { @@ -40,30 +40,24 @@ export class BlobShape extends Drawable { vec2 leftEyeOffset = vec2(-headRadii[i] * 0.35, headRadii[i] * 0.2); vec2 rightEyeOffset = vec2(headRadii[i] * 0.35, headRadii[i] * 0.2); - res = max( - res, - -circleDistance(headCenters[i] + leftEyeOffset, headRadii[i] * 0.25, target) + float eyeDistance = min( + circleDistance(headCenters[i] + rightEyeOffset, headRadii[i] * 0.25, target), + circleDistance(headCenters[i] + leftEyeOffset, headRadii[i] * 0.25, target) ); - res = max( - res, - -circleDistance(headCenters[i] + rightEyeOffset, headRadii[i] * 0.25, target) - ); - - res = min( - res, - circleDistance(headCenters[i] + leftEyeOffset + vec2(0, -headRadii[i] * 0.175), headRadii[i] * 0.25, target) + eyeDistance = max( + eyeDistance, + -circleDistance(headCenters[i] + leftEyeOffset + vec2(0, -headRadii[i] * 0.175), headRadii[i] * 0.2, target) ); - res = min( - res, - circleDistance(headCenters[i] + rightEyeOffset + vec2(0, -headRadii[i] * 0.175), headRadii[i] * 0.25, target) + eyeDistance = max( + eyeDistance, + -circleDistance(headCenters[i] + rightEyeOffset + vec2(0, -headRadii[i] * 0.175), headRadii[i] * 0.2, target) ); - minDistance = min(minDistance, res); - - if (res < 0.0) { - colorIndex = blobColors[i]; + if (res < minDistance) { + minDistance = res; + color = eyeDistance < 0.0 ? vec4(1.0) : readFromPalette(blobColors[i]); } } diff --git a/frontend/src/scripts/shapes/circle.ts b/frontend/src/scripts/shapes/circle.ts new file mode 100644 index 0000000..e4f8374 --- /dev/null +++ b/frontend/src/scripts/shapes/circle.ts @@ -0,0 +1,3 @@ +import { CircleFactory } from 'sdf-2d'; + +export const Circle = CircleFactory(2); diff --git a/package.json b/package.json index 71fa50c..d9875f5 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "gl-matrix": "^3.3.0", "lerna": "^3.22.1", "prettier": "^2.0.5", - "sdf-2d": "^0.4.1", + "sdf-2d": "^0.5.2", "socket.io-client": "^2.3.1", "typescript": "^4.0.3", "uuid": "^8.2.0" diff --git a/shared/src/commands/types/move-action.ts b/shared/src/commands/types/move-action.ts index 3e49e4b..94f25b7 100644 --- a/shared/src/commands/types/move-action.ts +++ b/shared/src/commands/types/move-action.ts @@ -4,11 +4,14 @@ import { Command } from '../command'; @serializable export class MoveActionCommand extends Command { - public constructor(public readonly direction: vec2) { + public constructor( + public readonly direction: vec2, + public readonly isCharacterRelative: boolean, + ) { super(); } public toArray(): Array { - return [this.direction]; + return [this.direction, this.isCharacterRelative]; } } diff --git a/shared/src/helper/rotate-minus-90-deg.ts b/shared/src/helper/rotate-minus-90-deg.ts new file mode 100644 index 0000000..5021d64 --- /dev/null +++ b/shared/src/helper/rotate-minus-90-deg.ts @@ -0,0 +1,3 @@ +import { vec2 } from 'gl-matrix'; + +export const rotateMinus90Deg = (vec: vec2): vec2 => vec2.fromValues(vec.y, -vec.x); diff --git a/shared/src/main.ts b/shared/src/main.ts index dcdfc00..9b2d076 100644 --- a/shared/src/main.ts +++ b/shared/src/main.ts @@ -26,6 +26,7 @@ export * from './helper/mix'; export * from './helper/random'; export * from './helper/id'; export * from './helper/rotate-90-deg'; +export * from './helper/rotate-minus-90-deg'; export * from './objects/game-object'; export * from './transport/serialization/deserialize'; export * from './transport/serialization/serialize'; @@ -34,7 +35,7 @@ export * from './transport/serialization/serializable'; export * from './transport/serialization/override-deserialization'; export * from './objects/types/character-base'; export * from './objects/types/lamp-base'; -export * from './objects/types/stone-base'; +export * from './objects/types/planet-base'; export * from './objects/types/projectile-base'; export * from './settings'; export * from './transport/transport-events'; diff --git a/shared/src/objects/types/stone-base.ts b/shared/src/objects/types/planet-base.ts similarity index 89% rename from shared/src/objects/types/stone-base.ts rename to shared/src/objects/types/planet-base.ts index 8736673..ee62dfd 100644 --- a/shared/src/objects/types/stone-base.ts +++ b/shared/src/objects/types/planet-base.ts @@ -4,7 +4,7 @@ import { serializable } from '../../transport/serialization/serializable'; import { GameObject } from '../game-object'; @serializable -export class StoneBase extends GameObject { +export class PlanetBase extends GameObject { constructor(id: Id, public readonly vertices: Array) { super(id); } diff --git a/shared/src/settings.ts b/shared/src/settings.ts index c933924..777265c 100644 --- a/shared/src/settings.ts +++ b/shared/src/settings.ts @@ -1,21 +1,25 @@ -import { vec2 } from 'gl-matrix'; import { rgb255 } from './helper/rgb255'; export const settings = { lightCutoffDistance: 600, - physicsMaxStep: 5, - gravitationalForce: vec2.fromValues(0, -3000), - maxVelocityX: 2000, - maxVelocityY: 3650, - polygonEdgeCount: 8, - projectileSpeed: 2000, + physicsMaxStep: 2, + maxVelocityX: 1000, + maxVelocityY: 1000, + polygonEdgeCount: 7, + maxGravityDistance: 700, + maxGravityQ: 180, + maxGravityStrength: 10000, + maxAcceleration: 10000, + projectileSpeed: 4000, projectileMaxBounceCount: 1, - projectileStartOffset: 150, - projectileCreationInterval: 500, + projectileStartOffset: 250, + projectileCreationInterval: 0.1, playerColorIndexOffset: 3, - worldLeftEdge: -5000, - worldRightEdge: 5000, - backgroundGradient: [rgb255(255, 117, 129), rgb255(136, 117, 255)], + worldTopEdge: 10000, + worldRightEdge: 10000, + worldLeftEdge: -10000, + worldBottomEdge: -10000, + backgroundGradient: [rgb255(90, 38, 43), rgb255(43, 39, 73)], playerColors: [ rgb255(107, 48, 188), rgb255(56, 254, 220), @@ -46,11 +50,8 @@ export const settings = { rgb255(114, 73, 30), rgb255(75, 75, 75), ], - maxAccelerationX: 2000000, - maxAccelerationY: 20500, targetPhysicsDeltaTimeInMilliseconds: 20, minPhysicsSleepTime: 4, - velocityAttenuation: 0.1, + velocityAttenuation: 0.25, inViewAreaSize: 1920 * 1080 * 3, - defaultJumpEnergy: 0.25, }; diff --git a/tsconfig.json b/tsconfig.json index 6b26fb4..33b118a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,5 +12,6 @@ "module": "commonjs", "composite": true, "lib": ["dom", "es2017"] - } + }, + "include": ["**/*.ts"] } From e2129bbb2603fba1e773afeb7d992dd967550ca4 Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Fri, 16 Oct 2020 23:26:03 +0200 Subject: [PATCH 007/101] Add server screen --- backend/package.json | 16 +- backend/src/default-options.ts | 8 + backend/src/game-server.ts | 88 ++++++++++ backend/src/index.html | 31 ---- backend/src/main.ts | 108 +++--------- .../{create-dungeon.ts => create-world.ts} | 39 +---- backend/src/options.ts | 6 + frontend/src/index.html | 29 ++- frontend/src/index.ts | 33 +++- frontend/src/scripts/game.ts | 27 +-- frontend/src/scripts/join-form-handler.ts | 72 ++++++++ .../src/scripts/landing-page-background.ts | 165 ++++++++++++++++++ frontend/src/styles/form.scss | 124 +++++++++++++ frontend/src/styles/main.scss | 47 ++++- frontend/src/styles/vars.scss | 12 ++ .../src/communication/player-information.ts | 3 + .../src/communication/server-information.ts | 7 + shared/src/main.ts | 2 + shared/src/objects/types/planet-base.ts | 26 +++ shared/tsconfig.json | 3 +- 20 files changed, 672 insertions(+), 174 deletions(-) create mode 100644 backend/src/default-options.ts create mode 100644 backend/src/game-server.ts delete mode 100644 backend/src/index.html rename backend/src/map/{create-dungeon.ts => create-world.ts} (68%) create mode 100644 backend/src/options.ts create mode 100644 frontend/src/scripts/join-form-handler.ts create mode 100644 frontend/src/scripts/landing-page-background.ts create mode 100644 frontend/src/styles/form.scss create mode 100644 frontend/src/styles/vars.scss create mode 100644 shared/src/communication/player-information.ts create mode 100644 shared/src/communication/server-information.ts diff --git a/backend/package.json b/backend/package.json index 43627a7..c40b15a 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,20 +1,24 @@ { - "name": "decla.red-server", - "private": true, + "name": "declared-server", "description": "Game server for decla.red", "keywords": [], "author": "András Schmelczer (https://schmelczer.dev/)", - "main": "index.js", + "version": "0.0.1", + "main": "dist/main.js", "scripts": { "build": "npx webpack --mode production", "initialize": "npm install", - "start": "concurrently --kill-others \"npx webpack --mode development -w\" \"nodemon --legacy-watch dist/main.js\"", - "try-build": "npm run build && node dist/main.js" + "start": "concurrently --kill-others \"npx webpack --mode development -w\" \"cd dist && nodemon --legacy-watch main.js\"", + "try-build": "npm run build && cd dist && node main.js && cd -" + }, + "bin": { + "declared-server": "./dist/main.js" }, "dependencies": { + "@types/config": "0.0.36", "cors": "^2.8.5", "express": "^4.17.1", - "http": "0.0.1-security", + "minimist": "^1.2.5", "socket.io": "^2.3.0", "uws": "^10.148.1", "webpack-node-externals": "^2.5.2" diff --git a/backend/src/default-options.ts b/backend/src/default-options.ts new file mode 100644 index 0000000..4ce4c30 --- /dev/null +++ b/backend/src/default-options.ts @@ -0,0 +1,8 @@ +import { Options } from './options'; + +export const defaultOptions: Options = { + port: 3000, + name: 'Localhost', + playerLimit: 16, + seed: 51, +}; diff --git a/backend/src/game-server.ts b/backend/src/game-server.ts new file mode 100644 index 0000000..74c134a --- /dev/null +++ b/backend/src/game-server.ts @@ -0,0 +1,88 @@ +import { PhysicalContainer } from './physics/containers/physical-container'; +import { Player } from './players/player'; +import ioserver from 'socket.io'; +import { TransportEvents, deserialize, settings, ServerInformation } from 'shared'; +import { createWorld } from './map/create-world'; +import { DeltaTimeCalculator } from './helper/delta-time-calculator'; +import { Options } from './options'; + +export class GameServer { + private objects = new PhysicalContainer(); + private players: Array = []; + private deltaTimes: Array = []; + private deltaTimeCalculator = new DeltaTimeCalculator(); + + private serverName: string; + private playerLimit: number; + constructor(io: ioserver.Server, options: Options) { + this.serverName = options.name; + this.playerLimit = options.playerLimit; + + createWorld(this.objects); + this.objects.initialize(); + + io.on('connection', (socket: SocketIO.Socket) => { + socket.on(TransportEvents.PlayerJoining, () => { + const player = new Player(this.objects, socket); + this.players.push(player); + socket.on(TransportEvents.PlayerToServer, (json: string) => { + const command = deserialize(json); + player.sendCommand(command); + }); + + socket.on('disconnect', () => { + player.destroy(); + this.players = this.players.filter((p) => p !== player); + }); + }); + + socket.on('join', (room_name: string) => { + socket.join(room_name); + }); + }); + } + + public start() { + this.handlePhysics(); + } + + private handlePhysics() { + const delta = this.deltaTimeCalculator.getNextDeltaTimeInMilliseconds(); + this.deltaTimes.push(delta); + const framesBetweenDeltaTimeCalculation = 1000; + + if (this.deltaTimes.length > framesBetweenDeltaTimeCalculation) { + this.deltaTimes.sort((a, b) => a - b); + console.log( + `Median physics time: ${this.deltaTimes[ + framesBetweenDeltaTimeCalculation + ].toFixed(2)} ms`, + ); + console.log( + `Memory used: ${(process.memoryUsage().rss / 1024 / 1024).toFixed(2)} MB`, + ); + this.deltaTimes = []; + console.log(this.players.map((p) => p.latency)); + } + + this.objects.stepObjects(delta / 1000); + this.players.forEach((p) => p.step(delta / 1000)); + + const physicsDelta = this.deltaTimeCalculator.getDeltaTimeInMilliseconds(); + this.deltaTimes.push(physicsDelta); + const sleepTime = settings.targetPhysicsDeltaTimeInMilliseconds - physicsDelta; + if (sleepTime >= settings.minPhysicsSleepTime) { + setTimeout(this.handlePhysics.bind(this), sleepTime); + } else { + setImmediate(this.handlePhysics.bind(this)); + } + } + + public get serverInfo(): ServerInformation { + return { + serverName: this.serverName, + playerCount: this.players.length, + playerLimit: this.playerLimit, + }; + } +} diff --git a/backend/src/index.html b/backend/src/index.html deleted file mode 100644 index 17aef93..0000000 --- a/backend/src/index.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - Server info - - - - - - - \ No newline at end of file diff --git a/backend/src/main.ts b/backend/src/main.ts index c2adba2..d1a3abd 100644 --- a/backend/src/main.ts +++ b/backend/src/main.ts @@ -1,36 +1,32 @@ -import ioserver, { Socket } from 'socket.io'; +import ioserver from 'socket.io'; import express from 'express'; import { Server } from 'http'; import cors from 'cors'; -import { - applyArrayPlugins, - Random, - TransportEvents, - deserialize, - settings, -} from 'shared'; -import './index.html'; -import { Player } from './players/player'; -import { PhysicalContainer } from './physics/containers/physical-container'; -import { createDungeon } from './map/create-dungeon'; +import { applyArrayPlugins, Random, serverInformationEndpoint } from 'shared'; +import minimist from 'minimist'; + import { glMatrix } from 'gl-matrix'; -import { DeltaTimeCalculator } from './helper/delta-time-calculator'; + +import { GameServer } from './game-server'; + +import { defaultOptions } from './default-options'; glMatrix.setMatrixArrayType(Array); - applyArrayPlugins(); -Random.seed = 44; +const optionOverrides = minimist(process.argv.slice(2)); +const options = { + ...defaultOptions, + ...optionOverrides, +}; -const objects = new PhysicalContainer(); -createDungeon(objects); - -objects.initialize(); - -let players: Array = []; +Random.seed = options.seed; const app = express(); -const deltaTimeCalculator = new DeltaTimeCalculator(); +const server = new Server(app); +const io = ioserver(server); + +const gameServer = new GameServer(io, options); app.use( cors({ @@ -41,70 +37,12 @@ app.use( }), ); -const port = 3000; -const server = new Server(app); -const io = ioserver(server); - -/* -const log = (text: string) => { - io.to('insights').emit('insights', text + '\n'); -}; -*/ - -app.get('/', function (req, res) { - res.sendFile('dist/index.html', { root: '.' }); +app.get(serverInformationEndpoint, (req, res) => { + res.json(gameServer.serverInfo); }); -io.on('connection', (socket: SocketIO.Socket) => { - socket.on(TransportEvents.PlayerJoining, () => { - const player = new Player(objects, socket); - players.push(player); - socket.on(TransportEvents.PlayerToServer, (json: string) => { - const command = deserialize(json); - player.sendCommand(command); - }); - - socket.on('disconnect', () => { - player.destroy(); - players = players.filter((p) => p !== player); - }); - }); - - socket.on('join', (room_name: string) => { - socket.join(room_name); - }); +server.listen(options.port, () => { + console.log(`server started at http://localhost:${options.port}`); }); -server.listen(port, () => { - console.log(`server started at http://localhost:${port}`); -}); - -let deltas: Array = []; - -const handlePhysics = () => { - const delta = deltaTimeCalculator.getNextDeltaTimeInMilliseconds(); - deltas.push(delta); - if (deltas.length > 1000) { - deltas.sort((a, b) => a - b); - console.log(`Median physics time: ${deltas[50].toFixed(2)} ms`); - console.log( - `Memory used: ${(process.memoryUsage().rss / 1024 / 1024).toFixed(2)} MB`, - ); - deltas = []; - console.log(players.map((p) => p.latency)); - } - - objects.stepObjects(delta / 1000); - players.forEach((p) => p.step(delta / 1000)); - - const physicsDelta = deltaTimeCalculator.getDeltaTimeInMilliseconds(); - deltas.push(physicsDelta); - const sleepTime = settings.targetPhysicsDeltaTimeInMilliseconds - physicsDelta; - if (sleepTime >= settings.minPhysicsSleepTime) { - setTimeout(handlePhysics, sleepTime); - } else { - setImmediate(handlePhysics); - } -}; - -handlePhysics(); +gameServer.start(); diff --git a/backend/src/map/create-dungeon.ts b/backend/src/map/create-world.ts similarity index 68% rename from backend/src/map/create-dungeon.ts rename to backend/src/map/create-world.ts index f7475f8..d6e9e71 100644 --- a/backend/src/map/create-dungeon.ts +++ b/backend/src/map/create-world.ts @@ -1,12 +1,12 @@ import { vec2, vec3 } from 'gl-matrix'; -import { Random, settings } from 'shared'; +import { Random, settings, PlanetBase } from 'shared'; import { LampPhysical } from '../objects/lamp-physical'; import { PlanetPhysical } from '../objects/planet-physical'; import { PhysicalContainer } from '../physics/containers/physical-container'; import { evaluateSdf } from '../physics/functions/evaluate-sdf'; import { Physical } from '../physics/physicals/physical'; -export const createDungeon = (objectContainer: PhysicalContainer) => { +export const createWorld = (objectContainer: PhysicalContainer) => { const objects: Array = []; const lights: Array = []; @@ -33,11 +33,13 @@ export const createDungeon = (objectContainer: PhysicalContainer) => { ); objects.push( - createBlob( - position, - Random.getRandomInRange(300, 800), - Random.getRandomInRange(300, 800), - Random.getRandomInRange(20, 40), + new PlanetPhysical( + PlanetBase.createPlanetVertices( + position, + Random.getRandomInRange(300, 800), + Random.getRandomInRange(300, 800), + Random.getRandomInRange(20, 40), + ), ), ); } @@ -72,26 +74,3 @@ export const createDungeon = (objectContainer: PhysicalContainer) => { [...objects, ...lights].forEach((o) => objectContainer.addObject(o)); }; - -const createBlob = ( - center: vec2, - width: number, - height: number, - randomness: number, -): PlanetPhysical => { - const vertices = []; - - for (let i = 0; i < settings.polygonEdgeCount; i++) { - vertices.push( - vec2.fromValues( - center.x + - (width / 2) * Math.cos((i / settings.polygonEdgeCount) * -Math.PI * 2) + - Random.getRandomInRange(-randomness, randomness), - center.y + - (height / 2) * Math.sin((i / settings.polygonEdgeCount) * -Math.PI * 2) + - Random.getRandomInRange(-randomness, randomness), - ), - ); - } - return new PlanetPhysical(vertices); -}; diff --git a/backend/src/options.ts b/backend/src/options.ts new file mode 100644 index 0000000..c5fc944 --- /dev/null +++ b/backend/src/options.ts @@ -0,0 +1,6 @@ +export interface Options { + port: number; + name: string; + playerLimit: number; + seed: number; +} diff --git a/frontend/src/index.html b/frontend/src/index.html index d488574..667f31e 100644 --- a/frontend/src/index.html +++ b/frontend/src/index.html @@ -15,10 +15,33 @@ - +
+

decla.red

+
+
+ Join a game + +
+ + +
+ +
+ +
+
+
+
- + diff --git a/frontend/src/index.ts b/frontend/src/index.ts index b5f2bc9..876a70c 100644 --- a/frontend/src/index.ts +++ b/frontend/src/index.ts @@ -1,12 +1,15 @@ import { glMatrix } from 'gl-matrix'; import { CharacterBase, LampBase, overrideDeserialization, PlanetBase } from 'shared'; import { ProjectileBase } from 'shared/src/objects/types/projectile-base'; -import { Game } from './scripts/game'; + import { CharacterView } from './scripts/objects/character-view'; import { LampView } from './scripts/objects/lamp-view'; import { ProjectileView } from './scripts/objects/projectile-view'; import { PlanetView } from './scripts/objects/planet-view'; import './styles/main.scss'; +import { LandingPageBackground } from './scripts/landing-page-background'; +import { JoinFormHandler } from './scripts/join-form-handler'; +import { Game } from './scripts/game'; glMatrix.setMatrixArrayType(Array); @@ -15,9 +18,35 @@ overrideDeserialization(PlanetBase, PlanetView); overrideDeserialization(LampBase, LampView); overrideDeserialization(ProjectileBase, ProjectileView); +const addSupportForTabNavigation = () => + (document.onkeydown = (e) => { + if (e.key === ' ') { + (document.activeElement as HTMLElement)?.click(); + e.preventDefault(); + } + }); + +/*const removeUnnecessaryOutlines = () => + (document.onclick = (e) => { + (e.target as HTMLElement)?.blur(); + }); +*/ +addSupportForTabNavigation(); +//removeUnnecessaryOutlines(); + const main = async () => { try { - await new Game().start(); + const landingUI = document.querySelector('#landing-ui') as HTMLElement; + const background = new LandingPageBackground(); + const joinHandler = new JoinFormHandler( + document.querySelector('#join-game-form') as HTMLFormElement, + document.querySelector('#server-container') as HTMLElement, + ); + const playerDecision = await joinHandler.getPlayerDecision(); + landingUI.style.display = 'none'; + console.log(playerDecision); + background.destroy(); + await new Game(playerDecision).start(); } catch (e) { console.error(e); alert(e); diff --git a/frontend/src/scripts/game.ts b/frontend/src/scripts/game.ts index 66bda2c..2c11171 100644 --- a/frontend/src/scripts/game.ts +++ b/frontend/src/scripts/game.ts @@ -23,8 +23,8 @@ import { MouseListener } from './commands/generators/mouse-listener'; import { TouchListener } from './commands/generators/touch-listener'; import { CommandReceiverSocket } from './commands/receivers/command-receiver-socket'; -import { Configuration } from './config/configuration'; import { DeltaTimeCalculator } from './helper/delta-time-calculator'; +import { PlayerDecision } from './join-form-handler'; import { GameObjectContainer } from './objects/game-object-container'; import { BlobShape } from './shapes/blob-shape'; import { Circle } from './shapes/circle'; @@ -32,18 +32,23 @@ import { Polygon } from './shapes/polygon'; export class Game { public readonly gameObjects = new GameObjectContainer(this); - private readonly canvas: HTMLCanvasElement = document.querySelector( - 'canvas#main', - ) as HTMLCanvasElement; + private readonly canvas = document.querySelector('canvas') as HTMLCanvasElement; private renderer!: Renderer; private socket!: SocketIOClient.Socket; + private promises: Promise<[void, void]>; private deltaTimeCalculator = new DeltaTimeCalculator(); private overlay: HTMLElement = document.querySelector('#overlay') as HTMLDivElement; - private async setupCommunication(): Promise { - await Configuration.initialize(); + constructor(playerDecision: PlayerDecision) { + console.log(playerDecision.server); + this.promises = Promise.all([ + this.setupCommunication(playerDecision.server), + this.setupRenderer(), + ]); + } - this.socket = io(Configuration.servers[1], { + private async setupCommunication(serverUrl: string): Promise { + this.socket = io(serverUrl, { reconnectionDelayMax: 10000, transports: ['websocket'], }); @@ -81,7 +86,7 @@ export class Game { [ { ...Polygon.descriptor, - shaderCombinationSteps: [0, 2, 6, 16], + shaderCombinationSteps: [0, 1, 2, 3], }, { ...BlobShape.descriptor, @@ -93,11 +98,11 @@ export class Game { }, { ...CircleLight.descriptor, - shaderCombinationSteps: [0, 1, 2, 4, 8], + shaderCombinationSteps: [0, 1, 2, 4, 8, 16], }, { ...Flashlight.descriptor, - shaderCombinationSteps: [0, 1], + shaderCombinationSteps: [0], }, ], { @@ -131,7 +136,7 @@ export class Game { } public async start(): Promise { - await Promise.all([this.setupCommunication(), this.setupRenderer()]); + await this.promises; requestAnimationFrame(this.gameLoop.bind(this)); } diff --git a/frontend/src/scripts/join-form-handler.ts b/frontend/src/scripts/join-form-handler.ts new file mode 100644 index 0000000..3d9e149 --- /dev/null +++ b/frontend/src/scripts/join-form-handler.ts @@ -0,0 +1,72 @@ +import { ServerInformation, serverInformationEndpoint } from 'shared'; + +import { Configuration } from './config/configuration'; + +export type PlayerDecision = { + playerName: string; + server: string; +}; + +export class JoinFormHandler { + private waitingForDecision: Promise; + private resolvePlayerDecision!: (d: PlayerDecision) => void; + + constructor(form: HTMLFormElement, private readonly container: HTMLElement) { + this.waitingForDecision = new Promise((r) => (this.resolvePlayerDecision = r)); + + new FormData(form); + + document.addEventListener('keyup', (e) => { + if (e.key === 'enter') { + form.submit(); + } + }); + + form.onsubmit = (e) => { + const result: PlayerDecision = (Array.from( + (new FormData(form) as any).entries(), + ) as Array<[string, any]>).reduce((result, [name, value]) => { + (result as any)[name] = value; + return result; + }, {}) as any; + + this.resolvePlayerDecision(result); + + e.preventDefault(); + }; + + this.loadServers(); + } + + private async loadServers() { + await Configuration.initialize(); + const serverList = Configuration.servers; + + serverList.map(async (url) => { + const response = await fetch(url + serverInformationEndpoint); + if (response.ok) { + const content: ServerInformation = await response.json(); + this.displayNewServerInfo(content, url); + } + }); + } + + public async getPlayerDecision(): Promise { + return this.waitingForDecision; + } + + private isFirstServer = true; + private displayNewServerInfo(content: ServerInformation, url: string) { + this.container.innerHTML += ` +
+ + +
+ `; + this.isFirstServer = false; + } +} diff --git a/frontend/src/scripts/landing-page-background.ts b/frontend/src/scripts/landing-page-background.ts new file mode 100644 index 0000000..5037fac --- /dev/null +++ b/frontend/src/scripts/landing-page-background.ts @@ -0,0 +1,165 @@ +import { vec2 } from 'gl-matrix'; +import { + CircleLight, + compile, + FilteringOptions, + hsl, + NoisyPolygonFactory, + Renderer, + renderNoise, + WrapOptions, +} from 'sdf-2d'; +import { settings, rgb, PlanetBase, Random } from 'shared'; + +const landingPageVertexCount = 9; +const LangindPagePolygon = NoisyPolygonFactory( + landingPageVertexCount, + rgb(0.5, 0.4, 0.7), +); + +export class LandingPageBackground { + private readonly canvas = document.querySelector('canvas') as HTMLCanvasElement; + private renderer!: Renderer; + + constructor() { + this.start(); + } + + private async start(): Promise { + const noiseTexture = await renderNoise([256, 256], 1.2, 2); + + this.renderer = await compile( + this.canvas, + [ + { + ...LangindPagePolygon.descriptor, + shaderCombinationSteps: [0, 1, 2], + }, + { + ...CircleLight.descriptor, + shaderCombinationSteps: [0, 2], + }, + ], + { + shadowTraceCount: 16, + paletteSize: 1, + }, + ); + + this.renderer.setRuntimeSettings({ + ambientLight: rgb(0, 0, 0), + lightCutoffDistance: settings.lightCutoffDistance, + textures: { + noiseTexture: { + source: noiseTexture, + overrides: { + maxFilter: FilteringOptions.LINEAR, + wrapS: WrapOptions.MIRRORED_REPEAT, + wrapT: WrapOptions.MIRRORED_REPEAT, + }, + }, + }, + }); + + requestAnimationFrame(this.gameLoop.bind(this)); + } + + public destroy() { + this.renderer.destroy(); + } + + private gameLoop(time: DOMHighResTimeStamp) { + Random.seed = 42; + + this.renderer.setViewArea( + vec2.fromValues(0, this.renderer.canvasSize.y), + this.renderer.canvasSize, + ); + + const topPlanetPosition = vec2.fromValues( + 0.7 * this.renderer.canvasSize.x, + 0.7 * this.renderer.canvasSize.y, + ); + + const topPlanet = new LangindPagePolygon( + PlanetBase.createPlanetVertices( + topPlanetPosition, + Random.getRandomInRange(150, 400), + Random.getRandomInRange(150, 400), + Random.getRandomInRange(10, 20), + landingPageVertexCount, + ), + ); + + (topPlanet as any).randomOffset = 0.5 + time / 3500; + + const bottomPlanetPosition = vec2.fromValues( + 0.3 * this.renderer.canvasSize.x, + 0.3 * this.renderer.canvasSize.y, + ); + + const bottomPlanet = new LangindPagePolygon( + PlanetBase.createPlanetVertices( + bottomPlanetPosition, + Random.getRandomInRange(150, 800), + Random.getRandomInRange(150, 400), + Random.getRandomInRange(10, 40), + landingPageVertexCount, + ), + ); + + (bottomPlanet as any).randomOffset = time / 2500; + + const planetDistance = vec2.subtract( + vec2.create(), + topPlanetPosition, + bottomPlanetPosition, + ); + const planetDistanceLength = vec2.length(planetDistance); + const planetDirection = vec2.normalize(planetDistance, planetDistance); + const planetAngle = Math.atan2(planetDirection.y, planetDirection.x); + + this.renderer.addDrawable(topPlanet); + this.renderer.addDrawable(bottomPlanet); + this.renderer.addDrawable( + new CircleLight( + this.calculateLightPosition( + planetAngle, + planetDistanceLength * 1.2, + -time / 3000, + ), + hsl(25, 75, 60), + 0.75, + ), + ); + + this.renderer.addDrawable( + new CircleLight( + this.calculateLightPosition( + planetAngle, + planetDistanceLength * 1.2, + time / 2000 + Math.PI, + ), + hsl(249, 79, 70), + 0.25, + ), + ); + + this.renderer.renderDrawables(); + + requestAnimationFrame(this.gameLoop.bind(this)); + } + + private calculateLightPosition(angle: number, length: number, t: number): vec2 { + const lightPosition = vec2.fromValues( + length * Math.sin(t), + length * Math.sin(t) * Math.cos(t), + ); + + const canvasCenter = vec2.scale(vec2.create(), this.renderer.canvasSize, 0.5); + + vec2.add(lightPosition, lightPosition, canvasCenter); + vec2.rotate(lightPosition, lightPosition, canvasCenter, angle); + return lightPosition; + } +} diff --git a/frontend/src/styles/form.scss b/frontend/src/styles/form.scss new file mode 100644 index 0000000..3aa02d7 --- /dev/null +++ b/frontend/src/styles/form.scss @@ -0,0 +1,124 @@ +@import './vars.scss'; + +form { + backdrop-filter: blur(24px); + background-color: rgba(0, 0, 0, 0.15); + padding: $small-padding / 2 $small-padding $small-padding $small-padding; + + input, + label { + font-size: 1.5rem; + } + + fieldset { + border: $border; + padding: 0 $medium-padding $medium-padding $medium-padding; + border-radius: $border-radius; + + div { + // disable margin collapse + overflow: auto; + } + + legend { + font-family: 'Comfortaa', sans-serif; + font-size: 2rem; + } + + .name-group { + position: relative; + padding: 15px 0 0; + margin-top: 10px; + margin: 10px 0 $small-padding 0; + + input { + font-family: inherit; + border: none; + border-bottom: $border; + color: white; + padding: 10px 0 0px 0; + background: transparent; + margin-bottom: $border-width-focused - $border-width; + + &::placeholder { + color: transparent; + } + + &:placeholder-shown ~ label { + font-size: 1.3rem; + cursor: text; + top: 20px; + } + } + + label { + position: absolute; + top: 0; + display: block; + transition: $animation-time; + color: $gray; + } + + input:focus, + input:not(:placeholder-shown) { + outline: none; + margin-bottom: 0; + border-width: $border-width-focused; + border-color: $accent; + + ~ label { + position: absolute; + top: 0; + display: block; + transition: $animation-time; + } + } + } + + input[type='radio'] { + width: 0; + height: 0; + + + label { + display: block; + border-radius: $border-radius; + padding: $small-padding; + border: $border; + cursor: pointer; + margin: $border-width-focused - $border-width; + } + + &:focus { + outline: none; + } + + &:focus + label, + &:checked + label { + border-color: $accent; + border-width: $border-width-focused; + margin: 0; + } + } + } + + button { + border: none; + background: none; + font-size: 2rem; + font-family: 'Comfortaa', sans-serif; + cursor: pointer; + display: block; + margin: auto; + padding-top: $medium-padding; + transition: transform $animation-time; + + &:hover, + &:focus { + outline: none; + color: $accent; + transform: translateY(-8px); + } + } + + border-radius: $border-radius; +} diff --git a/frontend/src/styles/main.scss b/frontend/src/styles/main.scss index 710ef3a..42b56cf 100644 --- a/frontend/src/styles/main.scss +++ b/frontend/src/styles/main.scss @@ -1,27 +1,64 @@ -$breakpoint: 800px; +@import './vars.scss'; +@import './form.scss'; +@import url('https://fonts.googleapis.com/css2?family=Comfortaa:wght@300&family=Open+Sans&display=swap'); * { margin: 0; box-sizing: border-box; color: white; + font-family: 'Open Sans', sans-serif; + + &::selection { + color: white; + background-color: $accent; + } } html { - background-color: linear-gradient(45deg, #103783, #9bafd9); - + font-size: 0.85rem; @media (max-width: $breakpoint) { - font-size: 0.7rem; + font-size: 0.6rem; + } +} + +h1 { + &, + * { + font-family: 'Comfortaa', sans-serif; + } + font-size: 6rem; + text-align: center; + padding-bottom: $medium-padding; +} + +.red { + color: $red; + &::selection { + color: $accent; + background-color: white; } } html, body, -canvas#main { +canvas { height: 100%; width: 100%; + background: black; } body { + #landing-ui { + position: absolute; + width: 100%; + height: 100%; + + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + } + #overlay { margin: 0.5rem 1.25rem; position: absolute; diff --git a/frontend/src/styles/vars.scss b/frontend/src/styles/vars.scss new file mode 100644 index 0000000..7d0be82 --- /dev/null +++ b/frontend/src/styles/vars.scss @@ -0,0 +1,12 @@ +$gray: #ccc; +$red: #b33951; +$accent: #b33951; +$border-width: 1.5px; +$border-width-focused: 3px; +$border: $border-width solid white; +$small-padding: 12px; +$medium-padding: 24px; +$large-padding: 64px; +$border-radius: 15px; +$animation-time: 200ms; +$breakpoint: 700px; diff --git a/shared/src/communication/player-information.ts b/shared/src/communication/player-information.ts new file mode 100644 index 0000000..1130b7b --- /dev/null +++ b/shared/src/communication/player-information.ts @@ -0,0 +1,3 @@ +export interface PlayerInformation { + name: string; +} diff --git a/shared/src/communication/server-information.ts b/shared/src/communication/server-information.ts new file mode 100644 index 0000000..fabbbdb --- /dev/null +++ b/shared/src/communication/server-information.ts @@ -0,0 +1,7 @@ +export interface ServerInformation { + playerLimit: number; + playerCount: number; + serverName: string; +} + +export const serverInformationEndpoint = '/stats'; diff --git a/shared/src/main.ts b/shared/src/main.ts index 9b2d076..94325b5 100644 --- a/shared/src/main.ts +++ b/shared/src/main.ts @@ -25,6 +25,8 @@ export * from './helper/rectangle'; export * from './helper/mix'; export * from './helper/random'; export * from './helper/id'; +export * from './communication/server-information'; +export * from './communication/player-information'; export * from './helper/rotate-90-deg'; export * from './helper/rotate-minus-90-deg'; export * from './objects/game-object'; diff --git a/shared/src/objects/types/planet-base.ts b/shared/src/objects/types/planet-base.ts index ee62dfd..205f6c4 100644 --- a/shared/src/objects/types/planet-base.ts +++ b/shared/src/objects/types/planet-base.ts @@ -1,4 +1,6 @@ import { vec2 } from 'gl-matrix'; +import { Random } from '../../helper/random'; +import { settings } from '../../settings'; import { Id } from '../../transport/identity'; import { serializable } from '../../transport/serialization/serializable'; import { GameObject } from '../game-object'; @@ -9,6 +11,30 @@ export class PlanetBase extends GameObject { super(id); } + public static createPlanetVertices( + center: vec2, + width: number, + height: number, + randomness: number, + vertexCount = settings.polygonEdgeCount, + ): Array { + const vertices = []; + + for (let i = 0; i < vertexCount; i++) { + vertices.push( + vec2.fromValues( + center.x + + (width / 2) * Math.cos((i / vertexCount) * -Math.PI * 2) + + Random.getRandomInRange(-randomness, randomness), + center.y + + (height / 2) * Math.sin((i / vertexCount) * -Math.PI * 2) + + Random.getRandomInRange(-randomness, randomness), + ), + ); + } + return vertices; + } + public toArray(): Array { return [this.id, this.vertices]; } diff --git a/shared/tsconfig.json b/shared/tsconfig.json index f85c232..3a55c4e 100644 --- a/shared/tsconfig.json +++ b/shared/tsconfig.json @@ -13,5 +13,6 @@ "module": "commonjs", "composite": true, "lib": ["dom", "es2017"] - } + }, + "include": ["src/**/*.ts"] } From f7e7522379a2742b9b1f0fb4e4fcc98b365b863c Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Fri, 16 Oct 2020 23:38:56 +0200 Subject: [PATCH 008/101] Make server script work --- backend/package.json | 2 +- backend/webpack.config.js | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/backend/package.json b/backend/package.json index c40b15a..88ca093 100644 --- a/backend/package.json +++ b/backend/package.json @@ -3,7 +3,7 @@ "description": "Game server for decla.red", "keywords": [], "author": "András Schmelczer (https://schmelczer.dev/)", - "version": "0.0.1", + "version": "0.0.1-try2", "main": "dist/main.js", "scripts": { "build": "npx webpack --mode production", diff --git a/backend/webpack.config.js b/backend/webpack.config.js index b0586e3..84b30bc 100644 --- a/backend/webpack.config.js +++ b/backend/webpack.config.js @@ -3,6 +3,7 @@ const { CleanWebpackPlugin } = require('clean-webpack-plugin'); const nodeExternals = require('webpack-node-externals'); const { ESBuildPlugin } = require('esbuild-loader'); const TerserJSPlugin = require('terser-webpack-plugin'); +const webpack = require('webpack'); const PATHS = { entryPoint: path.resolve(__dirname, 'src/main.ts'), @@ -41,6 +42,7 @@ module.exports = (env, argv) => ({ ], }, plugins: [ + new webpack.BannerPlugin({ banner: '#!/usr/bin/env node', raw: true }), new ESBuildPlugin(), new CleanWebpackPlugin({ protectWebpackAssets: false, From 2d67b7d939e235db765570c7ec1e2936a9c7eef7 Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Sat, 17 Oct 2020 09:59:23 +0200 Subject: [PATCH 009/101] Fix failing build --- .devcontainer/devcontainer.json | 8 ++++---- .do/apps.yml | 15 +++++++++++++++ .github/workflows/main.yaml | 14 +------------- package.json | 1 - 4 files changed, 20 insertions(+), 18 deletions(-) create mode 100644 .do/apps.yml diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 1856878..61ee66d 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -43,10 +43,10 @@ "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=cached", "workspaceFolder": "/workspace", "mounts": [ - "source=decla-red-root-node_modules-volume,target=/workspace/node_modules,type=volume", - "source=decla-red-frontend-node_modules-volume,target=/workspace/frontend/node_modules,type=volume", - "source=decla-red-backend-node_modules-volume,target=/workspace/backend/node_modules,type=volume", - "source=decla-red-shared-node_modules-volume,target=/workspace/shared/node_modules,type=volume" + "source=decla-red-root-node_modules-volume2,target=/workspace/node_modules,type=volume", + "source=decla-red-frontend-node_modules-volume2,target=/workspace/frontend/node_modules,type=volume", + "source=decla-red-backend-node_modules-volume2,target=/workspace/backend/node_modules,type=volume", + "source=decla-red-shared-node_modules-volume2,target=/workspace/shared/node_modules,type=volume" ], "forwardPorts": [3000, 8080], "postCreateCommand": "chown node:node ./**/node_modules && npm install && npm run initialize && npm run build" diff --git a/.do/apps.yml b/.do/apps.yml new file mode 100644 index 0000000..0a41826 --- /dev/null +++ b/.do/apps.yml @@ -0,0 +1,15 @@ +name: decla-red-server +region: fra +services: + - dockerfile_path: Dockerfile + github: + branch: main + deploy_on_push: true + repo: schmelczerandras/decla.red + http_port: 3000 + instance_count: 1 + instance_size_slug: basic-xxs + run_command: node main.js --name=Frankfurt --seed=102 + name: decla-red-server + routes: + - path: / diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index c4b95c6..69ccf48 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -5,7 +5,6 @@ on: - main env: CONTAINER_REGISTRY: schmelczera - DOMAIN: '174.138.103.56' jobs: build-project: @@ -38,17 +37,6 @@ jobs: - name: Build and push server image run: | docker buildx build \ - --tag $CONTAINER_REGISTRY/decla-red-server:latest \ + --tag $CONTAINER_REGISTRY/declared-server:latest \ --platform linux/amd64,linux/arm/v7,linux/arm64 . --push working-directory: backend - - name: Setup auth tokens - run: | - mkdir ~/.ssh - echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_ed25519 - chmod 400 ~/.ssh/id_ed25519 - ssh -o StrictHostKeyChecking=no root@$DOMAIN uptime - - name: Stack deploy - run: | - DOCKER_HOST=ssh://root@$DOMAIN docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASSWORD }} - DOCKER_HOST=ssh://root@$DOMAIN docker stack deploy decla-red-server -c docker-compose.yml --with-registry-auth - working-directory: backend diff --git a/package.json b/package.json index d9875f5..39a8834 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,6 @@ }, "dependencies": { "decla.red-frontend": "file:frontend", - "decla.red-server": "file:backend", "shared": "file:shared" }, "devDependencies": { From fd80a299b6938dc6b7d95e953d4273df57a480ee Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Sat, 17 Oct 2020 17:24:24 +0200 Subject: [PATCH 010/101] Fix monorepo build --- .devcontainer/Dockerfile | 2 + .devcontainer/devcontainer.json | 13 +++---- .gitignore | 4 +- Dockerfile | 3 +- README.md | 6 +++ backend/package.json | 31 +++++++++++---- backend/tsconfig.json | 3 +- backend/webpack.config.js | 8 +--- frontend/package.json | 26 +++++++++++-- tsconfig.json => frontend/tsconfig.json | 3 +- frontend/webpack.config.js | 8 +--- lerna.json | 8 ---- package.json | 51 ++++++++----------------- shared/package.json | 16 ++++++-- 14 files changed, 99 insertions(+), 83 deletions(-) rename tsconfig.json => frontend/tsconfig.json (87%) delete mode 100644 lerna.json diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 83a24ff..939ba3a 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -7,6 +7,8 @@ RUN apt update && export DEBIAN_FRONTEND=noninteractive \ RUN git lfs install +RUN npm i -g yarn concurrently + ENV ZSH_CUSTOM /root/.oh-my-zsh/ RUN git clone https://github.com/reobin/typewritten.git $ZSH_CUSTOM/themes/typewritten RUN ln -s "$ZSH_CUSTOM/themes/typewritten/typewritten.zsh-theme" "$ZSH_CUSTOM/themes/typewritten.zsh-theme" diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 61ee66d..2b603ec 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -10,7 +10,7 @@ "terminal.integrated.shell.linux": "/bin/zsh", "files.exclude": { "**/node_modules": true, - "**/package-lock.json": true, + "**/yarn.lock": true, "**/dist": true, "**/lib": true, "**/.firebase": true @@ -19,7 +19,6 @@ "editor.detectIndentation": false, "editor.formatOnSave": true, "editor.defaultFormatter": "esbenp.prettier-vscode", - "eslint.enable": true, "editor.codeActionsOnSave": { "source.fixAll.eslint": true }, @@ -43,11 +42,11 @@ "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=cached", "workspaceFolder": "/workspace", "mounts": [ - "source=decla-red-root-node_modules-volume2,target=/workspace/node_modules,type=volume", - "source=decla-red-frontend-node_modules-volume2,target=/workspace/frontend/node_modules,type=volume", - "source=decla-red-backend-node_modules-volume2,target=/workspace/backend/node_modules,type=volume", - "source=decla-red-shared-node_modules-volume2,target=/workspace/shared/node_modules,type=volume" + "source=decla-red-root-node_modules-volume3,target=/workspace/node_modules,type=volume", + "source=decla-red-frontend-node_modules-volume3,target=/workspace/frontend/node_modules,type=volume", + "source=decla-red-backend-node_modules-volume3,target=/workspace/backend/node_modules,type=volume", + "source=decla-red-shared-node_modules-volume3,target=/workspace/shared/node_modules,type=volume" ], "forwardPorts": [3000, 8080], - "postCreateCommand": "chown node:node ./**/node_modules && npm install && npm run initialize && npm run build" + "postCreateCommand": "chown node:node ./**/node_modules && yarn" } diff --git a/.gitignore b/.gitignore index bbc4e21..6c971d6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ dist lib node_modules -package-lock.json .firebase -lerna-debug.log +yarm-error.log +yarn.lock diff --git a/Dockerfile b/Dockerfile index e4e26b2..79c3b51 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,8 @@ FROM node:14.13.0-alpine3.10 as build COPY . . -RUN npm install && npm run initialize && npm run build +RUN npm i -g concurrently +RUN yarn && yarn run build FROM node:14.13.0-alpine3.10 diff --git a/README.md b/README.md index dd035bf..cec66d2 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,9 @@ # decla.red ![Deploy everything](https://github.com/schmelczerandras/decla.red/workflows/Deploy%20everything/badge.svg) + +## Development + +- Open the devconatiner in VS Code +- Run `yarn start` +- Open [localhost:8080](http://localhost:8080) diff --git a/backend/package.json b/backend/package.json index 88ca093..0d61c0d 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,19 +1,18 @@ { "name": "declared-server", + "version": "0.0.2", "description": "Game server for decla.red", "keywords": [], "author": "András Schmelczer (https://schmelczer.dev/)", - "version": "0.0.1-try2", "main": "dist/main.js", - "scripts": { - "build": "npx webpack --mode production", - "initialize": "npm install", - "start": "concurrently --kill-others \"npx webpack --mode development -w\" \"cd dist && nodemon --legacy-watch main.js\"", - "try-build": "npm run build && cd dist && node main.js && cd -" - }, "bin": { "declared-server": "./dist/main.js" }, + "scripts": { + "build": "npx webpack --mode production", + "start": "npx concurrently --kill-others-on-fail \"npx webpack --mode development -w\" \"npx nodemon --legacy-watch dist/main.js\"", + "try-build": "npm run build && cd dist && node main.js && cd -" + }, "dependencies": { "@types/config": "0.0.36", "cors": "^2.8.5", @@ -24,12 +23,28 @@ "webpack-node-externals": "^2.5.2" }, "devDependencies": { + "@types/cors": "^2.8.7", + "@types/express": "^4.17.8", + "@types/node": "^14.11.2", + "@types/socket.io": "^2.1.11", + "@typescript-eslint/eslint-plugin": "^3.9.1", + "@typescript-eslint/parser": "^3.9.1", "clean-webpack-plugin": "^3.0.0", "concurrently": "^5.3.0", - "esbuild-loader": "^2.4.0", + "eslint": "^7.2.0", + "eslint-config-prettier": "^6.11.0", + "eslint-plugin-import": "^2.21.2", + "eslint-plugin-json-format": "^2.0.1", + "eslint-plugin-prettier": "^3.1.4", + "eslint-plugin-unused-imports": "^0.1.3", + "file-loader": "^6.1.0", + "ts-loader": "^8.0.3", + "gl-matrix": "^3.3.0", "nodemon": "^2.0.4", + "prettier": "^2.0.5", "raw-loader": "^4.0.1", "resolve-url-loader": "^3.1.1", + "shared": "0.0.0", "terser-webpack-plugin": "^2.3.5", "typescript": "^4.0.3", "webpack": "^4.43.0", diff --git a/backend/tsconfig.json b/backend/tsconfig.json index d477e81..c883490 100644 --- a/backend/tsconfig.json +++ b/backend/tsconfig.json @@ -1,5 +1,6 @@ { "compilerOptions": { + "outDir": "dist", "sourceMap": true, "declaration": true, "declarationMap": true, @@ -13,5 +14,5 @@ "composite": true, "lib": ["dom", "es2017"] }, - "include": ["src/**/*.ts", "src/*.ts"] + "include": ["src/**/*.ts"] } diff --git a/backend/webpack.config.js b/backend/webpack.config.js index 84b30bc..90ebc97 100644 --- a/backend/webpack.config.js +++ b/backend/webpack.config.js @@ -1,7 +1,6 @@ const path = require('path'); const { CleanWebpackPlugin } = require('clean-webpack-plugin'); const nodeExternals = require('webpack-node-externals'); -const { ESBuildPlugin } = require('esbuild-loader'); const TerserJSPlugin = require('terser-webpack-plugin'); const webpack = require('webpack'); @@ -43,7 +42,6 @@ module.exports = (env, argv) => ({ }, plugins: [ new webpack.BannerPlugin({ banner: '#!/usr/bin/env node', raw: true }), - new ESBuildPlugin(), new CleanWebpackPlugin({ protectWebpackAssets: false, cleanAfterEveryBuildPatterns: [], @@ -63,10 +61,8 @@ module.exports = (env, argv) => ({ }, { test: /\.ts$/, - loader: 'esbuild-loader', - options: { - loader: 'ts', - target: 'es2015', + use: { + loader: 'ts-loader', }, exclude: /node_modules/, }, diff --git a/frontend/package.json b/frontend/package.json index 31d8075..a951f71 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "decla.red-frontend", - "private": true, + "version": "0.0.0", "description": "![logo](media/declared.png)", "keywords": [], "author": "András Schmelczer (https://schmelczer.dev/)", @@ -10,7 +10,6 @@ "main": "index.js", "scripts": { "build": "npx webpack --mode production", - "initialize": "npm install", "start": "npx webpack-dev-server --mode development", "try-build": "npm run build && cd dist && python3 -m http.server 8080" }, @@ -18,25 +17,44 @@ "defaults" ], "devDependencies": { + "@types/socket.io-client": "^1.4.34", + "@typescript-eslint/eslint-plugin": "^3.9.1", + "@typescript-eslint/parser": "^3.9.1", + "autoprefixer": "^9.8.5", "clean-webpack-plugin": "^3.0.0", - "esbuild-loader": "^2.4.0", + "css-loader": "^3.5.2", + "cssnano": "^4.1.10", + "eslint": "^7.2.0", + "eslint-config-prettier": "^6.11.0", + "eslint-plugin-import": "^2.21.2", + "eslint-plugin-json-format": "^2.0.1", + "eslint-plugin-prettier": "^3.1.4", + "eslint-plugin-unused-imports": "^0.1.3", + "file-loader": "^6.1.0", + "firebase": "^7.22.0", + "gl-matrix": "^3.3.0", "html-webpack-inline-source-plugin": "0.0.10", "html-webpack-plugin": "^3.2.0", "image-webpack-loader": "^6.0.0", "mini-css-extract-plugin": "^0.9.0", "optimize-css-assets-webpack-plugin": "^5.0.3", "postcss-loader": "^3.0.0", + "prettier": "^2.0.5", "raw-loader": "^4.0.1", "resolve-url-loader": "^3.1.1", + "ts-loader": "^8.0.3", "sass": "^1.26.3", "sass-loader": "^9.0.2", + "sdf-2d": "^0.5.3", + "shared": "0.0.0", + "socket.io-client": "^2.3.1", + "source-map-loader": "^1.1.0", "svg-url-loader": "^6.0.0", "terser-webpack-plugin": "^4.2.2", "typescript": "^4.0.3", "webpack": "^4.43.0", "webpack-bundle-analyzer": "^3.9.0", "webpack-cli": "^3.3.11", - "source-map-loader": "^1.1.0", "webpack-dev-server": "^3.10.3" }, "postcss": { diff --git a/tsconfig.json b/frontend/tsconfig.json similarity index 87% rename from tsconfig.json rename to frontend/tsconfig.json index 33b118a..c883490 100644 --- a/tsconfig.json +++ b/frontend/tsconfig.json @@ -1,5 +1,6 @@ { "compilerOptions": { + "outDir": "dist", "sourceMap": true, "declaration": true, "declarationMap": true, @@ -13,5 +14,5 @@ "composite": true, "lib": ["dom", "es2017"] }, - "include": ["**/*.ts"] + "include": ["src/**/*.ts"] } diff --git a/frontend/webpack.config.js b/frontend/webpack.config.js index 3ab9498..f219f3c 100644 --- a/frontend/webpack.config.js +++ b/frontend/webpack.config.js @@ -6,7 +6,6 @@ const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const HtmlWebpackInlineSourcePlugin = require('html-webpack-inline-source-plugin'); const Sass = require('sass'); const TerserJSPlugin = require('terser-webpack-plugin'); -const { ESBuildPlugin } = require('esbuild-loader'); const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer'); const PATHS = { @@ -46,7 +45,6 @@ module.exports = (env, argv) => ({ ], }, plugins: [ - new ESBuildPlugin(), new HtmlWebpackPlugin({ xhtml: true, template: './src/index.html', @@ -105,10 +103,8 @@ module.exports = (env, argv) => ({ }, { test: /\.ts$/, - loader: 'esbuild-loader', - options: { - loader: 'ts', - target: 'es2015', + use: { + loader: 'ts-loader', }, exclude: /node_modules/, }, diff --git a/lerna.json b/lerna.json deleted file mode 100644 index e3d3386..0000000 --- a/lerna.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "packages": [ - "frontend", - "shared", - "backend" - ], - "version": "0.0.0" -} \ No newline at end of file diff --git a/package.json b/package.json index 39a8834..31ff546 100644 --- a/package.json +++ b/package.json @@ -1,43 +1,22 @@ { "name": "root", "private": true, + "workspaces": { + "packages": [ + "frontend", + "shared", + "backend" + ], + "nohoist": [ + "**" + ] + }, "scripts": { - "build": "lerna run build-before && lerna run build", - "initialize": "lerna link && lerna run initialize", + "build": "yarn workspaces shared run build && yarn workspaces frontend run build && yarn workspaces backend run build", "lint": "eslint './**/src/**/*.{js,ts,json}' --fix", - "start": "lerna run --parallel start", - "try-build": "lerna run --parallel try-build-before && lerna run --parallel try-build" - }, - "dependencies": { - "decla.red-frontend": "file:frontend", - "shared": "file:shared" - }, - "devDependencies": { - "@types/cors": "^2.8.7", - "@types/express": "^4.17.8", - "@types/node": "^14.11.2", - "@types/socket.io": "^2.1.11", - "@types/socket.io-client": "^1.4.34", - "@types/uuid": "^8.0.0", - "@typescript-eslint/eslint-plugin": "^3.9.1", - "@typescript-eslint/parser": "^3.9.1", - "autoprefixer": "^9.8.5", - "css-loader": "^3.5.2", - "cssnano": "^4.1.10", - "eslint": "^7.2.0", - "eslint-config-prettier": "^6.11.0", - "eslint-plugin-import": "^2.21.2", - "eslint-plugin-json-format": "^2.0.1", - "eslint-plugin-prettier": "^3.1.4", - "eslint-plugin-unused-imports": "^0.1.3", - "file-loader": "^6.1.0", - "firebase": "^7.22.0", - "gl-matrix": "^3.3.0", - "lerna": "^3.22.1", - "prettier": "^2.0.5", - "sdf-2d": "^0.5.2", - "socket.io-client": "^2.3.1", - "typescript": "^4.0.3", - "uuid": "^8.2.0" + "frontend": "yarn workspace decla.red-frontend start", + "shared": "yarn workspace shared start", + "backend": "yarn workspace declared-server start", + "start": "concurrently --kill-others-on-fail \"yarn frontend\" \"yarn shared\" \"yarn backend\"" } } diff --git a/shared/package.json b/shared/package.json index e1c9aa2..2334af1 100644 --- a/shared/package.json +++ b/shared/package.json @@ -1,6 +1,6 @@ { "name": "shared", - "private": true, + "version": "0.0.0", "description": "Shared library between backend and frontend", "main": "lib/main.js", "types": "lib/src/main.d.ts", @@ -8,13 +8,23 @@ "lib" ], "scripts": { - "build-before": "npx webpack --mode production", - "initialize": "npm install", + "build": "npx webpack --mode production", "start": "npx webpack --mode development --watch", "try-build-before": "npx webpack --mode production" }, "devDependencies": { + "@typescript-eslint/eslint-plugin": "^3.9.1", + "@typescript-eslint/parser": "^3.9.1", "clean-webpack-plugin": "^3.0.0", + "eslint": "^7.2.0", + "eslint-config-prettier": "^6.11.0", + "eslint-plugin-import": "^2.21.2", + "eslint-plugin-json-format": "^2.0.1", + "eslint-plugin-prettier": "^3.1.4", + "eslint-plugin-unused-imports": "^0.1.3", + "file-loader": "^6.1.0", + "gl-matrix": "^3.3.0", + "prettier": "^2.0.5", "terser-webpack-plugin": "^2.3.8", "ts-loader": "^8.0.3", "typescript": "^4.0.3", From e83c58e1a5ce835514d13abad88afe1c0517a6ad Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Sat, 17 Oct 2020 18:35:09 +0200 Subject: [PATCH 011/101] Add better object updates --- backend/src/game-server.ts | 12 +++- backend/src/objects/circle-physical.ts | 6 +- ...ysical.ts => player-character-physical.ts} | 64 +++++++++++-------- backend/src/objects/projectile-physical.ts | 7 +- .../physics/containers/bounding-box-list.ts | 2 +- .../physics/containers/bounding-box-tree.ts | 2 +- .../src/physics/physicals/dynamic-physical.ts | 3 + backend/src/players/player.ts | 57 ++++++++++------- backend/src/update-game-object-message.ts | 11 ++++ frontend/src/index.html | 5 +- frontend/src/index.ts | 46 ++++++------- frontend/src/scripts/game.ts | 16 +++-- .../src/scripts/landing-page-background.ts | 3 +- frontend/src/scripts/objects/camera.ts | 6 +- .../src/scripts/objects/character-view.ts | 6 +- .../scripts/objects/game-object-container.ts | 15 ++--- frontend/src/scripts/objects/lamp-view.ts | 6 +- frontend/src/scripts/objects/planet-view.ts | 6 +- .../scripts/objects/player-character-view.ts | 37 +++++++++++ .../src/scripts/objects/projectile-view.ts | 11 +++- frontend/src/scripts/objects/view-object.ts | 3 +- frontend/src/styles/main.scss | 17 +++-- shared/src/commands/types/update-objects.ts | 7 +- shared/src/main.ts | 6 +- shared/src/objects/interpolation-type.ts | 5 ++ .../objects/types/player-character-base.ts | 23 +++++++ shared/src/objects/update-message.ts | 15 +++++ shared/src/objects/update-object-message.ts | 12 ++++ shared/tsconfig.json | 3 +- 29 files changed, 289 insertions(+), 123 deletions(-) rename backend/src/objects/{character-physical.ts => player-character-physical.ts} (82%) create mode 100644 backend/src/update-game-object-message.ts create mode 100644 frontend/src/scripts/objects/player-character-view.ts create mode 100644 shared/src/objects/interpolation-type.ts create mode 100644 shared/src/objects/types/player-character-base.ts create mode 100644 shared/src/objects/update-message.ts create mode 100644 shared/src/objects/update-object-message.ts diff --git a/backend/src/game-server.ts b/backend/src/game-server.ts index 74c134a..2c8403d 100644 --- a/backend/src/game-server.ts +++ b/backend/src/game-server.ts @@ -1,7 +1,13 @@ import { PhysicalContainer } from './physics/containers/physical-container'; import { Player } from './players/player'; import ioserver from 'socket.io'; -import { TransportEvents, deserialize, settings, ServerInformation } from 'shared'; +import { + TransportEvents, + deserialize, + settings, + ServerInformation, + PlayerInformation, +} from 'shared'; import { createWorld } from './map/create-world'; import { DeltaTimeCalculator } from './helper/delta-time-calculator'; import { Options } from './options'; @@ -22,8 +28,8 @@ export class GameServer { this.objects.initialize(); io.on('connection', (socket: SocketIO.Socket) => { - socket.on(TransportEvents.PlayerJoining, () => { - const player = new Player(this.objects, socket); + socket.on(TransportEvents.PlayerJoining, (playerInfo: PlayerInformation) => { + const player = new Player(playerInfo, this.objects, socket); this.players.push(player); socket.on(TransportEvents.PlayerToServer, (json: string) => { const command = deserialize(json); diff --git a/backend/src/objects/circle-physical.ts b/backend/src/objects/circle-physical.ts index daf6191..753167f 100644 --- a/backend/src/objects/circle-physical.ts +++ b/backend/src/objects/circle-physical.ts @@ -1,5 +1,5 @@ import { vec2 } from 'gl-matrix'; -import { Circle, GameObject, serializesTo, settings } from 'shared'; +import { Circle, GameObject, serializesTo, settings, UpdateObjectMessage } from 'shared'; import { PhysicalBase } from '../physics/physicals/physical-base'; import { BoundingBox } from '../physics/bounding-boxes/bounding-box'; import { BoundingBoxBase } from '../physics/bounding-boxes/bounding-box-base'; @@ -30,6 +30,10 @@ export class CirclePhysical implements Circle, DynamicPhysical, ReactsToCollisio this.recalculateBoundingBox(); } + public calculateUpdates(): UpdateObjectMessage | null { + return null; + } + public get boundingBox(): BoundingBoxBase { return this._boundingBox; } diff --git a/backend/src/objects/character-physical.ts b/backend/src/objects/player-character-physical.ts similarity index 82% rename from backend/src/objects/character-physical.ts rename to backend/src/objects/player-character-physical.ts index a7c8711..9e50b30 100644 --- a/backend/src/objects/character-physical.ts +++ b/backend/src/objects/player-character-physical.ts @@ -1,7 +1,6 @@ import { vec2 } from 'gl-matrix'; import { id, - CharacterBase, settings, MoveActionCommand, serializesTo, @@ -9,6 +8,7 @@ import { last, GameObject, Circle, + PlayerCharacterBase, } from 'shared'; import { DynamicPhysical } from '../physics/physicals/dynamic-physical'; import { CirclePhysical } from './circle-physical'; @@ -20,10 +20,12 @@ import { forceAtPosition } from '../physics/functions/force-at-position'; import { getBoundingBoxOfCircle } from '../physics/functions/get-bounding-box-of-circle'; import { PlanetPhysical } from './planet-physical'; import { ReactsToCollision } from '../physics/physicals/reacts-to-collision'; +import { UpdateObjectMessage } from 'shared/lib/src/objects/update-object-message'; +import { UpdateGameObjectMessage } from '../update-game-object-message'; -@serializesTo(CharacterBase) -export class CharacterPhysical - extends CharacterBase +@serializesTo(PlayerCharacterBase) +export class PlayerCharacterPhysical + extends PlayerCharacterBase implements DynamicPhysical, ReactsToCollision { public readonly canCollide = true; public readonly canMove = true; @@ -40,32 +42,32 @@ export class CharacterPhysical vec2.create(), vec2.add( vec2.create(), - CharacterPhysical.desiredHeadOffset, - CharacterPhysical.desiredLeftFootOffset, + PlayerCharacterPhysical.desiredHeadOffset, + PlayerCharacterPhysical.desiredLeftFootOffset, ), - CharacterPhysical.desiredRightFootOffset, + PlayerCharacterPhysical.desiredRightFootOffset, ), 1 / 3, ); private static readonly headOffset = vec2.subtract( vec2.create(), - CharacterPhysical.desiredHeadOffset, - CharacterPhysical.centerOfMass, + PlayerCharacterPhysical.desiredHeadOffset, + PlayerCharacterPhysical.centerOfMass, ); private static readonly leftFootOffset = vec2.subtract( vec2.create(), - CharacterPhysical.desiredLeftFootOffset, - CharacterPhysical.centerOfMass, + PlayerCharacterPhysical.desiredLeftFootOffset, + PlayerCharacterPhysical.centerOfMass, ); private static readonly rightFootOffset = vec2.subtract( vec2.create(), - CharacterPhysical.desiredRightFootOffset, - CharacterPhysical.centerOfMass, + PlayerCharacterPhysical.desiredRightFootOffset, + PlayerCharacterPhysical.centerOfMass, ); public static readonly boundRadius = - (CharacterPhysical.headRadius + CharacterPhysical.feetRadius * 2) * 2; + (PlayerCharacterPhysical.headRadius + PlayerCharacterPhysical.feetRadius * 2) * 2; private isDestroyed = false; private direction = 0; @@ -78,6 +80,10 @@ export class CharacterPhysical public rightFoot: CirclePhysical; public bound: CirclePhysical; + public get isAlive(): boolean { + return !this.isDestroyed; + } + private movementActions: Array = []; private lastMovementAction: MoveActionCommand = new MoveActionCommand( vec2.create(), @@ -85,26 +91,28 @@ export class CharacterPhysical ); constructor( + name: string, public readonly colorIndex: number, private readonly container: PhysicalContainer, startPosition: vec2, ) { - super(id(), colorIndex); + super(id(), name, colorIndex); + this.head = new CirclePhysical( - vec2.add(vec2.create(), startPosition, CharacterPhysical.headOffset), - CharacterPhysical.headRadius, + vec2.add(vec2.create(), startPosition, PlayerCharacterPhysical.headOffset), + PlayerCharacterPhysical.headRadius, this, container, ); this.leftFoot = new CirclePhysical( - vec2.add(vec2.create(), startPosition, CharacterPhysical.leftFootOffset), - CharacterPhysical.feetRadius, + vec2.add(vec2.create(), startPosition, PlayerCharacterPhysical.leftFootOffset), + PlayerCharacterPhysical.feetRadius, this, container, ); this.rightFoot = new CirclePhysical( - vec2.add(vec2.create(), startPosition, CharacterPhysical.rightFootOffset), - CharacterPhysical.feetRadius, + vec2.add(vec2.create(), startPosition, PlayerCharacterPhysical.rightFootOffset), + PlayerCharacterPhysical.feetRadius, this, container, ); @@ -114,12 +122,16 @@ export class CharacterPhysical this.bound = new CirclePhysical( vec2.create(), - CharacterPhysical.boundRadius, + PlayerCharacterPhysical.boundRadius, this, container, ); } + public calculateUpdates(): UpdateObjectMessage { + return new UpdateGameObjectMessage(this, ['head', 'leftFoot', 'rightFoot']); + } + public handleMovementAction(c: MoveActionCommand) { this.movementActions.push(c); } @@ -189,7 +201,7 @@ export class CharacterPhysical getBoundingBoxOfCircle( new Circle( this.center, - CharacterPhysical.boundRadius + settings.maxGravityDistance, + PlayerCharacterPhysical.boundRadius + settings.maxGravityDistance, ), ), ); @@ -250,9 +262,9 @@ export class CharacterPhysical const bodyCenter = vec2.add(vec2.create(), this.head.center, this.leftFoot.center); vec2.add(bodyCenter, bodyCenter, this.rightFoot.center); vec2.scale(bodyCenter, bodyCenter, 1 / 3); - this.springMove(this.leftFoot, bodyCenter, CharacterPhysical.leftFootOffset); - this.springMove(this.rightFoot, bodyCenter, CharacterPhysical.rightFootOffset); - this.springMove(this.head, bodyCenter, CharacterPhysical.headOffset); + this.springMove(this.leftFoot, bodyCenter, PlayerCharacterPhysical.leftFootOffset); + this.springMove(this.rightFoot, bodyCenter, PlayerCharacterPhysical.rightFootOffset); + this.springMove(this.head, bodyCenter, PlayerCharacterPhysical.headOffset); } private springMove(object: CirclePhysical, center: vec2, offset: vec2) { diff --git a/backend/src/objects/projectile-physical.ts b/backend/src/objects/projectile-physical.ts index fb64343..336cade 100644 --- a/backend/src/objects/projectile-physical.ts +++ b/backend/src/objects/projectile-physical.ts @@ -6,6 +6,8 @@ import { DynamicPhysical } from '../physics/physicals/dynamic-physical'; import { PhysicalContainer } from '../physics/containers/physical-container'; import { PlanetPhysical } from './planet-physical'; import { ReactsToCollision } from '../physics/physicals/reacts-to-collision'; +import { UpdateObjectMessage } from 'shared/lib/src/objects/update-object-message'; +import { UpdateGameObjectMessage } from '../update-game-object-message'; @serializesTo(ProjectileBase) export class ProjectilePhysical @@ -15,6 +17,7 @@ export class ProjectilePhysical public readonly canMove = true; private isDestroyed = false; private bounceCount = 0; + private _boundingBox?: ImmutableBoundingBox; public object: CirclePhysical; @@ -28,7 +31,9 @@ export class ProjectilePhysical this.object = new CirclePhysical(center, radius, this, container, 0.9); } - private _boundingBox?: ImmutableBoundingBox; + public calculateUpdates(): UpdateObjectMessage { + return new UpdateGameObjectMessage(this, ['center']); + } public get boundingBox(): ImmutableBoundingBox { if (!this._boundingBox) { diff --git a/backend/src/physics/containers/bounding-box-list.ts b/backend/src/physics/containers/bounding-box-list.ts index 1a9f963..4311f62 100644 --- a/backend/src/physics/containers/bounding-box-list.ts +++ b/backend/src/physics/containers/bounding-box-list.ts @@ -1,4 +1,4 @@ -import { DynamicPhysical } from '../dynamic-physical'; +import { DynamicPhysical } from '../physicals/dynamic-physical'; import { BoundingBoxBase } from '../bounding-boxes/bounding-box-base'; export class BoundingBoxList { diff --git a/backend/src/physics/containers/bounding-box-tree.ts b/backend/src/physics/containers/bounding-box-tree.ts index 00b1371..62ca08a 100644 --- a/backend/src/physics/containers/bounding-box-tree.ts +++ b/backend/src/physics/containers/bounding-box-tree.ts @@ -1,5 +1,5 @@ import { BoundingBoxBase } from '../bounding-boxes/bounding-box-base'; -import { StaticPhysical } from './static-physical'; +import { StaticPhysical } from '../physicals/static-physical'; // source: https://github.com/ubilabs/kd-tree-javascript/blob/master/kdTree.js class Node { diff --git a/backend/src/physics/physicals/dynamic-physical.ts b/backend/src/physics/physicals/dynamic-physical.ts index a5e03c1..c5b1cc5 100644 --- a/backend/src/physics/physicals/dynamic-physical.ts +++ b/backend/src/physics/physicals/dynamic-physical.ts @@ -1,6 +1,9 @@ +import { UpdateObjectMessage } from 'shared/lib/src/objects/update-object-message'; import { PhysicalBase } from './physical-base'; export interface DynamicPhysical extends PhysicalBase { readonly canMove: true; step(deltaTimeInMilliseconds: number): void; + + calculateUpdates(): UpdateObjectMessage | null; } diff --git a/backend/src/players/player.ts b/backend/src/players/player.ts index faadb80..f245cce 100644 --- a/backend/src/players/player.ts +++ b/backend/src/players/player.ts @@ -14,27 +14,28 @@ import { SecondaryActionCommand, settings, Circle, + PlayerInformation, } from 'shared'; import { getTimeInMilliseconds } from '../helper/get-time-in-milliseconds'; -import { CharacterPhysical } from '../objects/character-physical'; import { ProjectilePhysical } from '../objects/projectile-physical'; - import { BoundingBox } from '../physics/bounding-boxes/bounding-box'; import { PhysicalContainer } from '../physics/containers/physical-container'; -import { PhysicalBase } from '../physics/physicals/physical-base'; import { getBoundingBoxOfCircle } from '../physics/functions/get-bounding-box-of-circle'; import { isCircleIntersecting } from '../physics/functions/is-circle-intersecting'; import { requestColor, freeColor } from './player-color-service'; +import { PlayerCharacterPhysical } from '../objects/player-character-physical'; +import { DynamicPhysical } from '../physics/physicals/dynamic-physical'; +import { Physical } from '../physics/physicals/physical'; export class Player extends CommandReceiver { - private character: CharacterPhysical; + private character: PlayerCharacterPhysical; private aspectRatio: number = 16 / 9; private isActive = true; private timeSinceLastProjectile = 0; - private objectsPreviouslyInViewArea: Array = []; - private objectsInViewArea: Array = []; + private objectsPreviouslyInViewArea: Array = []; + private objectsInViewArea: Array = []; private pingTime?: number; private _latency?: number; @@ -56,7 +57,10 @@ export class Player extends CommandReceiver { [MoveActionCommand.type]: (c: MoveActionCommand) => this.character.handleMovementAction(c), [SecondaryActionCommand.type]: (c: SecondaryActionCommand) => { - if (this.timeSinceLastProjectile < settings.projectileCreationInterval) { + if ( + !this.character.isAlive || + this.timeSinceLastProjectile < settings.projectileCreationInterval + ) { return; } @@ -88,7 +92,7 @@ export class Player extends CommandReceiver { const playerBoundingCircle = new Circle( playerPosition, - CharacterPhysical.boundRadius, + PlayerCharacterPhysical.boundRadius, ); const playerBoundingBox = getBoundingBoxOfCircle(playerBoundingCircle); @@ -97,27 +101,26 @@ export class Player extends CommandReceiver { return playerPosition; } - rotation += Math.PI / 12; - radius += 10; + rotation += Math.PI / 8; + radius += 30; } } constructor( + playerInfo: PlayerInformation, private readonly objects: PhysicalContainer, private readonly socket: SocketIO.Socket, ) { super(); const colorIndex = requestColor(); - this.character = new CharacterPhysical( + this.character = new PlayerCharacterPhysical( + playerInfo.name, colorIndex, objects, this.findEmptyPositionForPlayer(), ); - this.objectsPreviouslyInViewArea.push(this.character); - this.objectsInViewArea.push(this.character); - this.objects.addObject(this.character); socket.emit( @@ -138,6 +141,7 @@ export class Player extends CommandReceiver { this.sendObjects(); this.timeSinceLastProjectile += deltaTime; } + public sendObjects() { const viewArea = calculateViewArea(this.character.center, this.aspectRatio, 1.5); const bb = new BoundingBox(); @@ -161,7 +165,11 @@ export class Player extends CommandReceiver { TransportEvents.ServerToPlayer, serialize( new DeleteObjectsCommand([ - ...new Set(noLongerIntersecting.map((p) => p.gameObject.id)), + ...new Set( + noLongerIntersecting + .filter((p) => p.gameObject !== this.character) + .map((p) => p.gameObject.id), + ), ]), ), ); @@ -172,20 +180,25 @@ export class Player extends CommandReceiver { TransportEvents.ServerToPlayer, serialize( new CreateObjectsCommand([ - ...new Set(newlyIntersecting.map((p) => p.gameObject)), + ...new Set( + newlyIntersecting + .map((p) => p.gameObject) + .filter((g) => g !== this.character), + ), ]), ), ); } - this.socket.volatile.emit( + this.socket.emit( TransportEvents.ServerToPlayer, serialize( - new UpdateObjectsCommand([ - ...new Set( - this.objectsInViewArea.filter((p) => p.canMove).map((p) => p.gameObject), - ), - ]), + new UpdateObjectsCommand( + Array.from(new Set(this.objectsInViewArea)) + .filter((p) => p.canMove) + .map((p) => (p as DynamicPhysical).calculateUpdates()) + .filter((p) => p !== null) as any, + ), ), ); } diff --git a/backend/src/update-game-object-message.ts b/backend/src/update-game-object-message.ts new file mode 100644 index 0000000..181ab30 --- /dev/null +++ b/backend/src/update-game-object-message.ts @@ -0,0 +1,11 @@ +import { GameObject, serializesTo, UpdateMessage, UpdateObjectMessage } from 'shared'; + +@serializesTo(UpdateObjectMessage) +export class UpdateGameObjectMessage extends UpdateObjectMessage { + constructor(object: T, keys: Array) { + super( + object.id, + keys.map((k) => new UpdateMessage(k, object[k])), + ); + } +} diff --git a/frontend/src/index.html b/frontend/src/index.html index 667f31e..36fdd8c 100644 --- a/frontend/src/index.html +++ b/frontend/src/index.html @@ -15,6 +15,9 @@ + +
+

decla.red

@@ -41,7 +44,5 @@
-
- diff --git a/frontend/src/index.ts b/frontend/src/index.ts index 876a70c..945d38a 100644 --- a/frontend/src/index.ts +++ b/frontend/src/index.ts @@ -1,7 +1,12 @@ import { glMatrix } from 'gl-matrix'; -import { CharacterBase, LampBase, overrideDeserialization, PlanetBase } from 'shared'; -import { ProjectileBase } from 'shared/src/objects/types/projectile-base'; - +import { + CharacterBase, + LampBase, + overrideDeserialization, + PlanetBase, + PlayerCharacterBase, + ProjectileBase, +} from 'shared'; import { CharacterView } from './scripts/objects/character-view'; import { LampView } from './scripts/objects/lamp-view'; import { ProjectileView } from './scripts/objects/projectile-view'; @@ -10,43 +15,32 @@ import './styles/main.scss'; import { LandingPageBackground } from './scripts/landing-page-background'; import { JoinFormHandler } from './scripts/join-form-handler'; import { Game } from './scripts/game'; +import { PlayerCharacterView } from './scripts/objects/player-character-view'; glMatrix.setMatrixArrayType(Array); overrideDeserialization(CharacterBase, CharacterView); +overrideDeserialization(PlayerCharacterBase, PlayerCharacterView); overrideDeserialization(PlanetBase, PlanetView); overrideDeserialization(LampBase, LampView); overrideDeserialization(ProjectileBase, ProjectileView); -const addSupportForTabNavigation = () => - (document.onkeydown = (e) => { - if (e.key === ' ') { - (document.activeElement as HTMLElement)?.click(); - e.preventDefault(); - } - }); - -/*const removeUnnecessaryOutlines = () => - (document.onclick = (e) => { - (e.target as HTMLElement)?.blur(); - }); -*/ -addSupportForTabNavigation(); -//removeUnnecessaryOutlines(); - const main = async () => { try { const landingUI = document.querySelector('#landing-ui') as HTMLElement; - const background = new LandingPageBackground(); - const joinHandler = new JoinFormHandler( - document.querySelector('#join-game-form') as HTMLFormElement, - document.querySelector('#server-container') as HTMLElement, - ); + const joinGameForm = document.querySelector('#join-game-form') as HTMLFormElement; + const serverContainer = document.querySelector('#server-container') as HTMLElement; + const canvas = document.querySelector('canvas') as HTMLCanvasElement; + const overlay = document.querySelector('#overlay') as HTMLElement; + + const background = new LandingPageBackground(canvas); + const joinHandler = new JoinFormHandler(joinGameForm, serverContainer); + const playerDecision = await joinHandler.getPlayerDecision(); landingUI.style.display = 'none'; - console.log(playerDecision); + background.destroy(); - await new Game(playerDecision).start(); + await new Game(playerDecision, canvas, overlay).start(); } catch (e) { console.error(e); alert(e); diff --git a/frontend/src/scripts/game.ts b/frontend/src/scripts/game.ts index 2c11171..a6b7b52 100644 --- a/frontend/src/scripts/game.ts +++ b/frontend/src/scripts/game.ts @@ -16,6 +16,7 @@ import { TransportEvents, SetAspectRatioActionCommand, rgb, + PlayerInformation, } from 'shared'; import io from 'socket.io-client'; import { KeyboardListener } from './commands/generators/keyboard-listener'; @@ -32,15 +33,16 @@ import { Polygon } from './shapes/polygon'; export class Game { public readonly gameObjects = new GameObjectContainer(this); - private readonly canvas = document.querySelector('canvas') as HTMLCanvasElement; private renderer!: Renderer; private socket!: SocketIOClient.Socket; private promises: Promise<[void, void]>; private deltaTimeCalculator = new DeltaTimeCalculator(); - private overlay: HTMLElement = document.querySelector('#overlay') as HTMLDivElement; - constructor(playerDecision: PlayerDecision) { - console.log(playerDecision.server); + constructor( + private readonly playerDecision: PlayerDecision, + private readonly canvas: HTMLCanvasElement, + private readonly overlay: HTMLElement, + ) { this.promises = Promise.all([ this.setupCommunication(playerDecision.server), this.setupRenderer(), @@ -66,7 +68,9 @@ export class Game { this.socket.emit(TransportEvents.Pong); }); - this.socket.emit(TransportEvents.PlayerJoining, null); + this.socket.emit(TransportEvents.PlayerJoining, { + name: this.playerDecision.playerName, + } as PlayerInformation); broadcastCommands( [ @@ -98,7 +102,7 @@ export class Game { }, { ...CircleLight.descriptor, - shaderCombinationSteps: [0, 1, 2, 4, 8, 16], + shaderCombinationSteps: [0, 1, 2, 4, 8], }, { ...Flashlight.descriptor, diff --git a/frontend/src/scripts/landing-page-background.ts b/frontend/src/scripts/landing-page-background.ts index 5037fac..fda6efc 100644 --- a/frontend/src/scripts/landing-page-background.ts +++ b/frontend/src/scripts/landing-page-background.ts @@ -18,10 +18,9 @@ const LangindPagePolygon = NoisyPolygonFactory( ); export class LandingPageBackground { - private readonly canvas = document.querySelector('canvas') as HTMLCanvasElement; private renderer!: Renderer; - constructor() { + constructor(private readonly canvas: HTMLCanvasElement) { this.start(); } diff --git a/frontend/src/scripts/objects/camera.ts b/frontend/src/scripts/objects/camera.ts index 437d2b0..1116fc8 100644 --- a/frontend/src/scripts/objects/camera.ts +++ b/frontend/src/scripts/objects/camera.ts @@ -1,6 +1,6 @@ import { vec2 } from 'gl-matrix'; import { Renderer } from 'sdf-2d'; -import { calculateViewArea, GameObject, mixRgb, settings } from 'shared'; +import { calculateViewArea, GameObject, mixRgb, settings, UpdateMessage } from 'shared'; import { Game } from '../game'; import { ViewObject } from './view-object'; @@ -14,6 +14,10 @@ export class Camera extends GameObject implements ViewObject { super(null); } + public update(updates: Array) { + throw new Error(); + } + public step(deltaTimeInMilliseconds: number): void {} public draw(renderer: Renderer) { diff --git a/frontend/src/scripts/objects/character-view.ts b/frontend/src/scripts/objects/character-view.ts index 8f7560e..6f617c7 100644 --- a/frontend/src/scripts/objects/character-view.ts +++ b/frontend/src/scripts/objects/character-view.ts @@ -1,6 +1,6 @@ import { vec2 } from 'gl-matrix'; import { Renderer } from 'sdf-2d'; -import { CharacterBase, Circle, Id } from 'shared'; +import { CharacterBase, Circle, Id, UpdateMessage } from 'shared'; import { BlobShape } from '../shapes/blob-shape'; import { ViewObject } from './view-object'; @@ -19,6 +19,10 @@ export class CharacterView extends CharacterBase implements ViewObject { this.shape = new BlobShape(colorIndex); } + public update(updates: Array) { + updates.forEach((u) => ((this as any)[u.key] = u.value)); + } + public get position(): vec2 { return this.head!.center; } diff --git a/frontend/src/scripts/objects/game-object-container.ts b/frontend/src/scripts/objects/game-object-container.ts index 4fcfcbf..2a03745 100644 --- a/frontend/src/scripts/objects/game-object-container.ts +++ b/frontend/src/scripts/objects/game-object-container.ts @@ -5,22 +5,23 @@ import { CreateObjectsCommand, CreatePlayerCommand, DeleteObjectsCommand, + GameObject, Id, UpdateObjectsCommand, } from 'shared'; import { Game } from '../game'; import { Camera } from './camera'; -import { CharacterView } from './character-view'; +import { PlayerCharacterView } from './player-character-view'; import { ViewObject } from './view-object'; export class GameObjectContainer extends CommandReceiver { protected objects: Map = new Map(); - public player!: CharacterView; + public player!: PlayerCharacterView; public camera!: Camera; protected commandExecutors: CommandExecutors = { [CreatePlayerCommand.type]: (c: CreatePlayerCommand) => { - this.player = c.character as CharacterView; + this.player = c.character as PlayerCharacterView; this.camera = new Camera(this.game); this.addObject(this.player); this.addObject(this.camera); @@ -33,13 +34,7 @@ export class GameObjectContainer extends CommandReceiver { c.ids.forEach((id: Id) => this.objects.delete(id)), [UpdateObjectsCommand.type]: (c: UpdateObjectsCommand) => { - c.objects.forEach((o) => { - this.objects.delete(o.id); - this.addObject(o as ViewObject); - if (o.id === this.player.id) { - this.player = o as CharacterView; - } - }); + c.updates.forEach((u) => this.objects.get(u.id)?.update(u.updates)); }, }; diff --git a/frontend/src/scripts/objects/lamp-view.ts b/frontend/src/scripts/objects/lamp-view.ts index ece2595..c4590a7 100644 --- a/frontend/src/scripts/objects/lamp-view.ts +++ b/frontend/src/scripts/objects/lamp-view.ts @@ -1,6 +1,6 @@ import { vec2, vec3 } from 'gl-matrix'; import { CircleLight, Renderer } from 'sdf-2d'; -import { CommandExecutors, Id, LampBase } from 'shared'; +import { CommandExecutors, Id, LampBase, UpdateMessage } from 'shared'; import { RenderCommand } from '../commands/types/render'; import { ViewObject } from './view-object'; @@ -16,6 +16,10 @@ export class LampView extends LampBase implements ViewObject { this.light = new CircleLight(center, color, lightness); } + public update(message: Array): void { + throw new Error('Method not implemented.'); + } + public step(deltaTimeInMilliseconds: number): void {} public draw(renderer: Renderer): void { diff --git a/frontend/src/scripts/objects/planet-view.ts b/frontend/src/scripts/objects/planet-view.ts index 22f1263..4f45f88 100644 --- a/frontend/src/scripts/objects/planet-view.ts +++ b/frontend/src/scripts/objects/planet-view.ts @@ -1,6 +1,6 @@ import { vec2 } from 'gl-matrix'; import { Drawable, Renderer } from 'sdf-2d'; -import { CommandExecutors, Id, Random, PlanetBase } from 'shared'; +import { CommandExecutors, Id, Random, PlanetBase, UpdateMessage } from 'shared'; import { RenderCommand } from '../commands/types/render'; import { Polygon } from '../shapes/polygon'; import { ViewObject } from './view-object'; @@ -18,6 +18,10 @@ export class PlanetView extends PlanetBase implements ViewObject { (this.shape as any).randomOffset = Random.getRandom(); } + public update(message: Array): void { + throw new Error('Method not implemented.'); + } + public step(deltaTimeInMilliseconds: number): void { (this.shape as any).randomOffset += deltaTimeInMilliseconds / 4000; } diff --git a/frontend/src/scripts/objects/player-character-view.ts b/frontend/src/scripts/objects/player-character-view.ts new file mode 100644 index 0000000..8d94cc9 --- /dev/null +++ b/frontend/src/scripts/objects/player-character-view.ts @@ -0,0 +1,37 @@ +import { vec2 } from 'gl-matrix'; +import { Renderer } from 'sdf-2d'; +import { Circle, Id, PlayerCharacterBase, UpdateMessage } from 'shared'; + +import { BlobShape } from '../shapes/blob-shape'; +import { ViewObject } from './view-object'; + +export class PlayerCharacterView extends PlayerCharacterBase implements ViewObject { + private shape: BlobShape; + + constructor( + id: Id, + name: string, + colorIndex: number, + head?: Circle, + leftFoot?: Circle, + rightFoot?: Circle, + ) { + super(id, name, colorIndex, head, leftFoot, rightFoot); + this.shape = new BlobShape(colorIndex); + } + + public update(updates: Array) { + updates.forEach((u) => ((this as any)[u.key] = u.value)); + } + + public get position(): vec2 { + return this.head!.center; + } + + public step(deltaTimeInMilliseconds: number): void {} + + public draw(renderer: Renderer): void { + this.shape.setCircles([this.head!, this.leftFoot!, this.rightFoot!]); + renderer.addDrawable(this.shape); + } +} diff --git a/frontend/src/scripts/objects/projectile-view.ts b/frontend/src/scripts/objects/projectile-view.ts index 8968475..86c2047 100644 --- a/frontend/src/scripts/objects/projectile-view.ts +++ b/frontend/src/scripts/objects/projectile-view.ts @@ -1,6 +1,6 @@ import { vec2 } from 'gl-matrix'; import { CircleLight, Renderer } from 'sdf-2d'; -import { Id, ProjectileBase, rgb } from 'shared'; +import { Id, ProjectileBase, rgb, UpdateMessage } from 'shared'; import { ViewObject } from './view-object'; import { Circle } from '../shapes/circle'; @@ -14,7 +14,14 @@ export class ProjectileView extends ProjectileBase implements ViewObject { this.light = new CircleLight(center, rgb(1, 0.5, 0), 0.15); } - public step(deltaTimeInMilliseconds: number): void {} + update(updates: Array): void { + updates.forEach((u) => ((this as any)[u.key] = u.value)); + } + + public step(deltaTimeInMilliseconds: number): void { + this.circle.center = this.center; + this.light.center = this.center; + } public draw(renderer: Renderer): void { renderer.addDrawable(this.circle); diff --git a/frontend/src/scripts/objects/view-object.ts b/frontend/src/scripts/objects/view-object.ts index d3ae529..a395011 100644 --- a/frontend/src/scripts/objects/view-object.ts +++ b/frontend/src/scripts/objects/view-object.ts @@ -1,7 +1,8 @@ import { Renderer } from 'sdf-2d'; -import { GameObject } from 'shared'; +import { GameObject, UpdateMessage } from 'shared'; export interface ViewObject extends GameObject { + update(updates: Array): void; step(deltaTimeInMilliseconds: number): void; draw(renderer: Renderer): void; } diff --git a/frontend/src/styles/main.scss b/frontend/src/styles/main.scss index 42b56cf..e0d97fd 100644 --- a/frontend/src/styles/main.scss +++ b/frontend/src/styles/main.scss @@ -49,9 +49,10 @@ canvas { body { #landing-ui { - position: absolute; width: 100%; height: 100%; + position: absolute; + top: 0; display: flex; flex-direction: column; @@ -60,15 +61,13 @@ body { } #overlay { - margin: 0.5rem 1.25rem; + height: 100%; + width: 100%; position: absolute; - right: 0; - font-size: 0.75rem; - white-space: pre; - font-family: 'Lucida Console', Monaco, monospace; + top: 0; - @media (max-width: $breakpoint) { - font-size: 0.6rem; - } + pointer-events: none; + + font-size: 0.75rem; } } diff --git a/shared/src/commands/types/update-objects.ts b/shared/src/commands/types/update-objects.ts index 8469483..8ff9356 100644 --- a/shared/src/commands/types/update-objects.ts +++ b/shared/src/commands/types/update-objects.ts @@ -1,14 +1,15 @@ -import { GameObject } from '../../objects/game-object'; +import { vec2 } from 'gl-matrix'; +import { UpdateObjectMessage } from '../../objects/update-object-message'; import { serializable } from '../../transport/serialization/serializable'; import { Command } from '../command'; @serializable export class UpdateObjectsCommand extends Command { - public constructor(public readonly objects: Array) { + public constructor(public readonly updates: Array) { super(); } public toArray(): Array { - return [this.objects]; + return [this.updates]; } } diff --git a/shared/src/main.ts b/shared/src/main.ts index 94325b5..6154297 100644 --- a/shared/src/main.ts +++ b/shared/src/main.ts @@ -2,10 +2,10 @@ export * from './commands/command'; export * from './commands/types/create-objects'; export * from './commands/types/create-player'; export * from './commands/types/delete-objects'; -export * from './commands/types/update-objects'; export * from './commands/types/ternary-action'; export * from './commands/types/move-action'; export * from './commands/types/primary-action'; +export * from './commands/types/update-objects'; export * from './commands/types/secondary-action'; export * from './commands/command-receiver'; export * from './commands/command-executors'; @@ -36,9 +36,13 @@ export * from './transport/serialization/serializes-to'; export * from './transport/serialization/serializable'; export * from './transport/serialization/override-deserialization'; export * from './objects/types/character-base'; +export * from './objects/update-message'; +export * from './objects/types/player-character-base'; export * from './objects/types/lamp-base'; export * from './objects/types/planet-base'; export * from './objects/types/projectile-base'; +export * from './objects/update-message'; +export * from './objects/update-object-message'; export * from './settings'; export * from './transport/transport-events'; export * from './transport/identity'; diff --git a/shared/src/objects/interpolation-type.ts b/shared/src/objects/interpolation-type.ts new file mode 100644 index 0000000..49a8aed --- /dev/null +++ b/shared/src/objects/interpolation-type.ts @@ -0,0 +1,5 @@ +export enum InterpolationType { + flat = 'flat', + linear = 'linear', + linearRotation = 'linearRotation', +} diff --git a/shared/src/objects/types/player-character-base.ts b/shared/src/objects/types/player-character-base.ts new file mode 100644 index 0000000..61d9e62 --- /dev/null +++ b/shared/src/objects/types/player-character-base.ts @@ -0,0 +1,23 @@ +import { CharacterBase } from './character-base'; +import { Circle } from '../../helper/circle'; +import { Id } from '../../transport/identity'; +import { serializable } from '../../transport/serialization/serializable'; + +@serializable +export class PlayerCharacterBase extends CharacterBase { + constructor( + id: Id, + public name: string, + colorIndex: number, + head?: Circle, + leftFoot?: Circle, + rightFoot?: Circle, + ) { + super(id, colorIndex, head, leftFoot, rightFoot); + } + + public toArray(): Array { + const { id, name, colorIndex, head, leftFoot, rightFoot } = this; + return [id, name, colorIndex, head, leftFoot, rightFoot]; + } +} diff --git a/shared/src/objects/update-message.ts b/shared/src/objects/update-message.ts new file mode 100644 index 0000000..7ebb56c --- /dev/null +++ b/shared/src/objects/update-message.ts @@ -0,0 +1,15 @@ +import { serializable } from '../transport/serialization/serializable'; +import { InterpolationType } from './interpolation-type'; + +@serializable +export class UpdateMessage { + constructor( + public key: string, + public value: any, + public interpolationType?: InterpolationType, + ) {} + + public toArray(): Array { + return [this.key, this.value, this.interpolationType]; + } +} diff --git a/shared/src/objects/update-object-message.ts b/shared/src/objects/update-object-message.ts new file mode 100644 index 0000000..89c57a0 --- /dev/null +++ b/shared/src/objects/update-object-message.ts @@ -0,0 +1,12 @@ +import { Id } from '../main'; +import { serializable } from '../transport/serialization/serializable'; +import { UpdateMessage } from './update-message'; + +@serializable +export class UpdateObjectMessage { + constructor(public id: Id, public updates: Array) {} + + public toArray(): Array { + return [this.id, this.updates]; + } +} diff --git a/shared/tsconfig.json b/shared/tsconfig.json index 3a55c4e..f85c232 100644 --- a/shared/tsconfig.json +++ b/shared/tsconfig.json @@ -13,6 +13,5 @@ "module": "commonjs", "composite": true, "lib": ["dom", "es2017"] - }, - "include": ["src/**/*.ts"] + } } From ec0520698e06b62e735520643e75a2af49cb48f7 Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Sat, 17 Oct 2020 18:46:12 +0200 Subject: [PATCH 012/101] Fix build --- .github/workflows/main.yaml | 18 +----------------- backend/Dockerfile | 2 +- package.json | 5 ++++- 3 files changed, 6 insertions(+), 19 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 69ccf48..d3cddad 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -16,9 +16,7 @@ jobs: lfs: true - name: Build project run: | - npm install - npm run initialize - npm run build + yarn && yarn run build - name: Deploy frontend uses: w9jds/firebase-action@master with: @@ -26,17 +24,3 @@ jobs: env: FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }} PROJECT_PATH: frontend - - name: Authenticate with dockerhub - run: | - docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASSWORD }} - - name: Install buildx - id: buildx - uses: crazy-max/ghaction-docker-buildx@v1 - with: - version: latest - - name: Build and push server image - run: | - docker buildx build \ - --tag $CONTAINER_REGISTRY/declared-server:latest \ - --platform linux/amd64,linux/arm/v7,linux/arm64 . --push - working-directory: backend diff --git a/backend/Dockerfile b/backend/Dockerfile index 3ea763a..dde1414 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -2,7 +2,7 @@ FROM node:14.13.0-alpine3.10 COPY package.json . -RUN npm install --production +RUN yarn install --production=true COPY dist/main.js main.js diff --git a/package.json b/package.json index 31ff546..faa4718 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,11 @@ "**" ] }, + "devDependencies": { + "concurrently": "^5.3.0" + }, "scripts": { - "build": "yarn workspaces shared run build && yarn workspaces frontend run build && yarn workspaces backend run build", + "build": "yarn workspace shared run build && yarn workspace decla.red-frontend run build && yarn workspace declared-server run build", "lint": "eslint './**/src/**/*.{js,ts,json}' --fix", "frontend": "yarn workspace decla.red-frontend start", "shared": "yarn workspace shared start", From e02a5b264c299da7e3cbeb74239fc7cb3d5e3365 Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Sun, 18 Oct 2020 10:36:16 +0200 Subject: [PATCH 013/101] Change ts compile error --- backend/Dockerfile | 11 ----------- backend/package.json | 1 + 2 files changed, 1 insertion(+), 11 deletions(-) delete mode 100644 backend/Dockerfile diff --git a/backend/Dockerfile b/backend/Dockerfile deleted file mode 100644 index dde1414..0000000 --- a/backend/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM node:14.13.0-alpine3.10 - -COPY package.json . - -RUN yarn install --production=true - -COPY dist/main.js main.js - -EXPOSE 3000 - -CMD [ "node", "main.js" ] diff --git a/backend/package.json b/backend/package.json index 0d61c0d..2a22a29 100644 --- a/backend/package.json +++ b/backend/package.json @@ -23,6 +23,7 @@ "webpack-node-externals": "^2.5.2" }, "devDependencies": { + "@types/minimist": "^1.2.0", "@types/cors": "^2.8.7", "@types/express": "^4.17.8", "@types/node": "^14.11.2", From 7c76b16d13e2202f53f3581492baba27437ecb0e Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Tue, 20 Oct 2020 08:56:38 +0200 Subject: [PATCH 014/101] Improve gameplay --- .do/apps.yml | 2 +- Dockerfile | 4 +- backend/src/game-server.ts | 4 +- backend/src/map/create-world.ts | 21 +- backend/src/objects/circle-physical.ts | 4 - backend/src/objects/planet-physical.ts | 52 ++++- .../src/objects/player-character-physical.ts | 61 +++++- backend/src/objects/projectile-physical.ts | 28 ++- .../src/physics/physicals/dynamic-physical.ts | 3 - backend/src/players/player-color-service.ts | 15 -- backend/src/players/player-team-service.ts | 22 +++ backend/src/players/player.ts | 186 +++++++++--------- frontend/package.json | 2 +- frontend/src/index.html | 31 ++- frontend/src/index.ts | 16 +- frontend/src/scripts/game.ts | 131 +++++++----- frontend/src/scripts/handle-full-screen.ts | 27 +++ .../scripts/helper/delta-time-calculator.ts | 25 --- .../src/scripts/landing-page-background.ts | 87 ++++---- frontend/src/scripts/objects/camera.ts | 6 +- .../src/scripts/objects/character-view.ts | 14 +- .../scripts/objects/game-object-container.ts | 13 +- frontend/src/scripts/objects/lamp-view.ts | 8 +- frontend/src/scripts/objects/planet-view.ts | 50 ++++- .../scripts/objects/player-character-view.ts | 61 +++++- .../src/scripts/objects/projectile-view.ts | 30 +-- frontend/src/scripts/objects/view-object.ts | 4 +- frontend/src/scripts/shapes/circle.ts | 3 - frontend/src/scripts/shapes/planet-shape.ts | 163 +++++++++++++++ frontend/src/scripts/shapes/polygon.ts | 4 - frontend/src/styles/form.scss | 55 +++--- frontend/src/styles/main.scss | 109 +++++++++- frontend/src/styles/mixins.scss | 11 ++ frontend/static/declared.png | Bin 26027 -> 0 bytes frontend/static/declared.psd | 3 - frontend/static/maximize.svg | 7 + frontend/static/minimize.svg | 7 + frontend/static/settings.svg | 4 + frontend/tsconfig.json | 5 +- frontend/webpack.config.js | 10 + shared/src/commands/types/player-died.ts | 14 ++ .../commands/types/update-planet-ownership.ts | 17 ++ shared/src/helper/hsl.ts | 34 ++++ shared/src/main.ts | 4 + shared/src/objects/game-object.ts | 9 + shared/src/objects/types/character-base.ts | 7 +- shared/src/objects/types/character-team.ts | 4 + shared/src/objects/types/planet-base.ts | 12 +- .../objects/types/player-character-base.ts | 9 +- shared/src/objects/types/projectile-base.ts | 10 +- shared/src/settings.ts | 64 +++--- shared/tsconfig.json | 3 +- tsconfig.json | 13 ++ 53 files changed, 1084 insertions(+), 404 deletions(-) delete mode 100644 backend/src/players/player-color-service.ts create mode 100644 backend/src/players/player-team-service.ts create mode 100644 frontend/src/scripts/handle-full-screen.ts delete mode 100644 frontend/src/scripts/helper/delta-time-calculator.ts delete mode 100644 frontend/src/scripts/shapes/circle.ts create mode 100644 frontend/src/scripts/shapes/planet-shape.ts delete mode 100644 frontend/src/scripts/shapes/polygon.ts create mode 100644 frontend/src/styles/mixins.scss delete mode 100644 frontend/static/declared.png delete mode 100644 frontend/static/declared.psd create mode 100644 frontend/static/maximize.svg create mode 100644 frontend/static/minimize.svg create mode 100644 frontend/static/settings.svg create mode 100644 shared/src/commands/types/player-died.ts create mode 100644 shared/src/commands/types/update-planet-ownership.ts create mode 100644 shared/src/helper/hsl.ts create mode 100644 shared/src/objects/types/character-team.ts create mode 100644 tsconfig.json diff --git a/.do/apps.yml b/.do/apps.yml index 0a41826..3727b4b 100644 --- a/.do/apps.yml +++ b/.do/apps.yml @@ -9,7 +9,7 @@ services: http_port: 3000 instance_count: 1 instance_size_slug: basic-xxs - run_command: node main.js --name=Frankfurt --seed=102 + run_command: ' node main.js --name=Frankfurt --seed=102' name: decla-red-server routes: - path: / diff --git a/Dockerfile b/Dockerfile index 79c3b51..0a1d9b6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,4 +13,6 @@ RUN npm install --production COPY --from=build backend/dist/main.js main.js EXPOSE 3000 -CMD [ "node", "main.js" ] + +CMD ["--port=3000", "--name=Docker server", "--seed=500"] +ENTRYPOINT [ "node", "main.js" ] diff --git a/backend/src/game-server.ts b/backend/src/game-server.ts index 2c8403d..93446a0 100644 --- a/backend/src/game-server.ts +++ b/backend/src/game-server.ts @@ -29,7 +29,7 @@ export class GameServer { io.on('connection', (socket: SocketIO.Socket) => { socket.on(TransportEvents.PlayerJoining, (playerInfo: PlayerInformation) => { - const player = new Player(playerInfo, this.objects, socket); + const player = new Player(playerInfo, this.players, this.objects, socket); this.players.push(player); socket.on(TransportEvents.PlayerToServer, (json: string) => { const command = deserialize(json); @@ -61,7 +61,7 @@ export class GameServer { this.deltaTimes.sort((a, b) => a - b); console.log( `Median physics time: ${this.deltaTimes[ - framesBetweenDeltaTimeCalculation + Math.floor(framesBetweenDeltaTimeCalculation / 2) ].toFixed(2)} ms`, ); console.log( diff --git a/backend/src/map/create-world.ts b/backend/src/map/create-world.ts index d6e9e71..f6c7001 100644 --- a/backend/src/map/create-world.ts +++ b/backend/src/map/create-world.ts @@ -1,5 +1,5 @@ import { vec2, vec3 } from 'gl-matrix'; -import { Random, settings, PlanetBase } from 'shared'; +import { Random, settings, PlanetBase, hsl } from 'shared'; import { LampPhysical } from '../objects/lamp-physical'; import { PlanetPhysical } from '../objects/planet-physical'; import { PhysicalContainer } from '../physics/containers/physical-container'; @@ -17,7 +17,7 @@ export const createWorld = (objectContainer: PhysicalContainer) => { ), ); - for (let i = 0; i < worldSize / 400; i++) { + for (let i = 0; i < 15; i++) { console.log('planet', i); let position: vec2; @@ -44,7 +44,7 @@ export const createWorld = (objectContainer: PhysicalContainer) => { ); } - for (let i = 0; i < worldSize / 350; i++) { + for (let i = 0; i < 15; i++) { console.log('light', i); let position: vec2; do { @@ -54,20 +54,17 @@ export const createWorld = (objectContainer: PhysicalContainer) => { ); } while ( evaluateSdf(position, objects) < 200 || - lights.find((l) => l.distance(position) < 1800) + lights.find((l) => l.distance(position) < 1500) ); lights.push( new LampPhysical( position, - vec3.normalize( - vec3.create(), - vec3.fromValues( - Random.getRandomInRange(0.5, 1), - 0, - Random.getRandomInRange(0.5, 1), - ), + hsl( + Random.getRandomInRange(0, 360), + Random.getRandomInRange(50, 100), + Random.getRandomInRange(25, 50), ), - Random.getRandomInRange(0.25, 1), + Random.getRandomInRange(0.5, 2), ), ); } diff --git a/backend/src/objects/circle-physical.ts b/backend/src/objects/circle-physical.ts index 753167f..6e1afec 100644 --- a/backend/src/objects/circle-physical.ts +++ b/backend/src/objects/circle-physical.ts @@ -30,10 +30,6 @@ export class CirclePhysical implements Circle, DynamicPhysical, ReactsToCollisio this.recalculateBoundingBox(); } - public calculateUpdates(): UpdateObjectMessage | null { - return null; - } - public get boundingBox(): BoundingBoxBase { return this._boundingBox; } diff --git a/backend/src/objects/planet-physical.ts b/backend/src/objects/planet-physical.ts index a53b053..561a4c4 100644 --- a/backend/src/objects/planet-physical.ts +++ b/backend/src/objects/planet-physical.ts @@ -9,23 +9,28 @@ import { serializesTo, settings, PlanetBase, + CharacterTeam, + UpdateObjectMessage, } from 'shared'; import { ImmutableBoundingBox } from '../physics/bounding-boxes/immutable-bounding-box'; import { StaticPhysical } from '../physics/physicals/static-physical'; +import { UpdateGameObjectMessage } from '../update-game-object-message'; @serializesTo(PlanetBase) export class PlanetPhysical extends PlanetBase implements StaticPhysical { public readonly canCollide = true; public readonly canMove = false; - private center: vec2; + + public static neutralPlanetCount = 0; + public static declaPlanetCount = 0; + public static redPlanetCount = 0; private _boundingBox?: ImmutableBoundingBox; constructor(vertices: Array) { super(id(), vertices); - this.center = vertices.reduce((sum, v) => vec2.add(sum, sum, v), vec2.create()); - vec2.scale(this.center, this.center, 1 / vertices.length); + PlanetPhysical.neutralPlanetCount++; } public distance(target: vec2): number { @@ -62,6 +67,47 @@ export class PlanetPhysical extends PlanetBase implements StaticPhysical { return sign * d; } + public calculateUpdates(): UpdateObjectMessage { + return new UpdateGameObjectMessage(this, ['ownership']); + } + + public takeControl(team: CharacterTeam, deltaTime: number) { + const previousOwnership = this.ownership; + if (team === CharacterTeam.decla) { + this.ownership -= (0.5 / settings.takeControlTimeInSeconds) * deltaTime; + if ( + previousOwnership >= 0.5 - settings.planetControlThreshold && + this.ownership < 0.5 - settings.planetControlThreshold + ) { + PlanetPhysical.declaPlanetCount++; + PlanetPhysical.neutralPlanetCount--; + } else if ( + previousOwnership > 0.5 + settings.planetControlThreshold && + previousOwnership <= 0.5 + settings.planetControlThreshold + ) { + PlanetPhysical.redPlanetCount--; + PlanetPhysical.neutralPlanetCount++; + } + } else { + this.ownership += (0.5 / settings.takeControlTimeInSeconds) * deltaTime; + if ( + previousOwnership < 0.5 + settings.planetControlThreshold && + this.ownership >= 0.5 + settings.planetControlThreshold + ) { + PlanetPhysical.redPlanetCount++; + PlanetPhysical.neutralPlanetCount--; + } else if ( + previousOwnership <= 0.5 - settings.planetControlThreshold && + previousOwnership > 0.5 + settings.planetControlThreshold + ) { + PlanetPhysical.declaPlanetCount--; + PlanetPhysical.neutralPlanetCount++; + } + } + + this.ownership = clamp01(this.ownership); + } + public get boundingBox(): ImmutableBoundingBox { if (!this._boundingBox) { const { xMin, xMax, yMin, yMax } = this.vertices.reduce( diff --git a/backend/src/objects/player-character-physical.ts b/backend/src/objects/player-character-physical.ts index 9e50b30..43955cd 100644 --- a/backend/src/objects/player-character-physical.ts +++ b/backend/src/objects/player-character-physical.ts @@ -9,6 +9,7 @@ import { GameObject, Circle, PlayerCharacterBase, + CharacterTeam, } from 'shared'; import { DynamicPhysical } from '../physics/physicals/dynamic-physical'; import { CirclePhysical } from './circle-physical'; @@ -32,6 +33,8 @@ export class PlayerCharacterPhysical private static readonly headRadius = 50; private static readonly feetRadius = 20; + private projectileStrength = settings.playerMaxStrength; + // offsets are meassured from (0, 0) private static readonly desiredHeadOffset = vec2.fromValues(0, 65); private static readonly desiredLeftFootOffset = vec2.fromValues(-20, 0); @@ -93,10 +96,11 @@ export class PlayerCharacterPhysical constructor( name: string, public readonly colorIndex: number, + team: CharacterTeam, private readonly container: PhysicalContainer, startPosition: vec2, ) { - super(id(), name, colorIndex); + super(id(), name, colorIndex, team, settings.playerMaxHealth); this.head = new CirclePhysical( vec2.add(vec2.create(), startPosition, PlayerCharacterPhysical.headOffset), @@ -129,7 +133,7 @@ export class PlayerCharacterPhysical } public calculateUpdates(): UpdateObjectMessage { - return new UpdateGameObjectMessage(this, ['head', 'leftFoot', 'rightFoot']); + return new UpdateGameObjectMessage(this, ['head', 'leftFoot', 'rightFoot', 'health']); } public handleMovementAction(c: MoveActionCommand) { @@ -137,12 +141,44 @@ export class PlayerCharacterPhysical } public onCollision(other: GameObject) { - if (other instanceof ProjectilePhysical) { + if (other instanceof ProjectilePhysical && other.team !== this.team) { other.destroy(); - this.destroy(); + this.health -= other.strength; + if (this.health <= 0) { + this.destroy(); + } } } + public shootTowards(position: vec2) { + if (!this.isAlive) { + return; + } + + const start = vec2.clone(this.center); + const direction = vec2.subtract(vec2.create(), position, start); + vec2.normalize(direction, direction); + vec2.add( + start, + start, + vec2.scale(vec2.create(), direction, settings.projectileStartOffset), + ); + const velocity = vec2.scale(direction, direction, settings.projectileSpeed); + vec2.add(velocity, velocity, this.velocity); + const strength = this.projectileStrength / 2; + this.projectileStrength -= strength; + const projectile = new ProjectilePhysical( + start, + 20, + this.colorIndex, + strength, + this.team, + velocity, + this.container, + ); + this.container.addObject(projectile); + } + public get boundingBox(): BoundingBoxBase { this.bound.center = this.head.center; return this.bound.boundingBox; @@ -197,6 +233,13 @@ export class PlayerCharacterPhysical this.currentPlanet = undefined; } + this.projectileStrength = Math.min( + settings.playerMaxStrength, + this.projectileStrength + settings.playerStrengthRegenerationPerSeconds * deltaTime, + ); + + this.currentPlanet?.takeControl(this.team, deltaTime); + const intersectingWithForcefield = this.container.findIntersecting( getBoundingBoxOfCircle( new Circle( @@ -205,7 +248,13 @@ export class PlayerCharacterPhysical ), ), ); - const actualGravity = forceAtPosition(this.center, intersectingWithForcefield); + const feetCenter = vec2.add( + vec2.create(), + this.leftFoot.center, + this.rightFoot.center, + ); + vec2.scale(feetCenter, feetCenter, 0.5); + const actualGravity = forceAtPosition(feetCenter, intersectingWithForcefield); const direction = this.averageAndResetMovementActions(); const movementForce = vec2.scale(direction, direction, settings.maxAcceleration); @@ -269,7 +318,7 @@ export class PlayerCharacterPhysical private springMove(object: CirclePhysical, center: vec2, offset: vec2) { // todo: make time-independent - const springConstant = 0.35; + const springConstant = 0.55; const desiredPosition = vec2.add(vec2.create(), center, offset); vec2.rotate(desiredPosition, desiredPosition, center, this.direction); diff --git a/backend/src/objects/projectile-physical.ts b/backend/src/objects/projectile-physical.ts index 336cade..e7d6886 100644 --- a/backend/src/objects/projectile-physical.ts +++ b/backend/src/objects/projectile-physical.ts @@ -1,5 +1,12 @@ import { vec2 } from 'gl-matrix'; -import { id, settings, serializesTo, ProjectileBase, GameObject } from 'shared'; +import { + id, + settings, + serializesTo, + ProjectileBase, + GameObject, + CharacterTeam, +} from 'shared'; import { ImmutableBoundingBox } from '../physics/bounding-boxes/immutable-bounding-box'; import { CirclePhysical } from './circle-physical'; import { DynamicPhysical } from '../physics/physicals/dynamic-physical'; @@ -8,6 +15,7 @@ import { PlanetPhysical } from './planet-physical'; import { ReactsToCollision } from '../physics/physicals/reacts-to-collision'; import { UpdateObjectMessage } from 'shared/lib/src/objects/update-object-message'; import { UpdateGameObjectMessage } from '../update-game-object-message'; +import { PlayerCharacterPhysical } from './player-character-physical'; @serializesTo(ProjectileBase) export class ProjectilePhysical @@ -15,6 +23,7 @@ export class ProjectilePhysical implements DynamicPhysical, ReactsToCollision { public readonly canCollide = true; public readonly canMove = true; + private isDestroyed = false; private bounceCount = 0; private _boundingBox?: ImmutableBoundingBox; @@ -24,15 +33,18 @@ export class ProjectilePhysical constructor( center: vec2, radius: number, + colorIndex: number, + public strength: number, + public team: CharacterTeam, private velocity: vec2, readonly container: PhysicalContainer, ) { - super(id(), center, radius); + super(id(), center, radius, colorIndex, strength); this.object = new CirclePhysical(center, radius, this, container, 0.9); } public calculateUpdates(): UpdateObjectMessage { - return new UpdateGameObjectMessage(this, ['center']); + return new UpdateGameObjectMessage(this, ['center', 'strength']); } public get boundingBox(): ImmutableBoundingBox { @@ -59,12 +71,20 @@ export class ProjectilePhysical } public onCollision(other: GameObject) { - if (this.bounceCount++ === settings.projectileMaxBounceCount) { + if ( + !(other instanceof PlayerCharacterPhysical && other.team === this.team) && + this.bounceCount++ === settings.projectileMaxBounceCount + ) { this.destroy(); } } public step(deltaTime: number) { + if ((this.strength -= settings.projectileFadeSpeed * deltaTime) < 0) { + this.destroy(); + return; + } + const gravity = vec2.create(); const intersecting = this.container.findIntersecting(this.boundingBox); intersecting.forEach((i) => { diff --git a/backend/src/physics/physicals/dynamic-physical.ts b/backend/src/physics/physicals/dynamic-physical.ts index c5b1cc5..a5e03c1 100644 --- a/backend/src/physics/physicals/dynamic-physical.ts +++ b/backend/src/physics/physicals/dynamic-physical.ts @@ -1,9 +1,6 @@ -import { UpdateObjectMessage } from 'shared/lib/src/objects/update-object-message'; import { PhysicalBase } from './physical-base'; export interface DynamicPhysical extends PhysicalBase { readonly canMove: true; step(deltaTimeInMilliseconds: number): void; - - calculateUpdates(): UpdateObjectMessage | null; } diff --git a/backend/src/players/player-color-service.ts b/backend/src/players/player-color-service.ts deleted file mode 100644 index e23d49d..0000000 --- a/backend/src/players/player-color-service.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { settings } from 'shared'; - -const colorUsage: Array = new Array(settings.playerColors.length).fill(false); - -export const requestColor = (): number => { - const index = colorUsage.findIndex((a) => !a); - if (index >= 0) { - colorUsage[index] = true; - } - return index + settings.playerColorIndexOffset; -}; - -export const freeColor = (index: number) => { - colorUsage[index - settings.playerColorIndexOffset] = false; -}; diff --git a/backend/src/players/player-team-service.ts b/backend/src/players/player-team-service.ts new file mode 100644 index 0000000..39d1ce3 --- /dev/null +++ b/backend/src/players/player-team-service.ts @@ -0,0 +1,22 @@ +import { CharacterTeam, Random } from 'shared'; + +let declaCount = 0; +let redCount = 0; + +export const requestTeam = (): { team: CharacterTeam; colorIndex: number } => { + if ((declaCount === redCount && Random.getRandom() > 0.5) || declaCount < redCount) { + declaCount++; + return { team: CharacterTeam.decla, colorIndex: 0 }; + } else { + redCount++; + return { team: CharacterTeam.red, colorIndex: 1 }; + } +}; + +export const freeTeam = (team: CharacterTeam) => { + if (team === CharacterTeam.decla) { + declaCount--; + } else { + redCount--; + } +}; diff --git a/backend/src/players/player.ts b/backend/src/players/player.ts index f245cce..efafb49 100644 --- a/backend/src/players/player.ts +++ b/backend/src/players/player.ts @@ -12,30 +12,32 @@ import { SetAspectRatioActionCommand, calculateViewArea, SecondaryActionCommand, + PlayerDiedCommand, settings, Circle, PlayerInformation, + CharacterTeam, + UpdatePlanetOwnershipCommand, + GameObject, + Command, + UpdateObjectMessage, } from 'shared'; import { getTimeInMilliseconds } from '../helper/get-time-in-milliseconds'; -import { ProjectilePhysical } from '../objects/projectile-physical'; import { BoundingBox } from '../physics/bounding-boxes/bounding-box'; import { PhysicalContainer } from '../physics/containers/physical-container'; import { getBoundingBoxOfCircle } from '../physics/functions/get-bounding-box-of-circle'; import { isCircleIntersecting } from '../physics/functions/is-circle-intersecting'; -import { requestColor, freeColor } from './player-color-service'; import { PlayerCharacterPhysical } from '../objects/player-character-physical'; -import { DynamicPhysical } from '../physics/physicals/dynamic-physical'; import { Physical } from '../physics/physicals/physical'; +import { freeTeam, requestTeam } from './player-team-service'; +import { PlanetPhysical } from '../objects/planet-physical'; export class Player extends CommandReceiver { - private character: PlayerCharacterPhysical; + private character?: PlayerCharacterPhysical | null; private aspectRatio: number = 16 / 9; private isActive = true; - private timeSinceLastProjectile = 0; - - private objectsPreviouslyInViewArea: Array = []; - private objectsInViewArea: Array = []; + private objectsPreviouslyInViewArea: Array = []; private pingTime?: number; private _latency?: number; @@ -55,35 +57,20 @@ export class Player extends CommandReceiver { [SetAspectRatioActionCommand.type]: (v: SetAspectRatioActionCommand) => (this.aspectRatio = v.aspectRatio), [MoveActionCommand.type]: (c: MoveActionCommand) => - this.character.handleMovementAction(c), + this.character?.handleMovementAction(c), [SecondaryActionCommand.type]: (c: SecondaryActionCommand) => { - if ( - !this.character.isAlive || - this.timeSinceLastProjectile < settings.projectileCreationInterval - ) { - return; - } - - const start = vec2.clone(this.character.center); - const direction = vec2.subtract(vec2.create(), c.position, start); - vec2.normalize(direction, direction); - vec2.add( - start, - start, - vec2.scale(vec2.create(), direction, settings.projectileStartOffset), - ); - const velocity = vec2.scale(direction, direction, settings.projectileSpeed); - vec2.add(velocity, velocity, this.character.velocity); - const projectile = new ProjectilePhysical(start, 20, velocity, this.objects); - this.objects.addObject(projectile); - - this.timeSinceLastProjectile = 0; + this.character?.shootTowards(c.position); }, }; private findEmptyPositionForPlayer(): vec2 { - let rotation = 0; - let radius = 0; + let possibleCenter = this.players.find((p) => p.team === this.team)?.center; + if (!possibleCenter) { + possibleCenter = vec2.create(); + } + + let rotation = Math.atan2(possibleCenter.y, possibleCenter.x); + let radius = vec2.length(possibleCenter); for (;;) { const playerPosition = vec2.fromValues( radius * Math.cos(rotation), @@ -106,27 +93,21 @@ export class Player extends CommandReceiver { } } + public readonly team: CharacterTeam; + private colorIndex: number; + constructor( - playerInfo: PlayerInformation, + private readonly playerInfo: PlayerInformation, + private readonly players: Array, private readonly objects: PhysicalContainer, private readonly socket: SocketIO.Socket, ) { super(); - const colorIndex = requestColor(); + const { team, colorIndex } = requestTeam(); + this.team = team; + this.colorIndex = colorIndex; - this.character = new PlayerCharacterPhysical( - playerInfo.name, - colorIndex, - objects, - this.findEmptyPositionForPlayer(), - ); - - this.objects.addObject(this.character); - - socket.emit( - TransportEvents.ServerToPlayer, - serialize(new CreatePlayerCommand(this.character)), - ); + this.createCharacter(); socket.on( TransportEvents.Pong, @@ -134,78 +115,99 @@ export class Player extends CommandReceiver { ); this.measureLatency(); - this.sendObjects(); + this.step(0); } + private createCharacter() { + this.character = new PlayerCharacterPhysical( + this.playerInfo.name.slice(0, 20), + this.colorIndex, + this.team, + this.objects, + this.findEmptyPositionForPlayer(), + ); + + this.objects.addObject(this.character); + this.objectsPreviouslyInViewArea.push(this.character); + + this.socket.emit( + TransportEvents.ServerToPlayer, + serialize(new CreatePlayerCommand(this.character)), + ); + } + + private center: vec2 = vec2.create(); + private timeUntilRespawn = 0; public step(deltaTime: number) { - this.sendObjects(); - this.timeSinceLastProjectile += deltaTime; - } + if (this.character) { + this.center = this.character?.center; - public sendObjects() { - const viewArea = calculateViewArea(this.character.center, this.aspectRatio, 1.5); + if (!this.character.isAlive) { + this.socket.emit( + TransportEvents.ServerToPlayer, + serialize(new PlayerDiedCommand(settings.playerDiedTimeout)), + ); + this.character = null; + this.timeUntilRespawn = settings.playerDiedTimeout; + } + } else if ((this.timeUntilRespawn -= deltaTime) < 0) { + this.createCharacter(); + } + + const viewArea = calculateViewArea(this.center, this.aspectRatio, 1.5); const bb = new BoundingBox(); bb.topLeft = viewArea.topLeft; bb.size = viewArea.size; - this.objectsInViewArea = this.objects.findIntersecting(bb); + const objectsInViewArea = Array.from( + new Set(this.objects.findIntersecting(bb).map((o) => o.gameObject)), + ); - const newlyIntersecting = this.objectsInViewArea.filter( + const newlyIntersecting = objectsInViewArea.filter( (o) => !this.objectsPreviouslyInViewArea.includes(o), ); const noLongerIntersecting = this.objectsPreviouslyInViewArea.filter( - (o) => !this.objectsInViewArea.includes(o), + (o) => !objectsInViewArea.includes(o), ); - this.objectsPreviouslyInViewArea = this.objectsInViewArea; + this.objectsPreviouslyInViewArea = objectsInViewArea; if (noLongerIntersecting.length > 0) { - this.socket.emit( - TransportEvents.ServerToPlayer, - serialize( - new DeleteObjectsCommand([ - ...new Set( - noLongerIntersecting - .filter((p) => p.gameObject !== this.character) - .map((p) => p.gameObject.id), - ), - ]), - ), - ); + this.sendToPlayer(new DeleteObjectsCommand(noLongerIntersecting.map((g) => g.id))); } if (newlyIntersecting.length > 0) { - this.socket.emit( - TransportEvents.ServerToPlayer, - serialize( - new CreateObjectsCommand([ - ...new Set( - newlyIntersecting - .map((p) => p.gameObject) - .filter((g) => g !== this.character), - ), - ]), - ), - ); + this.sendToPlayer(new CreateObjectsCommand(newlyIntersecting)); } - this.socket.emit( - TransportEvents.ServerToPlayer, - serialize( - new UpdateObjectsCommand( - Array.from(new Set(this.objectsInViewArea)) - .filter((p) => p.canMove) - .map((p) => (p as DynamicPhysical).calculateUpdates()) - .filter((p) => p !== null) as any, - ), + this.sendToPlayer( + new UpdateObjectsCommand( + this.objectsPreviouslyInViewArea + .map((g) => g.calculateUpdates()) + .filter((u) => u) as Array, + ), + ); + + this.sendToPlayer( + new UpdatePlanetOwnershipCommand( + PlanetPhysical.declaPlanetCount, + PlanetPhysical.redPlanetCount, + PlanetPhysical.neutralPlanetCount, ), ); } + private sendToPlayer(command: Command) { + this.socket.emit(TransportEvents.ServerToPlayer, serialize(command)); + } + public destroy() { this.isActive = false; - freeColor(this.character.colorIndex); - this.character.destroy(); + freeTeam(this.team); + + if (this.character) { + this.character.destroy(); + } } } diff --git a/frontend/package.json b/frontend/package.json index a951f71..54c1224 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -45,7 +45,7 @@ "ts-loader": "^8.0.3", "sass": "^1.26.3", "sass-loader": "^9.0.2", - "sdf-2d": "^0.5.3", + "sdf-2d": "^0.6.0", "shared": "0.0.0", "socket.io-client": "^2.3.1", "source-map-loader": "^1.1.0", diff --git a/frontend/src/index.html b/frontend/src/index.html index 36fdd8c..db4f744 100644 --- a/frontend/src/index.html +++ b/frontend/src/index.html @@ -4,7 +4,8 @@ @@ -15,10 +16,12 @@ + +
-
+

decla.red

@@ -41,8 +44,28 @@
-
+ - + open-settings + +
+

Settings

+ + + +
+ + minimize-application + maximize-application diff --git a/frontend/src/index.ts b/frontend/src/index.ts index 945d38a..6961c9b 100644 --- a/frontend/src/index.ts +++ b/frontend/src/index.ts @@ -14,6 +14,7 @@ import { PlanetView } from './scripts/objects/planet-view'; import './styles/main.scss'; import { LandingPageBackground } from './scripts/landing-page-background'; import { JoinFormHandler } from './scripts/join-form-handler'; +import { handleFullScreen } from './scripts/handle-full-screen'; import { Game } from './scripts/game'; import { PlayerCharacterView } from './scripts/objects/player-character-view'; @@ -32,15 +33,28 @@ const main = async () => { const serverContainer = document.querySelector('#server-container') as HTMLElement; const canvas = document.querySelector('canvas') as HTMLCanvasElement; const overlay = document.querySelector('#overlay') as HTMLElement; + const settings = document.querySelector('#settings') as HTMLElement; + const openSettings = document.querySelector('#open-settings') as HTMLElement; + const closeSettings = document.querySelector('#close-settings') as HTMLElement; + const minimize = document.querySelector('#minimize') as HTMLElement; + const maximize = document.querySelector('#maximize') as HTMLElement; + const enableRelativeMovementCheckbox = document.querySelector( + '#enable-relative-movement', + ) as HTMLElement; + + openSettings.addEventListener('click', () => (settings.style.visibility = 'visible')); + closeSettings.addEventListener('click', () => (settings.style.visibility = 'hidden')); const background = new LandingPageBackground(canvas); const joinHandler = new JoinFormHandler(joinGameForm, serverContainer); + handleFullScreen(minimize, maximize); const playerDecision = await joinHandler.getPlayerDecision(); landingUI.style.display = 'none'; background.destroy(); - await new Game(playerDecision, canvas, overlay).start(); + + new Game(playerDecision, canvas, overlay); } catch (e) { console.error(e); alert(e); diff --git a/frontend/src/scripts/game.ts b/frontend/src/scripts/game.ts index a6b7b52..00ae80c 100644 --- a/frontend/src/scripts/game.ts +++ b/frontend/src/scripts/game.ts @@ -1,11 +1,13 @@ import { vec2 } from 'gl-matrix'; import { CircleLight, + ColorfulCircle, compile, FilteringOptions, Flashlight, Renderer, renderNoise, + runAnimation, WrapOptions, } from 'sdf-2d'; import { @@ -17,36 +19,41 @@ import { SetAspectRatioActionCommand, rgb, PlayerInformation, + PlayerDiedCommand, + UpdatePlanetOwnershipCommand, } from 'shared'; import io from 'socket.io-client'; import { KeyboardListener } from './commands/generators/keyboard-listener'; import { MouseListener } from './commands/generators/mouse-listener'; import { TouchListener } from './commands/generators/touch-listener'; import { CommandReceiverSocket } from './commands/receivers/command-receiver-socket'; - -import { DeltaTimeCalculator } from './helper/delta-time-calculator'; import { PlayerDecision } from './join-form-handler'; import { GameObjectContainer } from './objects/game-object-container'; import { BlobShape } from './shapes/blob-shape'; -import { Circle } from './shapes/circle'; -import { Polygon } from './shapes/polygon'; +import { PlanetShape } from './shapes/planet-shape'; export class Game { public readonly gameObjects = new GameObjectContainer(this); - private renderer!: Renderer; + private renderer?: Renderer; private socket!: SocketIOClient.Socket; - private promises: Promise<[void, void]>; - private deltaTimeCalculator = new DeltaTimeCalculator(); + private deadTimeout = 0; + + private declaPlanetCountElement = document.createElement('div'); + private redPlanetCountElement = document.createElement('div'); + private neutralPlanetCountElement = document.createElement('div'); constructor( private readonly playerDecision: PlayerDecision, private readonly canvas: HTMLCanvasElement, private readonly overlay: HTMLElement, ) { - this.promises = Promise.all([ - this.setupCommunication(playerDecision.server), - this.setupRenderer(), - ]); + this.start(); + const progressBar = document.createElement('div'); + progressBar.className = 'planet-progress'; + overlay.appendChild(progressBar); + progressBar.appendChild(this.declaPlanetCountElement); + progressBar.appendChild(this.neutralPlanetCountElement); + progressBar.appendChild(this.redPlanetCountElement); } private async setupCommunication(serverUrl: string): Promise { @@ -61,7 +68,26 @@ export class Game { this.socket.on(TransportEvents.ServerToPlayer, (serialized: string) => { const command = deserialize(serialized); - this.gameObjects.sendCommand(command); + if (command instanceof PlayerDiedCommand) { + this.deadTimeout = command.timeout; + this.overlay.appendChild(this.announcmentText); + } else if (command instanceof UpdatePlanetOwnershipCommand) { + const all = command.declaCount + command.redCount + command.neutralCount; + this.declaPlanetCountElement.style.width = (command.declaCount / all) * 100 + '%'; + this.neutralPlanetCountElement.style.width = + (command.neutralCount / all) * 100 + '%'; + this.redPlanetCountElement.style.width = (command.redCount / all) * 100 + '%'; + + if (command.declaCount > all * 0.5) { + this.overlay.appendChild(this.announcmentText); + this.announcmentText.innerText = 'Decla team won 🎉'; + } + + if (command.redCount > all * 0.5) { + this.overlay.appendChild(this.announcmentText); + this.announcmentText.innerText = 'Red team won 🎉'; + } + } else this.gameObjects.sendCommand(command); }); this.socket.on(TransportEvents.Ping, () => { @@ -82,14 +108,14 @@ export class Game { ); } - private async setupRenderer(): Promise { + private async start(): Promise { const noiseTexture = await renderNoise([256, 256], 2, 1); - - this.renderer = await compile( + this.setupCommunication(this.playerDecision.server); + runAnimation( this.canvas, [ { - ...Polygon.descriptor, + ...PlanetShape.descriptor, shaderCombinationSteps: [0, 1, 2, 3], }, { @@ -97,55 +123,49 @@ export class Game { shaderCombinationSteps: [0, 1, 2, 8], }, { - ...Circle.descriptor, + ...ColorfulCircle.descriptor, shaderCombinationSteps: [0, 2, 16], }, { ...CircleLight.descriptor, - shaderCombinationSteps: [0, 1, 2, 4, 8], + shaderCombinationSteps: [0, 1, 2, 4, 8, 16], }, { ...Flashlight.descriptor, shaderCombinationSteps: [0], }, ], + this.gameLoop.bind(this), { shadowTraceCount: 16, - paletteSize: 10, + paletteSize: settings.palette.length, //enableStopwatch: true, }, - ); - - this.renderer.setRuntimeSettings({ - ambientLight: rgb(0.45, 0.4, 0.45), - colorPalette: [ - rgb(1, 1, 1), - rgb(0.4, 0.4, 0.4), - rgb(1, 1, 1), - ...settings.playerColors, - ], - enableHighDpiRendering: true, - lightCutoffDistance: settings.lightCutoffDistance, - textures: { - noiseTexture: { - source: noiseTexture, - overrides: { - maxFilter: FilteringOptions.LINEAR, - wrapS: WrapOptions.MIRRORED_REPEAT, - wrapT: WrapOptions.MIRRORED_REPEAT, + { + ambientLight: rgb(0.45, 0.4, 0.45), + colorPalette: settings.palette, + enableHighDpiRendering: true, + lightCutoffDistance: settings.lightCutoffDistance, + textures: { + noiseTexture: { + source: noiseTexture, + overrides: { + maxFilter: FilteringOptions.LINEAR, + wrapS: WrapOptions.MIRRORED_REPEAT, + wrapT: WrapOptions.MIRRORED_REPEAT, + }, }, }, }, - }); - } - - public async start(): Promise { - await this.promises; - requestAnimationFrame(this.gameLoop.bind(this)); + ); } public displayToWorldCoordinates(p: vec2): vec2 { - return this.renderer?.displayToWorldCoordinates(p); + const result = this.renderer?.displayToWorldCoordinates(p); + if (!result) { + return vec2.create(); + } + return result; } public aspectRatioChanged(aspectRatio: number) { @@ -155,14 +175,23 @@ export class Game { ); } - private gameLoop(time: DOMHighResTimeStamp) { - const deltaTime = this.deltaTimeCalculator.getNextDeltaTimeInMilliseconds(time); + private announcmentText = document.createElement('h2'); + private gameLoop( + renderer: Renderer, + currentTime: DOMHighResTimeStamp, + deltaTime: DOMHighResTimeStamp, + ): boolean { + this.renderer = renderer; + + if ((this.deadTimeout -= deltaTime / 1000) > 0) { + this.announcmentText.innerText = `Respawning in ${Math.floor(this.deadTimeout)} …`; + } else { + this.announcmentText.parentElement?.removeChild(this.announcmentText); + } this.gameObjects.stepObjects(deltaTime); - this.gameObjects.drawObjects(this.renderer); - this.renderer.renderDrawables(); + this.gameObjects.drawObjects(this.renderer, this.overlay); - // this.overlay.innerText = prettyPrint(this.renderer.insights); - requestAnimationFrame(this.gameLoop.bind(this)); + return true; } } diff --git a/frontend/src/scripts/handle-full-screen.ts b/frontend/src/scripts/handle-full-screen.ts new file mode 100644 index 0000000..66a921c --- /dev/null +++ b/frontend/src/scripts/handle-full-screen.ts @@ -0,0 +1,27 @@ +export const handleFullScreen = ( + minimizeButton: HTMLElement, + maximizeButton: HTMLElement, +) => { + if (!document.fullscreenEnabled) { + minimizeButton.style.visibility = 'hidden'; + maximizeButton.style.visibility = 'hidden'; + return; + } + + let isInFullScreen = document.fullscreenElement !== null; + + const showButtons = () => { + minimizeButton.style.visibility = isInFullScreen ? 'visible' : 'hidden'; + maximizeButton.style.visibility = isInFullScreen ? 'hidden' : 'visible'; + }; + + showButtons(); + + maximizeButton.addEventListener('click', () => document.body.requestFullscreen()); + minimizeButton.addEventListener('click', () => document.exitFullscreen()); + + document.addEventListener('fullscreenchange', () => { + isInFullScreen = !isInFullScreen; + showButtons(); + }); +}; diff --git a/frontend/src/scripts/helper/delta-time-calculator.ts b/frontend/src/scripts/helper/delta-time-calculator.ts deleted file mode 100644 index 7f93741..0000000 --- a/frontend/src/scripts/helper/delta-time-calculator.ts +++ /dev/null @@ -1,25 +0,0 @@ -export class DeltaTimeCalculator { - private previousTime: DOMHighResTimeStamp | null = null; - - constructor() { - document.addEventListener('visibilitychange', this.handleVisibilityChange.bind(this)); - } - - public getNextDeltaTimeInMilliseconds( - currentTime: DOMHighResTimeStamp, - ): DOMHighResTimeStamp { - if (this.previousTime === null) { - this.previousTime = currentTime; - } - - const delta = currentTime - this.previousTime; - this.previousTime = currentTime; - return delta; - } - - private handleVisibilityChange() { - if (!document.hidden) { - this.previousTime = null; - } - } -} diff --git a/frontend/src/scripts/landing-page-background.ts b/frontend/src/scripts/landing-page-background.ts index fda6efc..ef9b3c2 100644 --- a/frontend/src/scripts/landing-page-background.ts +++ b/frontend/src/scripts/landing-page-background.ts @@ -7,6 +7,7 @@ import { NoisyPolygonFactory, Renderer, renderNoise, + runAnimation, WrapOptions, } from 'sdf-2d'; import { settings, rgb, PlanetBase, Random } from 'shared'; @@ -18,17 +19,17 @@ const LangindPagePolygon = NoisyPolygonFactory( ); export class LandingPageBackground { - private renderer!: Renderer; + private isActive = true; - constructor(private readonly canvas: HTMLCanvasElement) { - this.start(); + constructor(canvas: HTMLCanvasElement) { + this.start(canvas); } - private async start(): Promise { + private async start(canvas: HTMLCanvasElement): Promise { const noiseTexture = await renderNoise([256, 256], 1.2, 2); - this.renderer = await compile( - this.canvas, + runAnimation( + canvas, [ { ...LangindPagePolygon.descriptor, @@ -39,45 +40,36 @@ export class LandingPageBackground { shaderCombinationSteps: [0, 2], }, ], + this.gameLoop.bind(this), { shadowTraceCount: 16, paletteSize: 1, }, - ); - - this.renderer.setRuntimeSettings({ - ambientLight: rgb(0, 0, 0), - lightCutoffDistance: settings.lightCutoffDistance, - textures: { - noiseTexture: { - source: noiseTexture, - overrides: { - maxFilter: FilteringOptions.LINEAR, - wrapS: WrapOptions.MIRRORED_REPEAT, - wrapT: WrapOptions.MIRRORED_REPEAT, + { + ambientLight: rgb(0, 0, 0), + lightCutoffDistance: settings.lightCutoffDistance, + textures: { + noiseTexture: { + source: noiseTexture, + overrides: { + maxFilter: FilteringOptions.LINEAR, + wrapS: WrapOptions.MIRRORED_REPEAT, + wrapT: WrapOptions.MIRRORED_REPEAT, + }, }, }, }, - }); - - requestAnimationFrame(this.gameLoop.bind(this)); + ); } - public destroy() { - this.renderer.destroy(); - } - - private gameLoop(time: DOMHighResTimeStamp) { + private gameLoop(renderer: Renderer, time: DOMHighResTimeStamp, _: number): boolean { Random.seed = 42; - this.renderer.setViewArea( - vec2.fromValues(0, this.renderer.canvasSize.y), - this.renderer.canvasSize, - ); + renderer.setViewArea(vec2.fromValues(0, renderer.canvasSize.y), renderer.canvasSize); const topPlanetPosition = vec2.fromValues( - 0.7 * this.renderer.canvasSize.x, - 0.7 * this.renderer.canvasSize.y, + 0.7 * renderer.canvasSize.x, + 0.7 * renderer.canvasSize.y, ); const topPlanet = new LangindPagePolygon( @@ -93,8 +85,8 @@ export class LandingPageBackground { (topPlanet as any).randomOffset = 0.5 + time / 3500; const bottomPlanetPosition = vec2.fromValues( - 0.3 * this.renderer.canvasSize.x, - 0.3 * this.renderer.canvasSize.y, + 0.3 * renderer.canvasSize.x, + 0.3 * renderer.canvasSize.y, ); const bottomPlanet = new LangindPagePolygon( @@ -118,11 +110,12 @@ export class LandingPageBackground { const planetDirection = vec2.normalize(planetDistance, planetDistance); const planetAngle = Math.atan2(planetDirection.y, planetDirection.x); - this.renderer.addDrawable(topPlanet); - this.renderer.addDrawable(bottomPlanet); - this.renderer.addDrawable( + renderer.addDrawable(topPlanet); + renderer.addDrawable(bottomPlanet); + renderer.addDrawable( new CircleLight( this.calculateLightPosition( + renderer, planetAngle, planetDistanceLength * 1.2, -time / 3000, @@ -132,9 +125,10 @@ export class LandingPageBackground { ), ); - this.renderer.addDrawable( + renderer.addDrawable( new CircleLight( this.calculateLightPosition( + renderer, planetAngle, planetDistanceLength * 1.2, time / 2000 + Math.PI, @@ -144,21 +138,28 @@ export class LandingPageBackground { ), ); - this.renderer.renderDrawables(); - - requestAnimationFrame(this.gameLoop.bind(this)); + return this.isActive; } - private calculateLightPosition(angle: number, length: number, t: number): vec2 { + private calculateLightPosition( + renderer: Renderer, + angle: number, + length: number, + t: number, + ): vec2 { const lightPosition = vec2.fromValues( length * Math.sin(t), length * Math.sin(t) * Math.cos(t), ); - const canvasCenter = vec2.scale(vec2.create(), this.renderer.canvasSize, 0.5); + const canvasCenter = vec2.scale(vec2.create(), renderer.canvasSize, 0.5); vec2.add(lightPosition, lightPosition, canvasCenter); vec2.rotate(lightPosition, lightPosition, canvasCenter, angle); return lightPosition; } + + public destroy() { + this.isActive = false; + } } diff --git a/frontend/src/scripts/objects/camera.ts b/frontend/src/scripts/objects/camera.ts index 1116fc8..2e28612 100644 --- a/frontend/src/scripts/objects/camera.ts +++ b/frontend/src/scripts/objects/camera.ts @@ -14,13 +14,11 @@ export class Camera extends GameObject implements ViewObject { super(null); } - public update(updates: Array) { - throw new Error(); - } + public beforeDestroy(): void {} public step(deltaTimeInMilliseconds: number): void {} - public draw(renderer: Renderer) { + public draw(renderer: Renderer, overlay: HTMLElement) { const canvasAspectRatio = renderer.canvasSize.x / renderer.canvasSize.y; if (canvasAspectRatio !== this.aspectRatio) { this.aspectRatio = canvasAspectRatio; diff --git a/frontend/src/scripts/objects/character-view.ts b/frontend/src/scripts/objects/character-view.ts index 6f617c7..3e88c5c 100644 --- a/frontend/src/scripts/objects/character-view.ts +++ b/frontend/src/scripts/objects/character-view.ts @@ -1,6 +1,6 @@ import { vec2 } from 'gl-matrix'; import { Renderer } from 'sdf-2d'; -import { CharacterBase, Circle, Id, UpdateMessage } from 'shared'; +import { CharacterBase, CharacterTeam, Circle, Id, UpdateMessage } from 'shared'; import { BlobShape } from '../shapes/blob-shape'; import { ViewObject } from './view-object'; @@ -11,25 +11,25 @@ export class CharacterView extends CharacterBase implements ViewObject { constructor( id: Id, colorIndex: number, + team: CharacterTeam, + health: number, head?: Circle, leftFoot?: Circle, rightFoot?: Circle, ) { - super(id, colorIndex, head, leftFoot, rightFoot); + super(id, colorIndex, team, health, head, leftFoot, rightFoot); this.shape = new BlobShape(colorIndex); } - public update(updates: Array) { - updates.forEach((u) => ((this as any)[u.key] = u.value)); - } - public get position(): vec2 { return this.head!.center; } + public beforeDestroy(): void {} + public step(deltaTimeInMilliseconds: number): void {} - public draw(renderer: Renderer): void { + public draw(renderer: Renderer, overlay: HTMLElement): void { this.shape.setCircles([this.head!, this.leftFoot!, this.rightFoot!]); renderer.addDrawable(this.shape); } diff --git a/frontend/src/scripts/objects/game-object-container.ts b/frontend/src/scripts/objects/game-object-container.ts index 2a03745..adf92b5 100644 --- a/frontend/src/scripts/objects/game-object-container.ts +++ b/frontend/src/scripts/objects/game-object-container.ts @@ -22,6 +22,7 @@ export class GameObjectContainer extends CommandReceiver { protected commandExecutors: CommandExecutors = { [CreatePlayerCommand.type]: (c: CreatePlayerCommand) => { this.player = c.character as PlayerCharacterView; + console.log(c.character); this.camera = new Camera(this.game); this.addObject(this.player); this.addObject(this.camera); @@ -31,7 +32,7 @@ export class GameObjectContainer extends CommandReceiver { c.objects.forEach((o) => this.addObject(o as ViewObject)), [DeleteObjectsCommand.type]: (c: DeleteObjectsCommand) => - c.ids.forEach((id: Id) => this.objects.delete(id)), + c.ids.forEach((id: Id) => this.deleteObject(id)), [UpdateObjectsCommand.type]: (c: UpdateObjectsCommand) => { c.updates.forEach((u) => this.objects.get(u.id)?.update(u.updates)); @@ -50,11 +51,17 @@ export class GameObjectContainer extends CommandReceiver { this.objects.forEach((o) => o.step(delta)); } - public drawObjects(renderer: Renderer) { - this.objects.forEach((o) => o.draw(renderer)); + public drawObjects(renderer: Renderer, overlay: HTMLElement) { + this.objects.forEach((o) => o.draw(renderer, overlay)); } private addObject(object: ViewObject) { this.objects.set(object.id, object); } + + private deleteObject(id: Id) { + const object = this.objects.get(id); + object?.beforeDestroy(); + this.objects.delete(id); + } } diff --git a/frontend/src/scripts/objects/lamp-view.ts b/frontend/src/scripts/objects/lamp-view.ts index c4590a7..2da4521 100644 --- a/frontend/src/scripts/objects/lamp-view.ts +++ b/frontend/src/scripts/objects/lamp-view.ts @@ -16,13 +16,11 @@ export class LampView extends LampBase implements ViewObject { this.light = new CircleLight(center, color, lightness); } - public update(message: Array): void { - throw new Error('Method not implemented.'); - } - public step(deltaTimeInMilliseconds: number): void {} - public draw(renderer: Renderer): void { + public beforeDestroy(): void {} + + public draw(renderer: Renderer, overlay: HTMLElement): void { renderer.addDrawable(this.light); } } diff --git a/frontend/src/scripts/objects/planet-view.ts b/frontend/src/scripts/objects/planet-view.ts index 4f45f88..316fc9f 100644 --- a/frontend/src/scripts/objects/planet-view.ts +++ b/frontend/src/scripts/objects/planet-view.ts @@ -1,32 +1,62 @@ import { vec2 } from 'gl-matrix'; import { Drawable, Renderer } from 'sdf-2d'; -import { CommandExecutors, Id, Random, PlanetBase, UpdateMessage } from 'shared'; +import { + CommandExecutors, + Id, + Random, + PlanetBase, + UpdateMessage, + settings, +} from 'shared'; import { RenderCommand } from '../commands/types/render'; -import { Polygon } from '../shapes/polygon'; +import { PlanetShape } from '../shapes/planet-shape'; import { ViewObject } from './view-object'; export class PlanetView extends PlanetBase implements ViewObject { - private shape: Drawable; + private shape: PlanetShape; + private ownershipProgess: HTMLElement; protected commandExecutors: CommandExecutors = { [RenderCommand.type]: (c: RenderCommand) => c.renderer.addDrawable(this.shape), }; - constructor(id: Id, vertices: Array) { + constructor(id: Id, vertices: Array, ownership: number) { super(id, vertices); - this.shape = new Polygon(vertices); + this.shape = new PlanetShape(vertices, ownership); (this.shape as any).randomOffset = Random.getRandom(); - } - public update(message: Array): void { - throw new Error('Method not implemented.'); + this.ownershipProgess = document.createElement('div'); + this.ownershipProgess.className = 'ownership'; } public step(deltaTimeInMilliseconds: number): void { - (this.shape as any).randomOffset += deltaTimeInMilliseconds / 4000; + this.shape.randomOffset += deltaTimeInMilliseconds / 4000; + this.shape.colorMixQ = this.ownership; + let teamName = 'Neutral'; + if (this.ownership < 0.5 - settings.planetControlThreshold) { + teamName = 'Decla'; + } else if (this.ownership > 0.5 + settings.planetControlThreshold) { + teamName = 'Red'; + } + + this.ownershipProgess.innerText = `${teamName} ${Math.round( + (Math.abs(this.ownership - 0.5) / 0.5) * 100, + )}%`; } - public draw(renderer: Renderer): void { + public beforeDestroy(): void { + this.ownershipProgess.parentElement?.removeChild(this.ownershipProgess); + } + + public draw(renderer: Renderer, overlay: HTMLElement): void { + if (!this.ownershipProgess.parentElement) { + overlay.appendChild(this.ownershipProgess); + } + + const screenPosition = renderer.worldToDisplayCoordinates(this.center); + this.ownershipProgess.style.left = screenPosition.x + 'px'; + this.ownershipProgess.style.top = screenPosition.y + 'px'; + renderer.addDrawable(this.shape); } } diff --git a/frontend/src/scripts/objects/player-character-view.ts b/frontend/src/scripts/objects/player-character-view.ts index 8d94cc9..26f9b42 100644 --- a/frontend/src/scripts/objects/player-character-view.ts +++ b/frontend/src/scripts/objects/player-character-view.ts @@ -1,37 +1,84 @@ import { vec2 } from 'gl-matrix'; import { Renderer } from 'sdf-2d'; -import { Circle, Id, PlayerCharacterBase, UpdateMessage } from 'shared'; +import { Circle, Id, PlayerCharacterBase, UpdateMessage, CharacterTeam } from 'shared'; import { BlobShape } from '../shapes/blob-shape'; import { ViewObject } from './view-object'; export class PlayerCharacterView extends PlayerCharacterBase implements ViewObject { private shape: BlobShape; + private nameElement: HTMLElement; + private healthElement: HTMLElement; + private timeSinceLastNameElementUpdate = 0; constructor( id: Id, name: string, colorIndex: number, + team: CharacterTeam, + health: number, head?: Circle, leftFoot?: Circle, rightFoot?: Circle, ) { - super(id, name, colorIndex, head, leftFoot, rightFoot); + super(id, name, colorIndex, team, health, head, leftFoot, rightFoot); this.shape = new BlobShape(colorIndex); - } - public update(updates: Array) { - updates.forEach((u) => ((this as any)[u.key] = u.value)); + console.log(this.id, 'created'); + + this.nameElement = document.createElement('div'); + this.nameElement.className = 'player-tag'; + this.nameElement.innerText = this.name; + this.healthElement = document.createElement('div'); + this.nameElement.appendChild(this.healthElement); } public get position(): vec2 { return this.head!.center; } - public step(deltaTimeInMilliseconds: number): void {} + public step(deltaTimeInMilliseconds: number): void { + this.timeSinceLastNameElementUpdate += deltaTimeInMilliseconds; + this.healthElement.style.width = this.health + '%'; + } + + public beforeDestroy(): void { + console.log(this.id, 'destroyes'); + this.nameElement.parentElement?.removeChild(this.nameElement); + } + + private elementAdded = false; + public draw(renderer: Renderer, overlay: HTMLElement): void { + if (!this.elementAdded) { + this.elementAdded = true; + console.log(this.id, 'add', this.nameElement, this.nameElement.parentElement); + overlay.appendChild(this.nameElement); + } + + if (this.timeSinceLastNameElementUpdate > 0.15) { + const screenPosition = renderer.worldToDisplayCoordinates( + this.calculateTextPosition(), + ); + this.nameElement.style.left = screenPosition.x + 'px'; + this.nameElement.style.top = screenPosition.y + 'px'; + this.timeSinceLastNameElementUpdate = 0; + } - public draw(renderer: Renderer): void { this.shape.setCircles([this.head!, this.leftFoot!, this.rightFoot!]); renderer.addDrawable(this.shape); } + + private calculateTextPosition(): vec2 { + const footAverage = vec2.add( + vec2.create(), + this.leftFoot!.center, + this.rightFoot!.center, + ); + vec2.scale(footAverage, footAverage, 0.5); + + const headFeetDelta = vec2.subtract(footAverage, this.head!.center, footAverage); + vec2.normalize(headFeetDelta, headFeetDelta); + const textOffset = vec2.scale(headFeetDelta, headFeetDelta, this.head!.radius + 50); + return vec2.add(textOffset, this.head!.center, textOffset); + } } diff --git a/frontend/src/scripts/objects/projectile-view.ts b/frontend/src/scripts/objects/projectile-view.ts index 86c2047..9717e36 100644 --- a/frontend/src/scripts/objects/projectile-view.ts +++ b/frontend/src/scripts/objects/projectile-view.ts @@ -1,29 +1,33 @@ import { vec2 } from 'gl-matrix'; -import { CircleLight, Renderer } from 'sdf-2d'; -import { Id, ProjectileBase, rgb, UpdateMessage } from 'shared'; +import { CircleLight, ColorfulCircle, Renderer } from 'sdf-2d'; +import { Id, ProjectileBase, settings, UpdateMessage } from 'shared'; import { ViewObject } from './view-object'; -import { Circle } from '../shapes/circle'; export class ProjectileView extends ProjectileBase implements ViewObject { - private circle: InstanceType; + private circle: ColorfulCircle; private light: CircleLight; - constructor(id: Id, center: vec2, radius: number) { - super(id, center, radius); - this.circle = new Circle(center, radius / 2); - this.light = new CircleLight(center, rgb(1, 0.5, 0), 0.15); - } - - update(updates: Array): void { - updates.forEach((u) => ((this as any)[u.key] = u.value)); + constructor( + id: Id, + center: vec2, + radius: number, + colorIndex: number, + strength: number, + ) { + super(id, center, radius, colorIndex, strength); + this.circle = new ColorfulCircle(center, radius / 2, colorIndex); + this.light = new CircleLight(center, settings.palette[colorIndex], 0); } public step(deltaTimeInMilliseconds: number): void { this.circle.center = this.center; this.light.center = this.center; + this.light.intensity = (0.15 * this.strength) / settings.projectileMaxStrength; } - public draw(renderer: Renderer): void { + public beforeDestroy(): void {} + + public draw(renderer: Renderer, overlay: HTMLElement): void { renderer.addDrawable(this.circle); renderer.addDrawable(this.light); } diff --git a/frontend/src/scripts/objects/view-object.ts b/frontend/src/scripts/objects/view-object.ts index a395011..18c8a37 100644 --- a/frontend/src/scripts/objects/view-object.ts +++ b/frontend/src/scripts/objects/view-object.ts @@ -2,7 +2,7 @@ import { Renderer } from 'sdf-2d'; import { GameObject, UpdateMessage } from 'shared'; export interface ViewObject extends GameObject { - update(updates: Array): void; step(deltaTimeInMilliseconds: number): void; - draw(renderer: Renderer): void; + draw(renderer: Renderer, overlay: HTMLElement): void; + beforeDestroy(): void; } diff --git a/frontend/src/scripts/shapes/circle.ts b/frontend/src/scripts/shapes/circle.ts deleted file mode 100644 index e4f8374..0000000 --- a/frontend/src/scripts/shapes/circle.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { CircleFactory } from 'sdf-2d'; - -export const Circle = CircleFactory(2); diff --git a/frontend/src/scripts/shapes/planet-shape.ts b/frontend/src/scripts/shapes/planet-shape.ts new file mode 100644 index 0000000..e637e29 --- /dev/null +++ b/frontend/src/scripts/shapes/planet-shape.ts @@ -0,0 +1,163 @@ +import { mat2d, vec2, vec3, vec4 } from 'gl-matrix'; +import { PolygonFactory, DrawableDescriptor, Drawable } from 'sdf-2d'; +import { settings } from 'shared'; + +export const colorToString = (v: vec3 | vec4): string => + `vec4(${v[0]}, ${v[1]}, ${v[2]}, ${v.length > 3 ? v[3] : 1})`; + +export class PlanetShape extends PolygonFactory(settings.planetEdgeCount, 0) { + public static descriptor: DrawableDescriptor = { + sdf: { + shader: ` + uniform vec2 planetVertices[PLANET_COUNT * ${settings.planetEdgeCount}]; + uniform vec2 planetCenters[PLANET_COUNT]; + uniform float planetLengths[PLANET_COUNT]; + uniform float planetRandoms[PLANET_COUNT]; + uniform float planetColorMixQ[PLANET_COUNT]; + + uniform sampler2D noiseTexture; + + #ifdef WEBGL2_IS_AVAILABLE + float planetTerrain(vec2 h) { + return texture(noiseTexture, h)[0] - 0.5; + } + #else + float planetTerrain(vec2 h) { + return texture2D(noiseTexture, h)[0] - 0.5; + } + #endif + + vec2 planetLineDistance(vec2 target, vec2 from, vec2 to) { + vec2 targetFromDelta = target - from; + vec2 toFromDelta = to - from; + float h = clamp( + dot(targetFromDelta, toFromDelta) / dot(toFromDelta, toFromDelta), + 0.0, 1.0 + ); + + vec2 diff = targetFromDelta - toFromDelta * h; + return vec2( + dot(diff, diff), + toFromDelta.x * targetFromDelta.y - toFromDelta.y * targetFromDelta.x + ); + } + + float planetMinDistance(vec2 target, out vec4 color) { + float minDistance = 100.0; + + for (int j = 0; j < PLANET_COUNT; j++) { + vec2 startEnd = planetVertices[j * ${settings.planetEdgeCount}]; + vec2 vb = startEnd; + + vec2 center = planetCenters[j]; + float l = planetLengths[j]; + float randomOffset = planetRandoms[j]; + vec2 targetTangent = normalize(target - center); + vec2 noisyTarget = target - ( + targetTangent * planetTerrain(vec2( + l * abs(atan(targetTangent.y, targetTangent.x)), + randomOffset + )) / 12.0 + ); + + float d = 10000.0; + float s = 1.0; + for (int k = 1; k < ${settings.planetEdgeCount}; k++) { + vec2 va = vb; + vb = planetVertices[j * ${settings.planetEdgeCount} + k]; + vec2 ds = planetLineDistance(noisyTarget, va, vb); + + bvec3 cond = bvec3(noisyTarget.y >= va.y, noisyTarget.y < vb.y, ds.y > 0.0); + if (all(cond) || all(not(cond))) { + s *= -1.0; + } + + d = min(d, ds.x); + } + + vec2 ds = planetLineDistance(noisyTarget, vb, startEnd); + bvec3 cond = bvec3(noisyTarget.y >= vb.y, noisyTarget.y < startEnd.y, ds.y > 0.0); + if (all(cond) || all(not(cond))) { + s *= -1.0; + } + + d = min(d, ds.x); + float dist = s * sqrt(d); + + if (dist < minDistance) { + minDistance = dist; + color = mix(${colorToString(settings.declaPlanetColor)}, ${colorToString( + settings.redPlanetColor, + )}, planetColorMixQ[j]); + } + } + + return minDistance; + } + `, + distanceFunctionName: 'planetMinDistance', + }, + propertyUniformMapping: { + length: 'planetLengths', + random: 'planetRandoms', + center: 'planetCenters', + vertices: 'planetVertices', + colorMixQ: 'planetColorMixQ', + }, + uniformCountMacroName: `PLANET_COUNT`, + shaderCombinationSteps: [0, 1, 2, 3, 8, 16], + empty: new PlanetShape(new Array(settings.planetEdgeCount).fill(vec2.create()), 0), + }; + + public randomOffset = 0; + + constructor(public vertices: Array, public colorMixQ: number) { + super(vertices); + } + + protected getObjectToSerialize(transform2d: mat2d, transform1d: number): any { + const transformedVertices = (this as any).actualVertices.map((v: vec2) => + vec2.transformMat2d(vec2.create(), v, transform2d), + ); + + const center = transformedVertices.reduce( + (sum: vec2, v: vec2) => vec2.add(sum, sum, v), + vec2.create(), + ); + vec2.scale(center, center, 1 / transformedVertices.length); + + let length = 0; + for (let i = 1; i < this.vertices.length; i++) { + length += vec2.distance(transformedVertices[i - 1], transformedVertices[i]); + } + + return { + vertices: transformedVertices, + center, + length, + random: this.randomOffset, + colorMixQ: this.colorMixQ, + }; + } + + public serializeToUniforms( + uniforms: any, + transform2d: mat2d, + transform1d: number, + ): void { + const { propertyUniformMapping } = (this.constructor as typeof Drawable).descriptor; + + const serialized = this.getObjectToSerialize(transform2d, transform1d); + Object.entries(propertyUniformMapping).forEach(([k, v]) => { + if (!Object.prototype.hasOwnProperty.call(uniforms, v)) { + uniforms[v] = []; + } + + if (k === 'vertices') { + uniforms[v].push(...serialized[k]); + } else { + uniforms[v].push(serialized[k]); + } + }); + } +} diff --git a/frontend/src/scripts/shapes/polygon.ts b/frontend/src/scripts/shapes/polygon.ts deleted file mode 100644 index df62695..0000000 --- a/frontend/src/scripts/shapes/polygon.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { NoisyPolygonFactory } from 'sdf-2d'; -import { settings } from 'shared'; - -export const Polygon = NoisyPolygonFactory(settings.polygonEdgeCount, 1); diff --git a/frontend/src/styles/form.scss b/frontend/src/styles/form.scss index 3aa02d7..154d393 100644 --- a/frontend/src/styles/form.scss +++ b/frontend/src/styles/form.scss @@ -1,9 +1,18 @@ @import './vars.scss'; +@import './mixins.scss'; form { - backdrop-filter: blur(24px); - background-color: rgba(0, 0, 0, 0.15); + @include background; + padding: $small-padding / 2 $small-padding $small-padding $small-padding; + border-radius: $border-radius; + + input:-webkit-autofill, + input:-webkit-autofill:hover, + input:-webkit-autofill:focus { + -webkit-text-fill-color: white; + transition: background-color 5000s ease-in-out 0s; + } input, label { @@ -57,6 +66,7 @@ form { display: block; transition: $animation-time; color: $gray; + font-size: 1.1rem; } input:focus, @@ -78,6 +88,7 @@ form { input[type='radio'] { width: 0; height: 0; + appearance: none; + label { display: block; @@ -100,25 +111,23 @@ form { } } } - - button { - border: none; - background: none; - font-size: 2rem; - font-family: 'Comfortaa', sans-serif; - cursor: pointer; - display: block; - margin: auto; - padding-top: $medium-padding; - transition: transform $animation-time; - - &:hover, - &:focus { - outline: none; - color: $accent; - transform: translateY(-8px); - } - } - - border-radius: $border-radius; +} + +button { + border: none; + background: none; + font-size: 2rem; + font-family: 'Comfortaa', sans-serif; + cursor: pointer; + display: block; + margin: auto; + padding-top: $medium-padding; + transition: transform $animation-time; + + &:hover, + &:focus { + outline: none; + color: $accent; + transform: translateY(-8px); + } } diff --git a/frontend/src/styles/main.scss b/frontend/src/styles/main.scss index e0d97fd..d0a3f2b 100644 --- a/frontend/src/styles/main.scss +++ b/frontend/src/styles/main.scss @@ -1,5 +1,6 @@ @import './vars.scss'; @import './form.scss'; +@import './mixins.scss'; @import url('https://fonts.googleapis.com/css2?family=Comfortaa:wght@300&family=Open+Sans&display=swap'); * { @@ -21,7 +22,8 @@ html { } } -h1 { +h1, +h2 { &, * { font-family: 'Comfortaa', sans-serif; @@ -31,6 +33,10 @@ h1 { padding-bottom: $medium-padding; } +h2 { + font-size: 4rem; +} + .red { color: $red; &::selection { @@ -48,6 +54,8 @@ canvas { } body { + overflow: hidden; + #landing-ui { width: 100%; height: 100%; @@ -67,7 +75,104 @@ body { top: 0; pointer-events: none; + user-select: none; - font-size: 0.75rem; + overflow: hidden; + + h2 { + margin: $large-padding 0; + } + + .player-tag { + font-size: 1.3rem; + position: absolute; + transform: translateX(-50%) translateY(-50%) rotate(-15deg); + transition: left 200ms, top 200ms; + + div { + height: 3px; + background-color: rebeccapurple; + } + } + + .ownership { + font-size: 1.3rem; + position: absolute; + transform: translateX(-50%) translateY(-50%); + } + + .planet-progress { + position: absolute; + top: $small-padding; + left: 50%; + transform: translateX(-50%); + width: 50%; + display: flex; + $height: 8px; + height: $height; + + border-radius: 4px; + + div { + height: $height; + } + + div:nth-child(1) { + background: rebeccapurple; + } + + div:nth-child(2) { + background: gray; + } + + div:nth-child(3) { + background: red; + } + } + } + + #open-settings { + position: absolute; + top: 0; + right: 0; + + animation: spin 32s linear infinite; + @keyframes spin { + 100% { + transform: rotate(360deg); + } + } + } + + .icon { + box-sizing: content-box; + + user-select: none; + cursor: pointer; + + padding: $medium-padding; + @include square(48px); + @media (max-width: $breakpoint) { + @include square(32px); + padding: $small-padding; + } + } + + .full-screen-controllers { + position: absolute; + bottom: 0; + left: 0; + } + + #settings { + @include background; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + + padding: $large-padding; + visibility: hidden; } } diff --git a/frontend/src/styles/mixins.scss b/frontend/src/styles/mixins.scss new file mode 100644 index 0000000..1afa563 --- /dev/null +++ b/frontend/src/styles/mixins.scss @@ -0,0 +1,11 @@ +@mixin square($size) { + width: $size; + height: $size; +} + +@mixin background { + backdrop-filter: blur(24px); + @supports not (backdrop-filter: blur(24px)) { + background-color: rgba(0, 0, 0, 0.15); + } +} diff --git a/frontend/static/declared.png b/frontend/static/declared.png deleted file mode 100644 index 897278d92a5e349f0a101b77ac6804fdeca52a22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26027 zcmc$_2UwKJwk~WILBv2%q9R#xXrM_Vl5-Hrxyjv4&Oty>k|aTbfaD|~vB@Y&Qj>Ex zAUS6c$$#O@o;~-Rz0W!S|KI!Ed7hd1=&!z2tEyJ5TI*eJ1u7{>;^UIyUbt`pUs~$9 z%7qJ8q`~t7&L!|)_(bvt@V^^2QkwP`F0ej6|M#LxhKLjRE!09y!$Ct{4r+{qvl^Np zjbN-Ua2wG2!UaJQ7aK!kE11JWBbb>5LWp{!x}N%>g^3XLOCEW4c^fg9xrLOQ9Zc0t zLCx6B%9!7TT15DvpbHcTfWsUNAG*M;5%y3QA?n|9q2T%aXEy4GzneH%2~mrlclc04 zUg@D2(hl~JhZVwN%)!m~ke8p81H#SD1z~>3$MM?V&U+=TH8B_I{}UU9NWKa zZLj8P17lNx*&`k8jA7zVpvTAmP|V&z1@_OW`5$}^n*a5&jXBZ*X>X4FH%XSL z1}bI;Gju@OsUeZp|5#*{>MV8fhnwGy!wY_4nVU#l)2Ckfs*a;Dx=4 z6>4aFzN3VwjnAzC zWOwTaJYP6ACxpqL&h9Up zdFX(A_|F~kZ~HNU*;)K;+Wy|lUn)HO-`L-OyGZ}D4f|i%*Z-MCVmm)={@6Ke|8Z0O z@%QsTW>VsOZGL-k=)c-N|5FbzU zNZjuw`$I>zf6Dw{M)AAJ-(m_doZmlzK;``LuLueJ@mGumLx7!Y2O_9%v88SoE@(GN zKNnSV8Cy$yqfIz`gqrjY6mM?urKWZYCB=LA_SL6X4}Ec@Hoo|0Fw47bNR@n_5O|yY z%2$QR@8NCv?UUN>s({;gtm|>(4}Ntz>Q~-w<+N|_wD0C$;6E$0XlDH#;9a6%%2Yzu-E>4`T_aJPpFH3Jbi`#;}^u`Kc8&K{(SgLz<>ViLIwVxjs6nwpFjH- z{r>0AF8t?y{|j~h*)PHm#Kgb<`AdU;A?p9$5OCf`CLX1G`P{hpE$FKfJpB3<>38IC z4cHs%t53zUJCwfn7OyBTWU%U#qaV!OxNyOM$qVmgH!r)Xxc{g^1^(>|{!R$H%H!41 zlCUy?+`PQBw6v9%jqnRS@3XVB+uLPWswZ+(v(i;80tbcP(_gsoDyM?&3wx|tdk|*{ zg$>!mo2a(7wg*&HXCiCwe0(kjKEH&z_|$%SdfLs+t#s9GW3s-xwUwc0ENuG#Ebb=FzPTD#6HUceOkBnFxZzpG!!m8Us6HSWG$V8;;C2Kdhr>;BI4MKzD4! z<~g5Ih83@|maXiw^WTGpmX?-oZP`|!c`bA-v`>PK0|)B_uM;pGm$tRz-uNK#TsqBo z+SqtTgd+DaC@^KCwc+tS-^RNqeySdq`UuFooVJ)o*7VB9E1eRBv`!VD&Z(c~+4r&z zlhb$0IVY>J)tgLyReW(T@!wB2;t---KXq>IfughqkGxQXZc%Sa4d-ePepSJ zoHubCH7vQBAq8qP4jtkzFX>0sI^-4h=IZWrGULmI;D;;(hTuOpx-1suJ;Q&f<*z|= z7i@7o6N4J;(;5X6OM&jr@8&O3U80lguhQG2 z^>!WHeJmC+()x9z>1mCYN%6SN=;>ABl;B~Nl$1F+#opqzJHf-sws0OD%SW7XDg$)- zDAq$^o|@)sE%Voma!J1*%zq0WqU3_9wmOiWTauZgRj@9R_WnH7O(jRD!HORv!br3`ps1kWb#^L*m5^_g!362Q;E8r?4I>mMWs{bZ z>+I}gW@RlXEEMrR6?`$2CK(2WLiOrAMu&%a`S^a#_lxfFu(S7IFqpx?z1^k$Hw09A z^f2*t(PWT4Myl6wPR9oL^xKdyc^)P6}pWoeH_*1yeYM_OUspVH>zW9K-137 zuDzp!jEpRY1Y75sko&2&wzj%D0oS9rqepa5H2T@3$KLV_Gc$U}JOSr*ol3j8fgDvH z9v**xf3@g=A32xXQ&SmnGV7l?>XxH5*~%}Yl>K#9R;7)%$pu?QqKY@mLzfNykfU|-rXv_Idjc%|1f8fvYnsp;h8BqM|S zg0GCWI4$Jz8$74#mvAS`(l6r9{SOEYPRMO#A?zY?*bHr55{=jgZ(oq6>1OkGe~m@K z^o$WiwI;RWHFGq^0b2S?AMVG8?}X1(vVD=_9rY!i_|gzC#uQzi<0IpzNwj_U@)mJp zhG_7RTD;~7Hc&c*_uQ>?Ugp6VkqvXRiEQ6?tLyWNX<)Xy&*`(ZwG~Dsa=JIH?|pW% ze|EZGPbI;AcI42r(SOFn!LhYIF5niUij{DBF8YdFSomPG_gLuqyTY<$3j@)j$DU*4 z&I!x<$;5QAYZ%8qae-P&rat-jpY{A-e_3 z9C7m=Iu(=l^66W=Z|7Cz7ybVIM`6#yiCXt`RyDeTrA1cWy<0i18Hz)E6a%K&b0MLj z_yh#18;{rcUAIj{MK2z(>^W4K&GWlu=aMNtdDlx_1j3$q?PI+)=BE7V zOWOZbMw z_S6O34?G@EqzyBkQ$HXjjZZ+R*0ybp)QN5P-~>4Wn@3L8$$#S(f7WSbX&J5DD!xVR zznYksNT{uf_lQS+>juNv+|T|QX~?x}*9PVkGj_en zsg|og)r$))u3=CV6ci+^It)xqGBPre65?5u+ia!wGY+i%SlfhU`CA9KDBHzym8~Kl zSnfDFIszZ^s4@NB(>W2w0%*3a3SAXh)H1flHL5cvH=%1eHjj6_bZd4x5!1=_!dz%W z)~M!N!;gCVg8M}ZChbvo6^PG@n{616w&LQ9Eg$}5*V3%TS~~GARnU?Fzv{pk9`zQ# zX+k28+u?L(eh4_U&>@Xgrt*no7w+ddYDrMX+^noO)C2`oBT->+H&cRJxAbb=qMu!N zeXdpzl|@&?>2K?hWZw=aWrpLeVsql9EG(_8l7&5?oSY4b-E#Iy>EbM}2X@<|p8%kd zrt!hLu!&Adb=dng8)>0gNeRgh9tYd7AkOdKzYjJVon;M+jR#6dO6u2nxNc30Lxn5{ z1229Xh}OurNf1DYX=#*p@Bph`7oR1d2~`_r)2q2pNttOsFYTyWn6->RB9Z3ipAyQc z`Ix=Cefal+e9jOvbzh$)RNCa;x!IN4IldFK;)yjlyA*s??s}RAI!o&bC+$qUqkXs2 z!TtPcF`wY)Mi|!)p18agrLR9A_IGgE?)o+|bX7R65I46&UAB&Eum5any3)MT+}vEe z7^@@M-4fj&I>q4oj7r2yP!bz3oo{W%#uRgWe0;ROp~|Bivga+xmp#PrBQ3nDs3_vn zH^SssLHQ+XES&x!V5PTv-iCyP>@0Ne@9la1+7#WmxX#Vs`XWDi++8Ywatdr3W`Ns98Gy!#7 zQMt#RC6qkQ-w2;49!wy=7j{LZ$?53lT2T>4l3;^~*YU{2gr1U8_-#_XD*MTO1-+#; zZ{YP=y5r6es`c%x9nG@DWH0sfPLB`lCnN?5jg<{m77Nvwq6n_5!JXpq)l1qH^4}Bk zm6w-qXN8%cI-M=`XW{x&_c!AqcGgbI##kp$Uoky+B^Q&N?7cIO{`O52%IjG>-78_f zbgHDH@(j(>{p~X2_1$$yuxW)}eS4>6l$2ydMyE^KI$lYG^+I8Q>;aNTUoI_jCGGQl zg#+!T#&1R5?1X`ri3?6A+Sp+92Q~?nQ5VqaL>#g-p`oFVA3qih8KI-2Ypv*8n{kuAxTJ*w`p9FHgvrS$%}V>&N1F z8}~M&TzW%Rc!Y=cQ+2Mr#g&yP*^KXTblXW32-U4T`}nLvLE)tL0SKN#{d!^qi=rpT zb4bF64tAJ}W;zbehQUs>VPzLptk|CsE=OB%>9$ z1%B`0&dOKbs9sNDSGMs#^S6vN%XIx^REs7t=Gi*+xf__Cl9GZ#ITJIWNl<8T)C1r{PqD!{jRqtRoT)V7V5x02@DL> zoQH%GS2IwjtO(gozy3le>S^ooYjX-5d}@*wdR}{ZuZym|>f$>2IyEpbK*ozu>c8vO zDvK82=Z|xJ_ePT)5oOo&L2JIXwe<|$H&a-Dy1csDiAKwB{gixn(X$dwkT!J;!w@eE zUP~;@L&HhcM^@v_=v?yRd@Fq_I<4uu$?^+(nGEHR6Pmp04hHaUXjG7biGRGeHv$|Iu0L#ML<%2S@vbT}5Nb)#d)OybmHm{Kyu?VIQt`T5%rd_I znb-chuDG~AGtK9qeT=Od!ZtGCb@Yc1^`1vg#5JvFAb$jIE?dxp(6z6Q!>RV0C|!hk zvU$Y9^>NA^A^Iy<@SL5pKaHD~m@jctB^lI6r-xy`cQ_PR;#***HQ9A`^11cL%=YJR zJrOhPnAM74WGp(=;*>8x4_`zm@gH(9FfiOFCnq$*N-W5AFGWU1f?&Vw+1V1>tpa2A+C)T)Mz;+=eBb!M}3(h~Nj*~v6B(U%}1}StY`Hk6b4k$D} zCPuvu{Q$8eC>xK6VBQA{3@;J}rWogGevFLBB}ULCr%FDcbPT-ZO{u_up3BJQC~ z{CuPYkD5&FRFWz0q2;+`%GJ5af}AUTG!jMfeRN69E6|^b5=#9frEW4{@9d_dICv+^H&XV5@iEU$@}8*?bSBoG}~OR-jXvS~7Czt$Hg_o|(q=lMTdqLzGhJF7uj- z$E9rXEiUaJic~W*Gin3m`0vs21Cj4f?NT&QZ0$bqXrNf%?p@RyY%j8FFuCo zFUrGUFuUgtrYh|#!-f9B2(cpJtFB-Y$XULm{0I<^yTliS%&w@auEvawtxwi_gHu2o zg&422&#J79`<#YC?Sn|h*w`2xd$Z>D1kig>A06ng6kZyLbe&{Jd%Ni<%~PfY$uLUV z*8%qLA6pGooaZjDH(Re0P<|QIS{5Fd0RRa*2ZyMFH@wQql)D{XXxb z!^1^^-N%Pl4|!Ofa1uRSQ-rAw?HOfYz5C8LFY8pGNuoZ`w2E9!%(uKM=6t7)|)o75JKnEBT}m+i16oUIeLg@am~>c zuOi%>l&Gqx%-Zn_bunI35o$0tTEaV|7iwLSR_u1ityx}P zUfi#)s#?@6_~@cED=CHCo=ddb(7a(SFDrXNN~PcOjnf%DJi<_Wvb0=5S(Fl- zv3#G3ivGc;)@Z>Ukn9e~2L%VWJ<2Ij@=z>tR8UY56%}=Lb@lW-@y8>f6m;ns9~W}G z50_v`2Lqra8aJ@OL-oD}PU2;OPMifEz4j+diu?B~yw8LONnaR&B%KB-ap(5O`6*eU zg4UsY>uT9Ows-xr40-ys)oy8GOI@De;95$OoK3lt4xPmeEXB@xCoe+=!X+dmwzqep zS+750f!dQrdH3BIh}GUQN+1zah)j1S)m%2XT0ipCny0(dduo}vKi_d4(*Kd*AOY)= zc62Ftk6JZ)&Bg;^7(Bd`;o0uOelr_-aU$zu0H%|YK_U9;n~_5RDB>9s**n_>>`}x<>lq7F=6`p?%gfiQP@@_aKYKxWThHH9vjoeki&uN%$Wdhx?oKY^_3`kkqhT&{ZrRrV$e`l!;VWw>% z13}tZs)Qvve<`7DT0grOORQndp(9h@9p&I^lQ4SOUx{$qCZb2Zc4M#BeIGz7v&tL* z76a%JMCW4BQ#nylQrMa-vl`Z5smYYeD=&w%v1KbS9A)OwTh@6V#iSX^MLty_U8dj+q#5N6 zfA(T~Bp_~B$}dBAE~eJsX?>uX;Z;mi3oSi82?>dQl|v4Qa+_8Yl6IB{pSbFH2z}Uj zXBvmO%_w{kA0K~Gdowd>VibdM2PvBh8l)z`8v-Z*hWS|8At=!jy-M{lI(iU`J-!#1 zTOS*q>6Eawbwj1%*w>fl=J;YKIIA+_toc97P_%rwQXN9F%R1iv;@Hx>*edA(rk2w< z=JU&|Sn`i+)R$-4LNy&4EyrgG*a?xh<62loH~U|HfK?5`PJ=S8842Cm_zE|@F^AE8 zFGEYxOC|(c(o9H9%*VOKR&1N-^{zkUla1iy=~E-6`^|~G2<$`8KA)+@W_WfFgIY#w zQYyZ>bdkbGKG6t=m|zlT_i)uOv}dJdv_zy)xvpoYwM>PtqOw@=>P^%9xaneo1LFxr zf9~(|^6*6X&`{k-pZGS!o-+#anf6KhhkN1m%$!V&j5+D)vxj>to}QkBu6bE%$~fA( zx`|8eaOmgJ1;`*7#jFbBXveTj|M0zf+9aBC#516_`JZ9;We1RPg+WRP#>{?!{^-0gla3~%S&DYWF?PwRgH0$EGX?8 zNF*J@UoOWc5H!1nQ3@GxP7n06zWjZyc5G z1e4iWmL=5G^jg)EckK^ zL!I2?sc7cRyCrLa-92Srzs6R}AI5Mbq7V=eXya8OI2c@^K`ZzqRx?A(3ku#PeJ^Q)Gw}+v z(L@#$u+lx+>*-N4G&Br&gY>)QJf~VK`!4uw4K-QHd*v=ot`TmJqy0R;I{{~DdzSLTnh5a80f4sH5342z`z?pd>I@?0POHsJbh8mXD4LN zr9Cde^J#hZ!Gj0VnYt!3xrNH{7FvbObUy*S79Y~$-4CauJ9QC(KmqCz+#(jk?!AXd3#&DXMP{@+c9llLFqNv8jt=IbwR5cFxe2pA zU_?=C)8d?8ZQAjLND6f-?^2O<^inQ}c+e-hwHBtQzkXcXTZEb2;15qo=rF+=n3$x0 z`t)#E8foR*QC_XoE98BubJUyF@qvy0@VdQcgADTQ@X#&5;xd4?@^W)$MN=(Aw~e2mTFY&yy{=O*#o~RZp8Mu zXAoF;*`__$aHU5LpVzXX{*fX(-6Ny6H8e^BDhn$JQK&Eyx%R zD#8IqpZIL#?vvUz({b}6+32p=1R-L_B}ndAV36zfY~at8PYiX8EG%e28;$xkmf^Oj zz}$!|5RchH9mJ>#)R=hMcJf?_)YR4Ku3b?qale6;&_FbLM_v*Gm}ve%4|;&cViuB? zw&8u|>0)58*&JN3yDJyxM;7$n3}IYspY#Cv-SX742v*+zH5?{brEZct`GmUUZc`6_ z^CCI^7`bMJ7LqMmedO~Gz8BnBiIG`;7eXQ;4)W3m6cp&LuC7V@ryHYpB0a-~1_r*! zFlUmW+U&M~w>2!5$f&E+V;haCr)%CfS5=LQ;p%6=5damCtUN^I@g+9hswT_pDnT7N zJWTJd4R^O`3fYi(iZ+Y;XSQjzBk5jc9vxs%_51q-;h2E|aspd%I&;cO^rg!)0K4#I zh=B*lKG6GRlxU`SO4qU~K_GXti99h~Xl06%$K6qYXwB+ff;QWfogFDwqE%xx@{L4k zSy@rg5#z7y&!6S?1sj4#Ypt9*8Xog_n6-(aQbZnw1@;U3U(h}6&r*aH*+MncQ>Hjy z6-F(bHgWLrF+{cTRWa<%hX6F{v#CXru%{L=sUFJd9pV)Zs&__S_!0H;n|q@5Q8aKP z6B7sXML0MrD$xgcBm`8u5)s=?@S(SIVLM(G0Z}QJ#qPm5>p5u9Cc)nXO^2JC)syg_ zIN3%}qE$>9-fXjJmFqT*F5+V)zMey{ii&1Dw!ulk;EdiU5%&$vN&3A0MAd<#Rj+&n_Lj@##%KfSdafG`YUQYbFyFhD2MY-|MNz z@GTzYAB242G~xH`2vi)d3)EF#qzLG6sbe*_vn6pp!a=`(<)1eNu}LVLfVvze3Ax7% zeomO0nkp^j-lo;lP1_DXGZASD7f$BU zN{Wg|vxOaP)W$E$8w}Xe>*Bfks4Z?S#!r`WK-uD#UE(FH!>6Y@y6b)UH~X<1B0_j~ zj-ny6vNe_l9Tja)E}-r(;m4Hs#f~H;QL2|9q#mi%oE$jC<-%7-nscD`33sjJ&Dze` z$veBcSc`4v5?{I>SctGc^LeSFa(CyWu_mh?5fPDGUs}#}F6pl>b1^mv{Qj1OWR)I= zpYQk6zVg}$z-HE_?Q|u&UzGFd1$6rJnmKy&MPr3gv!blgLz|o>@Z8}$0gb9vwg~{S z242ldgg!Sd?eQbd_%}X0QS*|A$|@?63#~2$w5}RWC1%|k8ADQvifov5&hM9nD?+^@ z#3gDy4pbU-E}hXxAI+#80=ZFPzYkz!^D!s-_gQt=mi8Vwo2y0*th*#z z);$uTBGnek)e9^O3xV9*iZvs%Ku+(T}0+@h0 zh>yO))iiI@++EAEJ^^JnV4~#tQoT-n<1*Ts)*oXYTxB4v_Bw%LtStt#K+qU9luB7D zjf*4k^*XATE$Gz`VCGbi;d&7YeK>;a*Y;eVS@#%nvXboX-K64sh%_pcW=s9c`S{O2 zO*JkFENm&SfgoQKKkRLs`j+L;y}p>8va2nuqvyPc<0HGOv^2lLj-`PCHC$X*_o5q* zrT`>$CkR8h>eSuQ(J$=I(@YDXOhM_epP@yJNN>)2EZ;LhS%o(AorTc{4AiRLSyz`L z>Z%q%f#TxgG6eP?{qVyqx{juxL@a)Cd%_RV@TzKkP;?8y(lHCFAVSv!_I^O9BP!Hh zeH*GfcygckSe1b3S_~Y) zVm}hzZ(mqJJ8k9W3@wTO9 z+h9Vhe1IIzE%)PJ9QW|O4tH~?nJ@KHVgs)4*qyNI)$rM)9(W!dZJb=bJPQHiuXQ|9 zcy3ZUa1D`m9kn$)DI8dXb0`9zZ^U$9n-Nsqgc7od*urNV)3yh^IS?hSYhW%tC?6OU z!{~)@WMyS{$b}9(Y6t82GSkz0(&En${a^ajQ};|*_Fi-MRf3|+gu2WDWMOyLf#m~M z>2{_}%$H#K;@2}PtM~5S%?^q)8UDrns0R;dC~?LWE);hB6NBvUe0nGVl88 z@-o6owNhS9&H7^~SG($Wgfa8iQS;oF+4Ic9#r6@@aYP{LE|T^APN&%bCX!jwf*QhNc zdh9lp@@+I(tqD`jKWHl`y!%;lk>0*y(Awr{DX>QY3rZ2G{j>Z~f$wMI6(xB`wwR~{ zUZkW%b5jG{VIAU;gvX74XO-H^_t>Z2{`LsWcfz#deR43oVnpk`?XWSF1t0OaGb6(% z<#)LKC_f{EcFP>+jE#RUd@@7!Lut2QOBu#Qz}=$0kd^|JBw|`*f0cwS^F}l^Tf}kt zFrC+$bKV?l@}IRu(Z}(f&3q5L=htw1`5XN83M3h_emo0dtD+P^RNL;TKc~S;3?q!G zJ4MNiuJ>C!J04}*7TD`*q3yi?V&4N)bN%aIP2TGp_=1kPhPp!;N?bnn{e2V?y|TPq z{L_8sEO&=O5Fj&Ulcle%P}0I4yYuLTF@X_KQXmvf5iBHhHGlon&jR3IfgyGgjF-e> z`9zxEf@C!JG9l>kM%aQ()+wBKe2iQQF(4-d4oi?No#~y@XYTWn1 zp@Br|FYJ(nX;JA{dvOU;LxI)HqLkMbjaUX!*-d^@j)&~~z3gm}etxrnTf8O?E^za< zuYv42sbIbolf7S)_0*?r`d+1uUcDRdSz(o7GzEVf28BFWg@7oVhK5G2-mhYwtE_mR zV%jx>=ICl!S(!yW@-q#q-ci(ffrpVX@I}LoIJuU+YlUEpvL{Remb%}E$NDM!vd31R zs~uONJQD0jok*CdQ+tN;d%EPKAuZn?Kc>#CuGWqU6&OT_i3=@3goJ7n6T7K|+&tFC zLN_-VDnePuO%q$yKFx)r5jSufUoc>cV#gmw|D?AcF(<+}F}yvVAu<)1g4mD2x5 z41>wiZ`d!x)KHO;QJxONwJ6IXF|Tv5*Z4maJiJnkRQDk@Swy4t_XT;sZ93K#_`I(*HzfY>u=$B37O5c?*ttb8X5 zi*<+tT)~Z%m6f@b-pNUjv}B&NQx`wR-L?ccmF6!HZCTb&zN?x=Vk;u1@4ez9KyW#> z7z12U98xgQ30PX0?h%4Ca(782bBz0=xQqJT4{u*b;I z(9r1U0pL9>b6&oD8EkM$Qqt7w9`?BJ)y^Qq1pLQ={_nyR;B>in@1C~@6aev?Tm7O{ zoStk)mI`CvrBSXY^Z1qWlHYgcVJi|Dy~Zr|!DTwj@k+@@SiNFZ&66Xn6W`7q zy!8hG^VH%4tb_}|UP0cJ>M56_$L`rVsLep4@Thqg&vI`a0zj_4y*;^Y2XvxeLp4B- z)=I)lWI_~@pGLb_*Yi%-RIWnsW1QwN9|7q_we}e7{d5j#X=#wug5W1hF&ThaPVVjk zmAH(!aW`(<$iZ>t$+=pVd?wHD(BoI=i=e-nKTccn?Roda7`vi_V&!)#W z3|qKsl2lFNt$T|%NjT*%)H>HyDrt?YH)eox^$KJ={L9auPIPUb7zP;1i8~1+1SP{F zBk!`%Q`jy;K9|}nPyoYHl#$6DTTOQal$aZzMBe-u(%2S$iJkvdC3N6^i-zjf!{oNs z*6hMU?_Zmb+B$#z;v0wmnoQ)eO?ZQ50drN2miR_@*ML&5n{l>Hh}+(B^iRd-Zgx+i+k^6bT?dHP?0{n)v>SF+7?+^DJJH*FQ8z9JLqkt* zwE@}w@)lU7mA5b`5;ZK7*d!#&sh6J@_@Amg{qih@ftk6+>%`65`wY-2CIetzeej8T zDoRR9a*va3DpaM%fu)rB6|96ALd+-LrbCpbp(1nw8({boPHo!emQo5;d@Ngm#yTea z8W{nV7Ik|cO9&Kau0hs$y`#0YhZFBX7UFSW$nw&XPXU1b(t9~T8Kv{E`P%g+SCE3| zdfCeDZ$>valMoVOtDVEvZ_Hk9pg{OzHv8dMxJeeZr^;?Hiz5+SVX&zz3n57bvn#Ax zmr-$Ph<eSI~bJH8^+O<|174$S`V$p_#P!}SWZ95|oi{1PzPff_Zp z5L}Yu0ls#)XvU|*r-7{&@4F)~4AC+ZRq``3+JVm-o&!hArGK@6$zu)WL}XO|3S<5Z zeeHS%%3DUJ{a|MyC&)~dQ>+4C#Q5+ro_|#(+ScBRA*c=uWR@?eo(EW+jHr~S;SJv; z@U&BO1pMm>;{jW1i^~qC!DB-vL@YeY=)WCG{C3AQ5YxlLiaGei%~}U=EreSMoA^=s zNYBlE z>#yuZ0IRTEcQ4zzw&9Z}thzQ_wBfM$=@ZIiYVDJfrLV=1D*t_}p z`IVIifT6~VoT#yzYX_vvMUqU8k5pCob~nxo;lKMaWkpMCgR;*#fxB*z1V2Ut`PdrO zX1^KUWgWgI#5JD)CLv5fv}352X;5A7%Uri-$A3-r%q6N{ZL?n+uy{jaUVBfr+W9it!JIdM?NAh=@Cpp_!R)p~W?|iedOZXl}Wfe)kHpy>s=9n-)F9}vGRImLaB5ksPO|x8={TmC` zl(jk(P-h1z{Xudy*f3fhb#{c2dYlR}t7emUVoja#_;J8hyRxU%Z z4HuJ;bJI){<-Z^FfLMI0c#Y7i>ki;>F7td~|*HqZ65?l#7{J*3U4@ z$k%|BvaO%!Z#P9KVPayU^twqK74hb^JeQ+Mi`aE54hQzA27+LNJ~jrg3{&-TW2zuE z8-yxqNbfGC>pGUdT(wtY_5}__i`X&wnffzdVIhks_?xse9slc6USW*KK(PF9V z3PjpV^gL`i_1^;QwW!F*Tn>j%VP2vshI)E>DT!p~+C%{~G&fhKL%V5szYVnN&*x-h zF9oE~C}D_j`~*CcwelbnHg z>rXOI=3gbhxm8~MgH^=OYig}KU0=yT1C(1z_8$hRX&}T-XnA;|;i(P1y~>t1x8E|H z)Lo9x!6+$*g@%Hv+d4YoQ8Y%-duy@R*e<~aOqm21^K<4baer2=;LHqux@*ke;p7Vm zVA9qW5&#pf0AoVV=dnF2y>{9B@bx`<1(T{HaL|S4vuTWnr41^_R_ZJ02n5+FWB^Kmnt;Iko9%*u1$(P>kzYW3?Nm#S1q znwy&&+bELnZUCHXP@5ub_Xj&ixhDs<+K_`G9IKj}pSKjD4KRA2nVBiaONE^?>tQ1o z0+of>RiVkDp_to*0n|j{m~$vlR+fx{0>)z`W)uaOX)CMEZ?@@C=O}RtVrRh&1rT^r z(&e=k_tRr>D=SPW8H$=Z%@{y(WcYjrrICip*0I77hll4%4Us3EZTr;#UtD^M;Ns+ja_`1q=K=Qo zJq&}u(x3v*{WrI03oBXSmxdM1^3~`5QtbZSHYs;NjH+}Y5jbbh3;7e7O6&&}=Oibi zGR5tV91OR{n9TGvAncYF#@E#eTUawUSfO(!W@BSxTW8U=KU8qKY*8uea;!4C0f8eP z$G?hzi!ccknG^A}J7C*RKRL*1hiBtQVZia@?tS((xM2M|ToEx|caMnZ{7eByv)z-J zsj`$da0-{Q%1^@BiDXk|bF2*Fk4eES4QPMi8qEx+^Z_xiuT->p$v4pyCBS*x9EGcu zNZyC70LoR`X4Ujd8tcLL62+4vd~_EJpovc*NIgs=JTt4cC3-NN;z0v|;%1e5_dLc1 zG@xslUngx70=p4h>^}zJzwrdc;-vzA6u|o5#`x(GpV;+oFnQ~fj zJp6SYMJvjsDpoje=tb(^4pO^~Xk@BwHz5rZ6o!R;)-KUz{XjrKU^NYKkgGy3E-qpw zMXJ$JS>3>wkpMz83U8ET3PM_>(8O6YVOVi9U)FwPosH(L!zDmY1}XM9Tw{(ja|ZB5 z0i1SRZ(?_iZVGQ0p=wks0^r)VC$r#yc;ee=`(gMaV2K0-T%$Yjedb!JruAk`)&B=1 z=u^+okUHJHJ~wywIomD#7{PcvEpWrd(sKFNuL`;qINi9ZkuP@sWTTz{aGdKr4wjet z&44cq3k-d8Zcnr9{TlX3t@qFMn*RYIY=}%KlhXwYC$+tQUbOH${uR-7?G{Kik0&5ESZsX=2#&e=`Dmx9y*}TuJ$JzFE7iA7 zyNr4idF+b-MVymPhP{w)H=RvDe#QeU*jmxc zP~ks$&w`eeIX|{|`8Ts>$(GcqD8Q|o9WkP_ButIh4&Z;F08)PH_r}&1+{nX9Ak(e~ z&;d$d^L1fbd}IE1kM0Jpbi!TSYt`jYy8v^J9T4*ZRDFZHjq-AGCNLP0_Qt|mGl);P z+7dsJp&k(#^00(95JpzXy+mSHcxW)ApwbrbXhm1W;aRJ1z^j8L6dKL#xAHW4OHwCK^~ib)TK*Cjb%%W~&$)vp^7Pb;j)Oc-%+%C0kcf)P9b6d!WGch5 znF<6pbHI`+nm)>vlQ4%H;2`8Ji$0kQzKwv^)s+5CDP1Z8Hr*RehgX5GIG*`75t9w+ zoQuMQXLrom$;+Guvmk`Mj-8LX01dg;)00ilp-j*+T4wG%YY5rYuZV~DFhXvp#aR%F zf9aZg`in&e-S|Ye(?OF2E3ujGa#TV}u0$|S^ZGS!!R&Bu0=Rr7)CFa%D9na4X%P79W2m(Z|Mt`c#1-!~meV>@jH=-qqZJ)vtw7U;QK>+(j zS+T`nTj`}F<<+ZK`4t3%ra=9QNHk@*K-ZYZJWT+lSrn}H+Q>+ruHEWxnV{?Tb5auh z$_EFZyyeD82g6N~NVYske{ZiS72k&_+nrJPK%q!%NW?7yf{wXuz-v8Fnx|Di0vt$g z@BAG{sE;BdZEV`qz~D>u(cDZqJ?DA6IKP@u?`ykgVNT66@wVls*a*Tbr=_JQM3TVD z{=A3|+RWFdoXKdrs&xYYq}gnmgAcGq*<<-RGGSOt?KAEp4s$S(3CmQIbiEKwXy} z@dHP|gGO&qPRc|>I2?l$%FDBE+z3<=IH{IzD_#S1Dr(|FJiStg!Ib48wO3mJHlrT$ z`HK%`GaTGop&kOvoGI8O#a ztnJcWoXySOz9>m)D9p)`#<@8qHv9^6ynvou9(PFlJUrF-Cjs%J9%o zm-(IEU5ihk;^n%%`=BzkQ$gf_J$f1q2{1LfyyZ|7pV9{E&7su&pTw zB5e3Y<*4*sBG08hTJ^$-y=jO%aW&z^Z|T8uDtGfHpQtuH#=ns_y7&r=WQd7;JFl?N z?8Wx7KkopKnp@*cZvwcaslyxx*5!6z_9E5#1uj2yT?6%AEYvrbt(pE)O^rup$!eVp z{U(yse2i+C^DjswdYsEgJFOF&uChAioGmFCxPzDV3+Re8va1<&}l z@{mOZy?y43l^Xk#g-m!&@7JCyz_%T+F0BiL3y3$3`P|6+qIlZ&%}IQI{z-s`HE00!l%HveB2|u3%AUp5AiAGV79*0f6Yb@qc=8 zy@-e6@6w}|q~zpcR(jyLAK<*btPe9sc#XE875G%)O6=|8_btuOdEk$Tad?oRY9Pb0 zfGC$}lHRRv`dZOoouwDV3P34^X0Y3zn3@z!J`VoyC9zuEO;uSr!iM|#ex3mC8aCZ_ z%dG38VdTJz4TP9Ul^Y2$F{kFrXJM&>^K>pg-VH#e^^I0sH^!VuR-Nb#-+@3YBxC>` zd9BY2_ueRk2Dj&&*)GrB{mqXcFeT^B{HjpwZDN3EOV8gXBI3C|PS-#FW^kLy&JUzz z^sgnCPtghhJTCsx)85{mJkhbDjo{j9gHQb2+jDksSnh+XG$m-V^!32BSSrxm)`Yf1 zfrz_t>T#MkQf~vKcSGNxXqL)i*vH)rFw7%vbn>zbo93=q_!QtVR}ceN%RB{c$FjUR_htqx-?$4$2I5$&9f~UlluW)g5tLf>n z5(G08O>~=W(OsANiT_@j25@oz0B2+Xw-$kwD7*WZGyVniO^z!CfasU(A}{&wMGLO| z(mL{R-#0n?(bUugnArdsR(Z3wy82#<#=Zw0lpmMjlj(;@2Zq%yb{bk`_wrDTCVN0q zDxpj|k#h;6+J7VDT^-=EJC|W-XtQWmhnm-@KcsSG=5-U0f-H1bWNr{^ndHME`Hdm& zOW_@FS>}F+;6@MonL<{5-kG2Teho)1e#Cr!o>8}cIlA*{XW1ZNA`%dyTdBcqvi4Z0 z@YCctfJ05M>6iF4N4TVFaDYs(gC< zRmqI`Y;?7>;+;0%-uijOgjr9;xtTHMae7=CqZ(Yl0;xX(^!Sm3V{yA;PD2#y#EYWI zknSEpC&9x?Y|sSp+8*{LYAM`CW@blp__OL&|3AH4XH=70m%gINCy1hgUIkGBk&YBY z2kBL6@JbV<3P>oS*9*d>Nf$!sH4qe35JN{)q?bVGy$JykF;u0@#+kX_to6;znqR{o zSXsPpl9QZ$_I_HEGg;I-(tQ@eh-VHLe?w(()I}1r_x#bY2an3-lY_82%*qJUCTHLs z;QP#|S->j&-VZB3f4&fGs&zzt~Gi()cQpEGlU54TJFaeT3oO_}G zj^4p#OV60&no^Og+L;EzskKtln7RP%Ai=(@Y3SK9D=*rIZaU| z+4LB1^>8;UilTVR)u6$^=)r?pr~OEM|BymMo4fhEQYSI^UDGG`Ol_ANYbyme=Z{-l zTwd=vI~%>MgsXmY30euwlk?|v4Go*@Ek0eq>p?RHXJ`SEhx@N~m+vGSe(|P85L#YF zZ{T8cPd|p4g-j*}^)C)OhQII+i;Ro}$0XLAky;d*VgTf!mk^Fn@@{G9>5A^F(6`b( zbf<%E?dxRinka*_w?YvIo4Z$hHX19kdxJgT92J6<};hF>ULRUywS2qnfQrbYySA;3wdcYIvAfMB_y}iD^{^Q4w z8#rt0EXX6fK^;JUMg>dV*WW@X-* zYCQV&60@0jRUd5hLl$We5V{sLhl|ViIAq8PnTdsh|^n2>1tH@Uz+U8IF$@PwuN$~2fSP@?zY6MM6kl!JB zU@qCU+QEBUU(Wv3o4wWxlA~s2X0=dp@s_Y9T7nnb&B{%$cU5i>e{`as|KzGkod7NQ(81R=uV(9 zTl~iZbdTJ;tAw%_V|(u^^h;*7Uh!;lw1a?$+g!3P&KekLm?FJ|>Eh+L%>`{IoJJQ2 zQ+<7Z0(Zh4*VfXKO`AIsucE{qtdO`%l{B$`tm=H|APBq<)E89bG^8&noT=gv);L>O ztW+%TN`%1xR$Rok3kapv`F0HQDI=C>jQMI|K#0tSElp=zEb?lMD|49L@7|2F*rY!{MZJcf}< zNA6SkL@KXTW6}9bu|n}u78c7L9jmi`y32VB$ck(S;F<_Fd5WNK%Nl-FXkUKLzZ~G% zpuHd{7DXo4kA;l6 z|5R+{Z>k;M>k{+5r^#XG!Kqyul*nj{`+5iD=v=%=Z2UcZ1Wl^p>M_r^-2_zwr~`+D$U+Wb+F%aTx_dk@-@1GnN;H^$Zg~5AmG1R z(CZw{IE9{|39WKk1^?Z>?woz@?q&|^X~f~^nrm6)jYc*gjYwwz4{XtCLE`Cbt*t>7 z(yycx$~N66Z_aW3I{th46{)*Oq|#Z<@yM^nsiz+Yh_G9@xU2~Y9=r)(1nb+KgA<8; zy^Buxz7u}c60yDfM)L?ea>OPoeY1?74W*bof^B#eHrioaH+=-;D(_Jfu0?cXHeFTp z@zc|q-DcXV$KAYjA0Hmq^8uA!7!y}lVQS}K4`%naKZ^5$gM)$iyxcr&e(d&A%Fn<9 z8S%Y7A2;Tt9VuVHg~`u{LZv448Blp`Le&emwY5(T5@g+9UPEW|=5A_<6~zah`jNUX z>7N*|zBa4MAC^i!xXzt>KCNaeTe9EX!((%um#1)ZIdIHIVFmH>{zksbDxzKdlto+(5*18qjqn2uj>r#$9%X7X3^PaQ=5J8%x# zof80cC23CF7jQ#h;xJK0qO~$$0OP3}_Pxo@J_~|w7Jf~Txe*;x`8=+(o_JAGGXH47 z+>DhZ3wZ*mSS5+DwrTZ-gov!^GigNDD zP1EB9;%j|@3^R6{WVUl}$+Odla-`F~(O^zmgw9y>P~1?F2X_0$B(lEFHz1%MA^h$N z;hM&aEzMlZrR8PrnXu8tr&Lm&;A@4il#TqclY|}D%nnIkb)`A1h^QNtC@`70qKZqe27h z0etEp$mpz(KNe8kS@?okfbj^-nlLLgI@%d)=Nn0#aWby`s>aBN!woL#^{OKz=QhgYU4}i*Xp7Z zm>Q>nr0pBKUe8L%=|T(={K6yR3yu#Ckt}>&dCb zamVnZD!kO<*LpsJacTAbDOk?D6NU}q`eUZ|?t#iwbD};M7q$kj5F;b3D92N(y;U0@ zGwU1CQJ@k6gInII3d$BsoO1KC`%~yX}8rb_n{htt0e5Gc&Atv9k28D6hbL@4d>0)xSg-Y5o2C9U9;s_o-smT zsq8e(d04RW+CR+dth#|gUrWnBUf$R1Yt{Yc0-B>|&z?bV!ps-Qkj{O22P|de1%aS$ z6r~$+*~18F@Y)4R6LcJmj@>av_Kc6CV`A>tdg-yne`|9jK>$%Jdv41CYC2D9~T zT2azb{+UF^+|bZHAiy@3Q{rA-slSwB079?N*D7w)uI(5Ul5Rn>iG1!bGh_JS7O&&2 z`*-Ff_f*6ZM?C{F6LGF-p8k7#)h^6}9%)D|>-eD8r;O>w{@VM}V?9dfQu%?uW=eSqz+JC# zfI;uK3l{8dgq>Y|be*~VwY07xzKMtcSR2G6(Kv+ifVvMN(AdcjvrCi_mE}uAKJ2*X6-bzxVZ~xOzdi)JTCH-JrUU33B z;#hKR%8SP})4~yJ$B!^o9K7$3+Tc&5D18E82YfBv>vQ}{hw=)9lL11a_=$}$y?c)q zu|e{Y4bunw*(}PjRXc)%EfUN1mA^>0S#;Q(RK98h> zB|m_*&YUgP<$|z0oh;csu*m1+T#NMNcD1+k_P}txyDrDQqfK@u#JFRAC!)-!CYnk1|acuIU)Z%#lO-Be3G2(>`#1p z07Y5+subEWfF_Mwm3=K5hKdUqHFW;y4C&>8F9X6QY)qU?V}i zBle|Mp8>Z51+&h`N^zP(j7eEg(gc`(i_700ArOiF?oFjdP0L~tT$@Z3@7A9hM-%tx z_{uOSCY0WdsKDVOU#zHTPHvx#kp8>({fDc*Y0zsZ5z6%_nI=rnOGDmXQSm6X{<wPB<4?gpnM)2?Cn(`Dnf<;h*$W8BXcLtKHp;$w3iE$ z<>YwEr!4v5$vy@~o1E&-zzgaZMyd*~h^I5K;8KSZQjJYb{gz005Ju>+D8|!MPa^3I zcu}dEiJ`2ivo;U?Zp9=X#LK5RF_Ksc;}kFLvuaQY#4!-k)O+B6)FSXm_yE{S9A9uZ~I)9PO!rUCGzu&AO0EBlL!D>9Yf5K zWi5}2?^LToJPZ!@UPD7xaRN_pvE_IFAkJIj!$xX17rS<#)K+hRbhIEpU(Iqh;q;YG z^!kha;h7S27*xZcV<=3xWh(bbodc>TZhpM}~=iKKJ#pyINos>6zj*p8X z`P_%0r>zd_X!H+ivX76*nUHDjv4V6mt#^Gb`aQA~e(akQCbcnE38M=8R!>OZ9g-bt zP8()aRUiaarw~)mS@M>@L_IbY8TaFgOHgTUnRhMFSAS><;8Lg&4F7eYMS~cPRc#4? zfECxig1Th@_Ku#Oe9k>%<4ekQ2}9ydM25%)0Kr83igZequPN_H*cc`Czbwo15(6MO z(%8`9Og!VTZly}aZ6>e`>6@7N&U`#ke6_d+x^BEfG~c7L<9G$`r?{;9mCiv_!ulA< zVCe1Dr`?XZETuw!J4d&O3YU@+lHJ4T6ll*1nN;96>9oLNC(uBnCbY*B@t?&*Lkt+y z=`&A?NJ*u=h}Af(M`Km!C91+xu3HT>{)yEc;44`4EE)uTlkP!oFQ*wtbdL6oh$u{0 z2r;ZLi|ZBoC1_JEvv$}#ukfyWG4;`#JGo{1A|V=y?IzNFP@k)}ua7LN;we&`0ekgu zegh+b!E$^(ZWW*vEGmLz4t`%cT3QI>!2hrk#&Sq<66I1pazoHp8-F@!{3+^B_XFJq z{la;32b81bqfN9>o9j^*9Qpis;iiT1c*nx@pTgxCknT9#Eq0?{ud{GQfI&?3+8Scd zN;rnn2@0u9Yhe-kDouj-MI#ggwpim{d!wOZBFwW$BLT`ETuo`inYIPkew{54=f*lS zuOMwp{0}1%KFv#d>!&1ro_@Z*sUv$fWv-A@ZI8OChD;Ny+mZ%AQci{mNbUQnjOZA% zCv5clAG>86Lu_2~!eadVOwx3K_&B9SY+1YF%aYpFy>PXS@9grqJ{=yLZRqvd z4+L7|7Bh>R$e#MEx0agp_s0#m()W;4vRQOvp4IRvC>Pvm(AkU9NOOx9{Y%n}{YT8c zO~3$Z$e{W|=riHw)|by2_htV-&-?E=xc~L#{x{EinBDt7yxf1j-~VNq{`r1UPuTts mxB7bx{!dHy_gk3aKe%GH&ZAw%P$GHwEb7YIN~H=9g8vQh|5m&J diff --git a/frontend/static/declared.psd b/frontend/static/declared.psd deleted file mode 100644 index e2f814d..0000000 --- a/frontend/static/declared.psd +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:03ed783e268bc05d40997239f6118767c5d5d8b15d23fa7b329321c0a1529c46 -size 437314 diff --git a/frontend/static/maximize.svg b/frontend/static/maximize.svg new file mode 100644 index 0000000..7118488 --- /dev/null +++ b/frontend/static/maximize.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/frontend/static/minimize.svg b/frontend/static/minimize.svg new file mode 100644 index 0000000..93a212a --- /dev/null +++ b/frontend/static/minimize.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/frontend/static/settings.svg b/frontend/static/settings.svg new file mode 100644 index 0000000..8e99bbe --- /dev/null +++ b/frontend/static/settings.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index c883490..235fc22 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -1,9 +1,6 @@ { "compilerOptions": { "outDir": "dist", - "sourceMap": true, - "declaration": true, - "declarationMap": true, "target": "es6", "esModuleInterop": true, "strict": true, @@ -14,5 +11,5 @@ "composite": true, "lib": ["dom", "es2017"] }, - "include": ["src/**/*.ts"] + "include": ["src/**/*.ts", "src/*.ts"] } diff --git a/frontend/webpack.config.js b/frontend/webpack.config.js index f219f3c..ed9e7b2 100644 --- a/frontend/webpack.config.js +++ b/frontend/webpack.config.js @@ -80,6 +80,16 @@ module.exports = (env, argv) => ({ }, }, }, + { + test: /\.svg$/, + use: { + loader: 'file-loader', + query: { + outputPath: '/static', + name: '[name].[ext]', + }, + }, + }, { test: /\.scss$/, use: [ diff --git a/shared/src/commands/types/player-died.ts b/shared/src/commands/types/player-died.ts new file mode 100644 index 0000000..bf43e0d --- /dev/null +++ b/shared/src/commands/types/player-died.ts @@ -0,0 +1,14 @@ +import { vec2 } from 'gl-matrix'; +import { serializable } from '../../transport/serialization/serializable'; +import { Command } from '../command'; + +@serializable +export class PlayerDiedCommand extends Command { + public constructor(public readonly timeout: number) { + super(); + } + + public toArray(): Array { + return [this.timeout]; + } +} diff --git a/shared/src/commands/types/update-planet-ownership.ts b/shared/src/commands/types/update-planet-ownership.ts new file mode 100644 index 0000000..e2b3c1c --- /dev/null +++ b/shared/src/commands/types/update-planet-ownership.ts @@ -0,0 +1,17 @@ +import { serializable } from '../../transport/serialization/serializable'; +import { Command } from '../command'; + +@serializable +export class UpdatePlanetOwnershipCommand extends Command { + public constructor( + public readonly declaCount: number, + public readonly redCount: number, + public readonly neutralCount: number, + ) { + super(); + } + + public toArray(): Array { + return [this.declaCount, this.redCount, this.neutralCount]; + } +} diff --git a/shared/src/helper/hsl.ts b/shared/src/helper/hsl.ts new file mode 100644 index 0000000..6bece56 --- /dev/null +++ b/shared/src/helper/hsl.ts @@ -0,0 +1,34 @@ +import { vec3 } from 'gl-matrix'; +import { rgb } from './rgb'; + +export const hsl = (hue: number, saturation: number, lightness: number): vec3 => { + hue /= 360; + saturation /= 100; + lightness /= 100; + let r, g, b; + + if (saturation == 0) { + r = g = b = lightness; + } else { + const hue2rgb = (p: number, q: number, t: number) => { + if (t < 0) t += 1; + if (t > 1) t -= 1; + if (t < 1 / 6) return p + (q - p) * 6 * t; + if (t < 1 / 2) return q; + if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6; + return p; + }; + + const q = + lightness < 0.5 + ? lightness * (1 + saturation) + : lightness + saturation - lightness * saturation; + const p = 2 * lightness - q; + + r = hue2rgb(p, q, hue + 1 / 3); + g = hue2rgb(p, q, hue); + b = hue2rgb(p, q, hue - 1 / 3); + } + + return rgb(r, g, b); +}; diff --git a/shared/src/main.ts b/shared/src/main.ts index 6154297..81235b1 100644 --- a/shared/src/main.ts +++ b/shared/src/main.ts @@ -5,7 +5,9 @@ export * from './commands/types/delete-objects'; export * from './commands/types/ternary-action'; export * from './commands/types/move-action'; export * from './commands/types/primary-action'; +export * from './commands/types/player-died'; export * from './commands/types/update-objects'; +export * from './commands/types/update-planet-ownership'; export * from './commands/types/secondary-action'; export * from './commands/command-receiver'; export * from './commands/command-executors'; @@ -15,6 +17,7 @@ export * from './commands/types/set-aspect-ratio-action'; export * from './helper/array'; export * from './helper/last'; export * from './helper/rgb'; +export * from './helper/hsl'; export * from './helper/rgb255'; export * from './helper/mix-rgb'; export * from './helper/clamp'; @@ -36,6 +39,7 @@ export * from './transport/serialization/serializes-to'; export * from './transport/serialization/serializable'; export * from './transport/serialization/override-deserialization'; export * from './objects/types/character-base'; +export * from './objects/types/character-team'; export * from './objects/update-message'; export * from './objects/types/player-character-base'; export * from './objects/types/lamp-base'; diff --git a/shared/src/objects/game-object.ts b/shared/src/objects/game-object.ts index 22d9e6f..76f080d 100644 --- a/shared/src/objects/game-object.ts +++ b/shared/src/objects/game-object.ts @@ -1,5 +1,14 @@ +import { UpdateMessage, UpdateObjectMessage } from '../main'; import { Id } from '../transport/identity'; export abstract class GameObject { constructor(public readonly id: Id) {} + + public calculateUpdates(): UpdateObjectMessage | undefined { + return; + } + + update(updates: Array): void { + updates.forEach((u) => ((this as any)[u.key] = u.value)); + } } diff --git a/shared/src/objects/types/character-base.ts b/shared/src/objects/types/character-base.ts index 57c9e99..7e8b981 100644 --- a/shared/src/objects/types/character-base.ts +++ b/shared/src/objects/types/character-base.ts @@ -2,12 +2,15 @@ import { Circle } from '../../helper/circle'; import { Id } from '../../transport/identity'; import { serializable } from '../../transport/serialization/serializable'; import { GameObject } from '../game-object'; +import { CharacterTeam } from './character-team'; @serializable export class CharacterBase extends GameObject { constructor( id: Id, public colorIndex: number, + public team: CharacterTeam, + public health: number, public head?: Circle, public leftFoot?: Circle, public rightFoot?: Circle, @@ -16,7 +19,7 @@ export class CharacterBase extends GameObject { } public toArray(): Array { - const { id, colorIndex, head, leftFoot, rightFoot } = this; - return [id, colorIndex, head, leftFoot, rightFoot]; + const { id, colorIndex, team, health, head, leftFoot, rightFoot } = this; + return [id, colorIndex, team, health, head, leftFoot, rightFoot]; } } diff --git a/shared/src/objects/types/character-team.ts b/shared/src/objects/types/character-team.ts new file mode 100644 index 0000000..000a78b --- /dev/null +++ b/shared/src/objects/types/character-team.ts @@ -0,0 +1,4 @@ +export enum CharacterTeam { + decla = 'decla', + red = 'red', +} diff --git a/shared/src/objects/types/planet-base.ts b/shared/src/objects/types/planet-base.ts index 205f6c4..2f2b1e0 100644 --- a/shared/src/objects/types/planet-base.ts +++ b/shared/src/objects/types/planet-base.ts @@ -7,8 +7,16 @@ import { GameObject } from '../game-object'; @serializable export class PlanetBase extends GameObject { - constructor(id: Id, public readonly vertices: Array) { + public readonly center: vec2; + + constructor( + id: Id, + public readonly vertices: Array, + public ownership: number = 0.5, + ) { super(id); + this.center = vertices.reduce((sum, v) => vec2.add(sum, sum, v), vec2.create()); + vec2.scale(this.center, this.center, 1 / vertices.length); } public static createPlanetVertices( @@ -16,7 +24,7 @@ export class PlanetBase extends GameObject { width: number, height: number, randomness: number, - vertexCount = settings.polygonEdgeCount, + vertexCount = settings.planetEdgeCount, ): Array { const vertices = []; diff --git a/shared/src/objects/types/player-character-base.ts b/shared/src/objects/types/player-character-base.ts index 61d9e62..ec65fac 100644 --- a/shared/src/objects/types/player-character-base.ts +++ b/shared/src/objects/types/player-character-base.ts @@ -2,6 +2,7 @@ import { CharacterBase } from './character-base'; import { Circle } from '../../helper/circle'; import { Id } from '../../transport/identity'; import { serializable } from '../../transport/serialization/serializable'; +import { CharacterTeam } from './character-team'; @serializable export class PlayerCharacterBase extends CharacterBase { @@ -9,15 +10,17 @@ export class PlayerCharacterBase extends CharacterBase { id: Id, public name: string, colorIndex: number, + team: CharacterTeam, + health: number, head?: Circle, leftFoot?: Circle, rightFoot?: Circle, ) { - super(id, colorIndex, head, leftFoot, rightFoot); + super(id, colorIndex, team, health, head, leftFoot, rightFoot); } public toArray(): Array { - const { id, name, colorIndex, head, leftFoot, rightFoot } = this; - return [id, name, colorIndex, head, leftFoot, rightFoot]; + const { id, name, colorIndex, team, health, head, leftFoot, rightFoot } = this; + return [id, name, colorIndex, team, health, head, leftFoot, rightFoot]; } } diff --git a/shared/src/objects/types/projectile-base.ts b/shared/src/objects/types/projectile-base.ts index 90ef4e2..ab51e75 100644 --- a/shared/src/objects/types/projectile-base.ts +++ b/shared/src/objects/types/projectile-base.ts @@ -5,11 +5,17 @@ import { GameObject } from '../game-object'; @serializable export class ProjectileBase extends GameObject { - constructor(id: Id, public center: vec2, public radius: number) { + constructor( + id: Id, + public center: vec2, + public radius: number, + public colorIndex: number, + public strength: number, + ) { super(id); } public toArray(): Array { - return [this.id, this.center, this.radius]; + return [this.id, this.center, this.radius, this.colorIndex, this.strength]; } } diff --git a/shared/src/settings.ts b/shared/src/settings.ts index 777265c..98aec09 100644 --- a/shared/src/settings.ts +++ b/shared/src/settings.ts @@ -1,55 +1,47 @@ +import { rgb } from './helper/rgb'; import { rgb255 } from './helper/rgb255'; +const declaColor = rgb255(181, 138, 255); +const redColor = rgb255(255, 138, 138); +const declaPlanetColor = rgb(0, 0, 3); +const redPlanetColor = rgb(3, 0, 0); + export const settings = { lightCutoffDistance: 600, physicsMaxStep: 2, maxVelocityX: 1000, maxVelocityY: 1000, - polygonEdgeCount: 7, + planetEdgeCount: 7, + takeControlTimeInSeconds: 10, maxGravityDistance: 700, maxGravityQ: 180, + planetControlThreshold: 0.2, + playerMaxHealth: 100, maxGravityStrength: 10000, maxAcceleration: 10000, + playerMaxStrength: 80, + playerDiedTimeout: 5, + playerStrengthRegenerationPerSeconds: 40, + projectileMaxStrength: 40, projectileSpeed: 4000, projectileMaxBounceCount: 1, - projectileStartOffset: 250, + projectileTimeout: 3, + projectileFadeSpeed: 20, + projectileStartOffset: 150, projectileCreationInterval: 0.1, playerColorIndexOffset: 3, - worldTopEdge: 10000, - worldRightEdge: 10000, - worldLeftEdge: -10000, - worldBottomEdge: -10000, + worldTopEdge: 3000, + worldRightEdge: 3000, + worldLeftEdge: -3000, + worldBottomEdge: -3000, backgroundGradient: [rgb255(90, 38, 43), rgb255(43, 39, 73)], - playerColors: [ - rgb255(107, 48, 188), - rgb255(56, 254, 220), - rgb255(197, 17, 17), - rgb255(24, 24, 24), - rgb255(245, 245, 88), - rgb255(80, 239, 58), - rgb255(18, 127, 45), - rgb255(240, 125, 13), - rgb255(214, 227, 241), - rgb255(0, 161, 161), - rgb255(250, 161, 151), - rgb255(235, 84, 185), - rgb255(114, 73, 30), - rgb255(75, 75, 75), - rgb255(107, 48, 188), - rgb255(56, 254, 220), - rgb255(197, 17, 17), - rgb255(24, 24, 24), - rgb255(245, 245, 88), - rgb255(80, 239, 58), - rgb255(18, 127, 45), - rgb255(240, 125, 13), - rgb255(214, 227, 241), - rgb255(0, 161, 161), - rgb255(250, 161, 151), - rgb255(235, 84, 185), - rgb255(114, 73, 30), - rgb255(75, 75, 75), - ], + declaColor, + declaPlanetColor, + redColor, + redPlanetColor, + declaIndex: 0, + redIndex: 1, + palette: [declaColor, redColor], targetPhysicsDeltaTimeInMilliseconds: 20, minPhysicsSleepTime: 4, velocityAttenuation: 0.25, diff --git a/shared/tsconfig.json b/shared/tsconfig.json index f85c232..46fe043 100644 --- a/shared/tsconfig.json +++ b/shared/tsconfig.json @@ -13,5 +13,6 @@ "module": "commonjs", "composite": true, "lib": ["dom", "es2017"] - } + }, + "include": ["src/**/*.ts", "src/*.ts"] } diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..4b59984 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "es6", + "esModuleInterop": true, + "strict": true, + "experimentalDecorators": true, + "downlevelIteration": true, + "moduleResolution": "node", + "module": "commonjs", + "composite": true, + "lib": ["dom", "es2017"] + } +} From 021cac655cf341865a402f05a04df606d59306a7 Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Tue, 20 Oct 2020 09:24:00 +0200 Subject: [PATCH 015/101] Fix built assets --- Dockerfile | 2 +- backend/package.json | 6 +++--- frontend/src/index.ts | 4 ++++ frontend/webpack.config.js | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 0a1d9b6..4d4d16f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ RUN yarn && yarn run build FROM node:14.13.0-alpine3.10 COPY backend/package.json . -RUN npm install --production +RUN yarn COPY --from=build backend/dist/main.js main.js diff --git a/backend/package.json b/backend/package.json index 2a22a29..5f7f17b 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "declared-server", - "version": "0.0.2", + "version": "0.0.3", "description": "Game server for decla.red", "keywords": [], "author": "András Schmelczer (https://schmelczer.dev/)", @@ -20,7 +20,7 @@ "minimist": "^1.2.5", "socket.io": "^2.3.0", "uws": "^10.148.1", - "webpack-node-externals": "^2.5.2" + "gl-matrix": "^3.3.0" }, "devDependencies": { "@types/minimist": "^1.2.0", @@ -40,8 +40,8 @@ "eslint-plugin-unused-imports": "^0.1.3", "file-loader": "^6.1.0", "ts-loader": "^8.0.3", - "gl-matrix": "^3.3.0", "nodemon": "^2.0.4", + "webpack-node-externals": "^2.5.2", "prettier": "^2.0.5", "raw-loader": "^4.0.1", "resolve-url-loader": "^3.1.1", diff --git a/frontend/src/index.ts b/frontend/src/index.ts index 6961c9b..932350e 100644 --- a/frontend/src/index.ts +++ b/frontend/src/index.ts @@ -18,6 +18,10 @@ import { handleFullScreen } from './scripts/handle-full-screen'; import { Game } from './scripts/game'; import { PlayerCharacterView } from './scripts/objects/player-character-view'; +import '../static/settings.svg'; +import '../static/minimize.svg'; +import '../static/maximize.svg'; + glMatrix.setMatrixArrayType(Array); overrideDeserialization(CharacterBase, CharacterView); diff --git a/frontend/webpack.config.js b/frontend/webpack.config.js index ed9e7b2..b314135 100644 --- a/frontend/webpack.config.js +++ b/frontend/webpack.config.js @@ -65,7 +65,7 @@ module.exports = (env, argv) => ({ }), new CleanWebpackPlugin({ protectWebpackAssets: false, - cleanAfterEveryBuildPatterns: ['*.js', '*.css'], + cleanAfterEveryBuildPatterns: ['*', '!index.html', '!static*'], }), ], module: { From 909b69392deaf8328671c52497cb1e4451e0ccbb Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Tue, 20 Oct 2020 10:00:20 +0200 Subject: [PATCH 016/101] Remove console logs --- frontend/src/scripts/objects/game-object-container.ts | 1 - frontend/src/scripts/objects/player-character-view.ts | 8 +------- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/frontend/src/scripts/objects/game-object-container.ts b/frontend/src/scripts/objects/game-object-container.ts index adf92b5..f21b1e8 100644 --- a/frontend/src/scripts/objects/game-object-container.ts +++ b/frontend/src/scripts/objects/game-object-container.ts @@ -22,7 +22,6 @@ export class GameObjectContainer extends CommandReceiver { protected commandExecutors: CommandExecutors = { [CreatePlayerCommand.type]: (c: CreatePlayerCommand) => { this.player = c.character as PlayerCharacterView; - console.log(c.character); this.camera = new Camera(this.game); this.addObject(this.player); this.addObject(this.camera); diff --git a/frontend/src/scripts/objects/player-character-view.ts b/frontend/src/scripts/objects/player-character-view.ts index 26f9b42..7dcc6a9 100644 --- a/frontend/src/scripts/objects/player-character-view.ts +++ b/frontend/src/scripts/objects/player-character-view.ts @@ -24,8 +24,6 @@ export class PlayerCharacterView extends PlayerCharacterBase implements ViewObje super(id, name, colorIndex, team, health, head, leftFoot, rightFoot); this.shape = new BlobShape(colorIndex); - console.log(this.id, 'created'); - this.nameElement = document.createElement('div'); this.nameElement.className = 'player-tag'; this.nameElement.innerText = this.name; @@ -43,15 +41,11 @@ export class PlayerCharacterView extends PlayerCharacterBase implements ViewObje } public beforeDestroy(): void { - console.log(this.id, 'destroyes'); this.nameElement.parentElement?.removeChild(this.nameElement); } - private elementAdded = false; public draw(renderer: Renderer, overlay: HTMLElement): void { - if (!this.elementAdded) { - this.elementAdded = true; - console.log(this.id, 'add', this.nameElement, this.nameElement.parentElement); + if (!this.nameElement.parentElement) { overlay.appendChild(this.nameElement); } From 91079c0420a166885399a7843bc728a4cb5cb0bd Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Tue, 20 Oct 2020 10:00:28 +0200 Subject: [PATCH 017/101] Fix docker build --- Dockerfile | 3 ++- backend/package.json | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 4d4d16f..420a749 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,8 +7,9 @@ RUN yarn && yarn run build FROM node:14.13.0-alpine3.10 +ENV NODE_ENV=production COPY backend/package.json . -RUN yarn +RUN npm i --production COPY --from=build backend/dist/main.js main.js diff --git a/backend/package.json b/backend/package.json index 5f7f17b..9a934cf 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "declared-server", - "version": "0.0.3", + "version": "0.0.4", "description": "Game server for decla.red", "keywords": [], "author": "András Schmelczer (https://schmelczer.dev/)", From eb7240b40d987d2667125cb1fb2a340c16656540 Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Wed, 21 Oct 2020 10:32:11 +0200 Subject: [PATCH 018/101] Add vibration --- frontend/src/scripts/game.ts | 6 +++++- .../scripts/objects/player-character-view.ts | 19 ++++++++++++++++++- frontend/src/scripts/options.ts | 3 +++ 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 frontend/src/scripts/options.ts diff --git a/frontend/src/scripts/game.ts b/frontend/src/scripts/game.ts index 00ae80c..45344c0 100644 --- a/frontend/src/scripts/game.ts +++ b/frontend/src/scripts/game.ts @@ -29,12 +29,13 @@ import { TouchListener } from './commands/generators/touch-listener'; import { CommandReceiverSocket } from './commands/receivers/command-receiver-socket'; import { PlayerDecision } from './join-form-handler'; import { GameObjectContainer } from './objects/game-object-container'; +import { options } from './options'; import { BlobShape } from './shapes/blob-shape'; import { PlanetShape } from './shapes/planet-shape'; export class Game { public readonly gameObjects = new GameObjectContainer(this); - private renderer?: Renderer; + public renderer?: Renderer; private socket!: SocketIOClient.Socket; private deadTimeout = 0; @@ -70,6 +71,9 @@ export class Game { const command = deserialize(serialized); if (command instanceof PlayerDiedCommand) { this.deadTimeout = command.timeout; + if (options.vibrationEnabled) { + navigator.vibrate(150); + } this.overlay.appendChild(this.announcmentText); } else if (command instanceof UpdatePlanetOwnershipCommand) { const all = command.declaCount + command.redCount + command.neutralCount; diff --git a/frontend/src/scripts/objects/player-character-view.ts b/frontend/src/scripts/objects/player-character-view.ts index 7dcc6a9..028f8d7 100644 --- a/frontend/src/scripts/objects/player-character-view.ts +++ b/frontend/src/scripts/objects/player-character-view.ts @@ -1,6 +1,14 @@ import { vec2 } from 'gl-matrix'; import { Renderer } from 'sdf-2d'; -import { Circle, Id, PlayerCharacterBase, UpdateMessage, CharacterTeam } from 'shared'; +import { + Circle, + Id, + PlayerCharacterBase, + UpdateMessage, + CharacterTeam, + settings, +} from 'shared'; +import { options } from '../options'; import { BlobShape } from '../shapes/blob-shape'; import { ViewObject } from './view-object'; @@ -10,6 +18,7 @@ export class PlayerCharacterView extends PlayerCharacterBase implements ViewObje private nameElement: HTMLElement; private healthElement: HTMLElement; private timeSinceLastNameElementUpdate = 0; + private previousHealth; constructor( id: Id, @@ -24,6 +33,7 @@ export class PlayerCharacterView extends PlayerCharacterBase implements ViewObje super(id, name, colorIndex, team, health, head, leftFoot, rightFoot); this.shape = new BlobShape(colorIndex); + this.previousHealth = this.health; this.nameElement = document.createElement('div'); this.nameElement.className = 'player-tag'; this.nameElement.innerText = this.name; @@ -38,6 +48,13 @@ export class PlayerCharacterView extends PlayerCharacterBase implements ViewObje public step(deltaTimeInMilliseconds: number): void { this.timeSinceLastNameElementUpdate += deltaTimeInMilliseconds; this.healthElement.style.width = this.health + '%'; + if (this.previousHealth > this.health) { + this.previousHealth = this.health; + if (options.vibrationEnabled) { + navigator.vibrate(50); + } + } + this.previousHealth = this.health; } public beforeDestroy(): void { diff --git a/frontend/src/scripts/options.ts b/frontend/src/scripts/options.ts new file mode 100644 index 0000000..7c203b1 --- /dev/null +++ b/frontend/src/scripts/options.ts @@ -0,0 +1,3 @@ +export const options = { + vibrationEnabled: true, +}; From fd64100dc9423ff5608d083e3b24d4872da0386f Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Wed, 21 Oct 2020 10:32:19 +0200 Subject: [PATCH 019/101] Add insights --- frontend/src/index.ts | 40 ++++++++++++++++++- .../src/scripts/get-insights-from-renderer.ts | 21 ++++++++++ frontend/src/scripts/handle-insights.ts | 28 +++++++++++++ .../src/scripts/landing-page-background.ts | 5 +++ 4 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 frontend/src/scripts/get-insights-from-renderer.ts create mode 100644 frontend/src/scripts/handle-insights.ts diff --git a/frontend/src/index.ts b/frontend/src/index.ts index 932350e..eb4ff8b 100644 --- a/frontend/src/index.ts +++ b/frontend/src/index.ts @@ -21,6 +21,8 @@ import { PlayerCharacterView } from './scripts/objects/player-character-view'; import '../static/settings.svg'; import '../static/minimize.svg'; import '../static/maximize.svg'; +import { handleInsights } from './scripts/handle-insights'; +import { getInsightsFromRenderer } from './scripts/get-insights-from-renderer'; glMatrix.setMatrixArrayType(Array); @@ -51,14 +53,48 @@ const main = async () => { const background = new LandingPageBackground(canvas); const joinHandler = new JoinFormHandler(joinGameForm, serverContainer); - handleFullScreen(minimize, maximize); + + let backgroundRenderer = await background.renderer; + let isInGame = false; + let game: Game; + const getFrameData = () => { + const { + fps, + renderScale, + lightScale, + canvasWidth, + canvasHeight, + } = getInsightsFromRenderer(isInGame ? game.renderer : backgroundRenderer); + + return { + isInGame, + fps, + renderScale, + lightScale, + canvasWidth, + canvasHeight, + }; + }; + const { vendor, renderer } = getInsightsFromRenderer(backgroundRenderer); + handleInsights( + { + vendor, + renderer, + referrer: document.referrer, + connection: (navigator as any)?.connection.effectiveType, + devicePixelRatio: devicePixelRatio, + }, + getFrameData, + ); + const playerDecision = await joinHandler.getPlayerDecision(); landingUI.style.display = 'none'; background.destroy(); - new Game(playerDecision, canvas, overlay); + game = new Game(playerDecision, canvas, overlay); + isInGame = true; } catch (e) { console.error(e); alert(e); diff --git a/frontend/src/scripts/get-insights-from-renderer.ts b/frontend/src/scripts/get-insights-from-renderer.ts new file mode 100644 index 0000000..cb9c3c0 --- /dev/null +++ b/frontend/src/scripts/get-insights-from-renderer.ts @@ -0,0 +1,21 @@ +import { Renderer } from 'sdf-2d'; + +export const getInsightsFromRenderer = ( + renderer?: Renderer, +): { + vendor?: string; + renderer?: string; + fps?: number; + renderScale?: number; + lightScale?: number; + canvasWidth?: number; + canvasHeight?: number; +} => ({ + fps: renderer?.insights?.fps, + vendor: renderer?.insights?.vendor, + renderer: renderer?.insights?.renderer, + renderScale: renderer?.insights?.renderPasses.distance.renderScale, + lightScale: renderer?.insights?.renderPasses.lights.renderScale, + canvasWidth: renderer?.canvasSize.x, + canvasHeight: renderer?.canvasSize.y, +}); diff --git a/frontend/src/scripts/handle-insights.ts b/frontend/src/scripts/handle-insights.ts new file mode 100644 index 0000000..ee84bc4 --- /dev/null +++ b/frontend/src/scripts/handle-insights.ts @@ -0,0 +1,28 @@ +const baseUri = 'https://insights.decla.red'; +const type = 'decla-red-frontend'; +const updateTime = 15000; + +export const handleInsights = async (initialData: any, getFrameData: () => any) => { + const sessionId = await createSession(initialData); + setInterval(() => createFrame(sessionId, getFrameData()), updateTime); +}; + +const createSession = async (data: any): Promise => { + const response = await sendPostRequest(`${baseUri}/${type}/sessions/`, data); + const { sessionId } = await response.json(); + return sessionId; +}; + +const createFrame = async (sessionId: string, data: any): Promise => + await sendPostRequest(`${baseUri}/${type}/sessions/${sessionId}`, data); + +const sendPostRequest = async (uri: string, data: any): Promise => + await fetch(uri, { + method: 'POST', + mode: 'cors', + redirect: 'follow', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(data), + }); diff --git a/frontend/src/scripts/landing-page-background.ts b/frontend/src/scripts/landing-page-background.ts index ef9b3c2..368259e 100644 --- a/frontend/src/scripts/landing-page-background.ts +++ b/frontend/src/scripts/landing-page-background.ts @@ -20,9 +20,12 @@ const LangindPagePolygon = NoisyPolygonFactory( export class LandingPageBackground { private isActive = true; + public renderer: Promise; + private resolveRenderer!: (r: Renderer) => unknown; constructor(canvas: HTMLCanvasElement) { this.start(canvas); + this.renderer = new Promise((r) => (this.resolveRenderer = r)); } private async start(canvas: HTMLCanvasElement): Promise { @@ -65,6 +68,8 @@ export class LandingPageBackground { private gameLoop(renderer: Renderer, time: DOMHighResTimeStamp, _: number): boolean { Random.seed = 42; + this.resolveRenderer(renderer); + renderer.setViewArea(vec2.fromValues(0, renderer.canvasSize.y), renderer.canvasSize); const topPlanetPosition = vec2.fromValues( From c844e6c52bb3721392f561eabc9220b8dfec5cbd Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Wed, 21 Oct 2020 20:26:28 +0200 Subject: [PATCH 020/101] FIx cross-browser incompatibility --- frontend/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/index.ts b/frontend/src/index.ts index eb4ff8b..f663b0c 100644 --- a/frontend/src/index.ts +++ b/frontend/src/index.ts @@ -82,7 +82,7 @@ const main = async () => { vendor, renderer, referrer: document.referrer, - connection: (navigator as any)?.connection.effectiveType, + connection: (navigator as any)?.connection?.effectiveType, devicePixelRatio: devicePixelRatio, }, getFrameData, From 2509199abccb2bdb7f9c8ff8b01df8452758b2e4 Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Wed, 21 Oct 2020 20:27:03 +0200 Subject: [PATCH 021/101] Add landing page player count updates --- backend/src/game-server.ts | 17 ++- frontend/src/scripts/config/configuration.ts | 4 + frontend/src/scripts/join-form-handler.ts | 110 +++++++++++++++---- shared/src/transport/transport-events.ts | 2 + 4 files changed, 111 insertions(+), 22 deletions(-) diff --git a/backend/src/game-server.ts b/backend/src/game-server.ts index 93446a0..991069b 100644 --- a/backend/src/game-server.ts +++ b/backend/src/game-server.ts @@ -12,6 +12,8 @@ import { createWorld } from './map/create-world'; import { DeltaTimeCalculator } from './helper/delta-time-calculator'; import { Options } from './options'; +const playerCountSubscribedRoom = 'playerCountUpdates'; + export class GameServer { private objects = new PhysicalContainer(); private players: Array = []; @@ -20,7 +22,7 @@ export class GameServer { private serverName: string; private playerLimit: number; - constructor(io: ioserver.Server, options: Options) { + constructor(private readonly io: ioserver.Server, options: Options) { this.serverName = options.name; this.playerLimit = options.playerLimit; @@ -36,18 +38,27 @@ export class GameServer { player.sendCommand(command); }); + this.sendPlayerCountUpdate(); + socket.on('disconnect', () => { player.destroy(); this.players = this.players.filter((p) => p !== player); + this.sendPlayerCountUpdate(); }); }); - socket.on('join', (room_name: string) => { - socket.join(room_name); + socket.on(TransportEvents.SubscribeForPlayerCount, () => { + socket.join(playerCountSubscribedRoom); }); }); } + public sendPlayerCountUpdate() { + this.io + .to(playerCountSubscribedRoom) + .emit(TransportEvents.PlayerCountUpdate, this.players.length); + } + public start() { this.handlePhysics(); } diff --git a/frontend/src/scripts/config/configuration.ts b/frontend/src/scripts/config/configuration.ts index fedb2e5..49e2017 100644 --- a/frontend/src/scripts/config/configuration.ts +++ b/frontend/src/scripts/config/configuration.ts @@ -6,6 +6,10 @@ export abstract class Configuration { private static initialized = false; public static async initialize(): Promise { + if (this.initialized) { + return; + } + const firebaseConfig = { apiKey: 'AIzaSyBG85dp-AhaCW-qi_6mu77wDPSipzipIF4', authDomain: 'decla-red.firebaseapp.com', diff --git a/frontend/src/scripts/join-form-handler.ts b/frontend/src/scripts/join-form-handler.ts index 3d9e149..2fa9ba5 100644 --- a/frontend/src/scripts/join-form-handler.ts +++ b/frontend/src/scripts/join-form-handler.ts @@ -1,5 +1,5 @@ -import { ServerInformation, serverInformationEndpoint } from 'shared'; - +import { ServerInformation, serverInformationEndpoint, TransportEvents } from 'shared'; +import io from 'socket.io-client'; import { Configuration } from './config/configuration'; export type PlayerDecision = { @@ -7,9 +7,11 @@ export type PlayerDecision = { server: string; }; +const pollInterval = 10000; export class JoinFormHandler { private waitingForDecision: Promise; private resolvePlayerDecision!: (d: PlayerDecision) => void; + private pollServersTimer: any; constructor(form: HTMLFormElement, private readonly container: HTMLElement) { this.waitingForDecision = new Promise((r) => (this.resolvePlayerDecision = r)); @@ -35,18 +37,51 @@ export class JoinFormHandler { e.preventDefault(); }; + this.pollServersTimer = setInterval(this.loadServers.bind(this), pollInterval); this.loadServers(); + this.waitForFinish(); } + private async waitForFinish() { + await this.waitingForDecision; + this.destroy(); + } + + private destroy() { + clearInterval(this.pollServersTimer); + this.servers.forEach((s) => s.destroy()); + } + + private servers: Array = []; private async loadServers() { await Configuration.initialize(); - const serverList = Configuration.servers; + + const serverList = Configuration.servers.filter( + (u) => !this.servers.find((s) => s.url === u), + ); serverList.map(async (url) => { - const response = await fetch(url + serverInformationEndpoint); - if (response.ok) { + const controller = new AbortController(); + const signal = controller.signal; + setTimeout(() => controller.abort(), pollInterval * 0.8); + + let response: Response | undefined; + try { + response = await fetch(url + serverInformationEndpoint, { signal }); + } catch { + // it's okay + } + + if (response?.ok) { const content: ServerInformation = await response.json(); - this.displayNewServerInfo(content, url); + const server = new ServerChooserOption( + content, + url, + (r) => (this.servers = this.servers.filter((s) => s !== r)), + this.servers.length === 0, + ); + this.servers.push(server); + this.container.appendChild(server.element); } }); } @@ -54,19 +89,56 @@ export class JoinFormHandler { public async getPlayerDecision(): Promise { return this.waitingForDecision; } +} - private isFirstServer = true; - private displayNewServerInfo(content: ServerInformation, url: string) { - this.container.innerHTML += ` -
- - -
- `; - this.isFirstServer = false; +class ServerChooserOption { + private divElement = document.createElement('div'); + private inputElement = document.createElement('input'); + private labelElement = document.createElement('label'); + private socket: SocketIOClient.Socket; + + constructor( + private content: ServerInformation, + public readonly url: string, + private onDestroy: (v: ServerChooserOption) => unknown, + isFirst: boolean, + ) { + this.inputElement.required = true; + this.inputElement.type = 'radio'; + this.inputElement.id = this.inputElement.value = url; + this.inputElement.name = 'server'; + this.inputElement.checked = isFirst; + this.labelElement.htmlFor = url; + this.divElement.appendChild(this.inputElement); + this.divElement.appendChild(this.labelElement); + this.setPlayerLabelText(); + + this.socket = io(url, { + reconnection: false, + timeout: 1500, + }); + + this.socket.on('connect_error', this.destroy.bind(this)); + this.socket.on('connect_timeout', this.destroy.bind(this)); + this.socket.on('disconnect', this.destroy.bind(this)); + this.socket.emit(TransportEvents.SubscribeForPlayerCount); + this.socket.on(TransportEvents.PlayerCountUpdate, (v: number) => { + this.content.playerCount = v; + this.setPlayerLabelText(); + }); + } + + public destroy() { + this.socket.close(); + this.divElement.parentElement?.removeChild(this.divElement); + this.onDestroy(this); + } + + private setPlayerLabelText() { + this.labelElement.innerText = `${this.content.serverName} - ${this.content.playerCount}/${this.content.playerLimit} players`; + } + + public get element(): HTMLElement { + return this.divElement; } } diff --git a/shared/src/transport/transport-events.ts b/shared/src/transport/transport-events.ts index b254201..8104af6 100644 --- a/shared/src/transport/transport-events.ts +++ b/shared/src/transport/transport-events.ts @@ -2,6 +2,8 @@ export enum TransportEvents { PlayerJoining = 'PlayerJoining', PlayerToServer = 'PlayerToServer', ServerToPlayer = 'ServerToPlayer', + SubscribeForPlayerCount = 'SubscribeForPlayerCount', + PlayerCountUpdate = 'PlayerCountUpdate', Ping = 'Ping', Pong = 'Pong', } From 81a8834c4d7c1301902a0e44cf9d669ebce29a56 Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Thu, 22 Oct 2020 10:53:31 +0200 Subject: [PATCH 022/101] Improve settings --- frontend/package.json | 1 + frontend/src/index.html | 39 +++-- frontend/src/index.ts | 143 ++++++++++++------ .../commands/generators/keyboard-listener.ts | 5 +- .../commands/generators/touch-listener.ts | 12 +- frontend/src/scripts/game.ts | 18 ++- .../scripts/objects/player-character-view.ts | 4 +- frontend/src/scripts/options-handler.ts | 51 +++++++ frontend/src/scripts/options.ts | 3 - frontend/src/styles/button.scss | 26 ++++ frontend/src/styles/form.scss | 23 +-- frontend/src/styles/main.scss | 79 ++++++---- frontend/src/styles/mixins.scss | 2 +- frontend/src/styles/settings.scss | 122 +++++++++++++++ frontend/src/styles/vars.scss | 5 +- frontend/static/circle.svg | 11 ++ frontend/static/logout.svg | 5 + frontend/static/vibrate.svg | 7 + frontend/static/volume.svg | 6 + 19 files changed, 439 insertions(+), 123 deletions(-) create mode 100644 frontend/src/scripts/options-handler.ts delete mode 100644 frontend/src/scripts/options.ts create mode 100644 frontend/src/styles/button.scss create mode 100644 frontend/src/styles/settings.scss create mode 100644 frontend/static/circle.svg create mode 100644 frontend/static/logout.svg create mode 100644 frontend/static/vibrate.svg create mode 100644 frontend/static/volume.svg diff --git a/frontend/package.json b/frontend/package.json index 54c1224..e817939 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -47,6 +47,7 @@ "sass-loader": "^9.0.2", "sdf-2d": "^0.6.0", "shared": "0.0.0", + "resize-observer-polyfill": "^1.5.1", "socket.io-client": "^2.3.1", "source-map-loader": "^1.1.0", "svg-url-loader": "^6.0.0", diff --git a/frontend/src/index.html b/frontend/src/index.html index db4f744..9b8ca6e 100644 --- a/frontend/src/index.html +++ b/frontend/src/index.html @@ -46,23 +46,44 @@ - open-settings +
+
+ -
-

Settings

- - - -
+ + + + + logout +
+
+ +
+ toggle-settings +
minimize-application maximize-application { - try { - const landingUI = document.querySelector('#landing-ui') as HTMLElement; - const joinGameForm = document.querySelector('#join-game-form') as HTMLFormElement; - const serverContainer = document.querySelector('#server-container') as HTMLElement; - const canvas = document.querySelector('canvas') as HTMLCanvasElement; - const overlay = document.querySelector('#overlay') as HTMLElement; - const settings = document.querySelector('#settings') as HTMLElement; - const openSettings = document.querySelector('#open-settings') as HTMLElement; - const closeSettings = document.querySelector('#close-settings') as HTMLElement; - const minimize = document.querySelector('#minimize') as HTMLElement; - const maximize = document.querySelector('#maximize') as HTMLElement; - const enableRelativeMovementCheckbox = document.querySelector( - '#enable-relative-movement', - ) as HTMLElement; +const landingUI = document.querySelector('#landing-ui') as HTMLElement; +const joinGameForm = document.querySelector('#join-game-form') as HTMLFormElement; +const serverContainer = document.querySelector('#server-container') as HTMLElement; +const canvas = document.querySelector('canvas') as HTMLCanvasElement; +const overlay = document.querySelector('#overlay') as HTMLElement; +const settings = document.querySelector('#settings') as HTMLElement; +const toggleSettingsButton = document.querySelector( + '#toggle-settings-container', +) as HTMLElement; +const minimize = document.querySelector('#minimize') as HTMLElement; +const maximize = document.querySelector('#maximize') as HTMLElement; +const logoutButton = document.querySelector('#logout') as HTMLElement; +const enableRelativeMovement = document.querySelector( + '#enable-relative-movement', +) as HTMLInputElement; +const enableSounds = document.querySelector('#enable-sounds') as HTMLInputElement; +const enableVibration = document.querySelector('#enable-vibration') as HTMLInputElement; - openSettings.addEventListener('click', () => (settings.style.visibility = 'visible')); - closeSettings.addEventListener('click', () => (settings.style.visibility = 'hidden')); +let isInGame = false; - const background = new LandingPageBackground(canvas); - const joinHandler = new JoinFormHandler(joinGameForm, serverContainer); - handleFullScreen(minimize, maximize); - - let backgroundRenderer = await background.renderer; - let isInGame = false; - let game: Game; - const getFrameData = () => { +const startInsights = (getRenderer: () => Renderer | undefined) => { + const { vendor, renderer } = getInsightsFromRenderer(getRenderer()); + handleInsights( + { + vendor, + renderer, + referrer: document.referrer, + connection: (navigator as any)?.connection?.effectiveType, + devicePixelRatio: devicePixelRatio, + }, + () => { const { fps, renderScale, lightScale, canvasWidth, canvasHeight, - } = getInsightsFromRenderer(isInGame ? game.renderer : backgroundRenderer); + } = getInsightsFromRenderer(getRenderer()); return { isInGame, @@ -75,26 +81,75 @@ const main = async () => { canvasWidth, canvasHeight, }; - }; - const { vendor, renderer } = getInsightsFromRenderer(backgroundRenderer); - handleInsights( - { - vendor, - renderer, - referrer: document.referrer, - connection: (navigator as any)?.connection?.effectiveType, - devicePixelRatio: devicePixelRatio, - }, - getFrameData, - ); + }, + ); +}; - const playerDecision = await joinHandler.getPlayerDecision(); - landingUI.style.display = 'none'; +const toggleSettings = () => + (settings.className = settings.className === 'open' ? '' : 'open'); - background.destroy(); +const applyServerContainerShadows = () => { + const { scrollHeight, clientHeight, scrollTop } = serverContainer; + console.log(scrollHeight, clientHeight, scrollTop); + if (scrollHeight > clientHeight) { + serverContainer.className = 'scroll'; + if (scrollTop === 0) { + serverContainer.className += ' top'; + } else if (scrollTop + clientHeight === scrollHeight) { + serverContainer.className += ' bottom'; + } + } +}; - game = new Game(playerDecision, canvas, overlay); - isInGame = true; +const main = async () => { + try { + let game: Game; + + handleFullScreen(minimize, maximize); + toggleSettingsButton.addEventListener('click', toggleSettings); + + new ResizeObserver(applyServerContainerShadows).observe(serverContainer); + serverContainer.addEventListener('scroll', applyServerContainerShadows); + + OptionsHandler.initialize({ + relativeMovementEnabled: enableRelativeMovement, + soundsEnabled: enableSounds, + vibrationEnabled: enableVibration, + }); + + logoutButton.addEventListener('click', () => { + game.destroy(); + toggleSettings(); + }); + window.onpopstate = () => game.destroy(); + + let backgroundRenderer: Renderer | undefined; + startInsights(() => (isInGame ? game.renderer : backgroundRenderer)); + + for (;;) { + landingUI.style.visibility = 'inherit'; + logoutButton.style.visibility = 'hidden'; + + const background = new LandingPageBackground(canvas); + const joinHandler = new JoinFormHandler(joinGameForm, serverContainer); + + backgroundRenderer = await background.renderer; + + const playerDecision = await joinHandler.getPlayerDecision(); + if (!history.state) { + history.pushState(true, ''); + } + + landingUI.style.visibility = 'hidden'; + + background.destroy(); + + logoutButton.style.visibility = 'inherit'; + game = new Game(playerDecision, canvas, overlay); + isInGame = true; + await game.start(); + isInGame = false; + } } catch (e) { console.error(e); alert(e); diff --git a/frontend/src/scripts/commands/generators/keyboard-listener.ts b/frontend/src/scripts/commands/generators/keyboard-listener.ts index 09f2c70..58fc775 100644 --- a/frontend/src/scripts/commands/generators/keyboard-listener.ts +++ b/frontend/src/scripts/commands/generators/keyboard-listener.ts @@ -1,5 +1,6 @@ import { vec2 } from 'gl-matrix'; import { CommandGenerator, MoveActionCommand } from 'shared'; +import { OptionsHandler } from '../../options-handler'; export class KeyboardListener extends CommandGenerator { private keysDown: Set = new Set(); @@ -34,7 +35,9 @@ export class KeyboardListener extends CommandGenerator { if (vec2.squaredLength(movement) > 0) { vec2.normalize(movement, movement); } - this.sendCommandToSubcribers(new MoveActionCommand(movement, true)); + this.sendCommandToSubcribers( + new MoveActionCommand(movement, OptionsHandler.options.relativeMovementEnabled), + ); } private normalize(key: string): string { diff --git a/frontend/src/scripts/commands/generators/touch-listener.ts b/frontend/src/scripts/commands/generators/touch-listener.ts index 7252046..45bc024 100644 --- a/frontend/src/scripts/commands/generators/touch-listener.ts +++ b/frontend/src/scripts/commands/generators/touch-listener.ts @@ -7,6 +7,7 @@ import { MoveActionCommand, } from 'shared'; import { Game } from '../../game'; +import { OptionsHandler } from '../../options-handler'; export class TouchListener extends CommandGenerator { private previousPosition = vec2.create(); @@ -38,7 +39,9 @@ export class TouchListener extends CommandGenerator { if (vec2.squaredLength(movement) > 0) { vec2.normalize(movement, movement); - this.sendCommandToSubcribers(new MoveActionCommand(movement, false)); + this.sendCommandToSubcribers( + new MoveActionCommand(movement, OptionsHandler.options.relativeMovementEnabled), + ); } this.previousPosition = position; @@ -46,7 +49,12 @@ export class TouchListener extends CommandGenerator { target.addEventListener('touchend', (event: TouchEvent) => { event.preventDefault(); - this.sendCommandToSubcribers(new MoveActionCommand(vec2.create(), false)); + this.sendCommandToSubcribers( + new MoveActionCommand( + vec2.create(), + OptionsHandler.options.relativeMovementEnabled, + ), + ); }); } diff --git a/frontend/src/scripts/game.ts b/frontend/src/scripts/game.ts index 45344c0..face16f 100644 --- a/frontend/src/scripts/game.ts +++ b/frontend/src/scripts/game.ts @@ -29,7 +29,7 @@ import { TouchListener } from './commands/generators/touch-listener'; import { CommandReceiverSocket } from './commands/receivers/command-receiver-socket'; import { PlayerDecision } from './join-form-handler'; import { GameObjectContainer } from './objects/game-object-container'; -import { options } from './options'; +import { OptionsHandler } from './options-handler'; import { BlobShape } from './shapes/blob-shape'; import { PlanetShape } from './shapes/planet-shape'; @@ -48,7 +48,6 @@ export class Game { private readonly canvas: HTMLCanvasElement, private readonly overlay: HTMLElement, ) { - this.start(); const progressBar = document.createElement('div'); progressBar.className = 'planet-progress'; overlay.appendChild(progressBar); @@ -71,7 +70,7 @@ export class Game { const command = deserialize(serialized); if (command instanceof PlayerDiedCommand) { this.deadTimeout = command.timeout; - if (options.vibrationEnabled) { + if (OptionsHandler.options.vibrationEnabled) { navigator.vibrate(150); } this.overlay.appendChild(this.announcmentText); @@ -112,10 +111,10 @@ export class Game { ); } - private async start(): Promise { + public async start(): Promise { const noiseTexture = await renderNoise([256, 256], 2, 1); this.setupCommunication(this.playerDecision.server); - runAnimation( + await runAnimation( this.canvas, [ { @@ -162,6 +161,8 @@ export class Game { }, }, ); + this.socket.close(); + this.overlay.innerHTML = ''; } public displayToWorldCoordinates(p: vec2): vec2 { @@ -179,6 +180,11 @@ export class Game { ); } + private isActive = true; + public destroy() { + this.isActive = false; + } + private announcmentText = document.createElement('h2'); private gameLoop( renderer: Renderer, @@ -196,6 +202,6 @@ export class Game { this.gameObjects.stepObjects(deltaTime); this.gameObjects.drawObjects(this.renderer, this.overlay); - return true; + return this.isActive; } } diff --git a/frontend/src/scripts/objects/player-character-view.ts b/frontend/src/scripts/objects/player-character-view.ts index 028f8d7..64aa55a 100644 --- a/frontend/src/scripts/objects/player-character-view.ts +++ b/frontend/src/scripts/objects/player-character-view.ts @@ -8,7 +8,7 @@ import { CharacterTeam, settings, } from 'shared'; -import { options } from '../options'; +import { OptionsHandler } from '../options-handler'; import { BlobShape } from '../shapes/blob-shape'; import { ViewObject } from './view-object'; @@ -50,7 +50,7 @@ export class PlayerCharacterView extends PlayerCharacterBase implements ViewObje this.healthElement.style.width = this.health + '%'; if (this.previousHealth > this.health) { this.previousHealth = this.health; - if (options.vibrationEnabled) { + if (OptionsHandler.options.vibrationEnabled) { navigator.vibrate(50); } } diff --git a/frontend/src/scripts/options-handler.ts b/frontend/src/scripts/options-handler.ts new file mode 100644 index 0000000..1806322 --- /dev/null +++ b/frontend/src/scripts/options-handler.ts @@ -0,0 +1,51 @@ +interface Options { + vibrationEnabled: boolean; + soundsEnabled: boolean; + relativeMovementEnabled: boolean; +} + +export abstract class OptionsHandler { + private static initialized = false; + private static _options: Options = { + vibrationEnabled: true, + soundsEnabled: true, + relativeMovementEnabled: false, + }; + + public static initialize( + inputElements: { [k in Extract]: HTMLInputElement }, + ) { + if (localStorage.getItem('options')) { + const stored: Partial | null = JSON.parse( + localStorage.getItem('options')!, + ); + this._options = { + ...this._options, + ...stored, + }; + } + + for (const k in inputElements) { + const element = inputElements[k as keyof Options]; + element.checked = OptionsHandler._options[k as keyof Options]; + element.addEventListener('change', function () { + OptionsHandler._options[k as keyof Options] = this.checked; + OptionsHandler.save(); + }); + } + + this.initialized = true; + } + + private static save() { + localStorage.setItem('options', JSON.stringify(this._options)); + } + + public static get options(): Options { + if (!this.initialized) { + throw new Error('Uninitialized'); + } + + return this._options; + } +} diff --git a/frontend/src/scripts/options.ts b/frontend/src/scripts/options.ts deleted file mode 100644 index 7c203b1..0000000 --- a/frontend/src/scripts/options.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const options = { - vibrationEnabled: true, -}; diff --git a/frontend/src/styles/button.scss b/frontend/src/styles/button.scss new file mode 100644 index 0000000..faad3bc --- /dev/null +++ b/frontend/src/styles/button.scss @@ -0,0 +1,26 @@ +@import './vars.scss'; + +button { + border: none; + background: none; + font-size: 2rem; + font-family: 'Comfortaa', sans-serif; + cursor: pointer; + display: block; + margin: auto; + + $ascend: 6px; + padding: $medium-padding 0 0 0; + margin-bottom: $ascend; + transition: transform $animation-time, padding-bottom $animation-time, + margin-bottom $animation-time; + + &:hover, + &:focus { + outline: none; + color: $accent; + transform: translateY(-$ascend); + padding-bottom: $ascend; + margin-bottom: 0; + } +} diff --git a/frontend/src/styles/form.scss b/frontend/src/styles/form.scss index 154d393..2bf153f 100644 --- a/frontend/src/styles/form.scss +++ b/frontend/src/styles/form.scss @@ -96,7 +96,7 @@ form { padding: $small-padding; border: $border; cursor: pointer; - margin: $border-width-focused - $border-width; + margin: $border-width-focused - $border-width $small-padding / 2; } &:focus { @@ -107,27 +107,8 @@ form { &:checked + label { border-color: $accent; border-width: $border-width-focused; - margin: 0; + margin-right: 0 $small-padding / 2; } } } } - -button { - border: none; - background: none; - font-size: 2rem; - font-family: 'Comfortaa', sans-serif; - cursor: pointer; - display: block; - margin: auto; - padding-top: $medium-padding; - transition: transform $animation-time; - - &:hover, - &:focus { - outline: none; - color: $accent; - transform: translateY(-8px); - } -} diff --git a/frontend/src/styles/main.scss b/frontend/src/styles/main.scss index d0a3f2b..c5d7fc9 100644 --- a/frontend/src/styles/main.scss +++ b/frontend/src/styles/main.scss @@ -1,8 +1,11 @@ @import './vars.scss'; +@import './button.scss'; @import './form.scss'; @import './mixins.scss'; +@import './settings.scss'; @import url('https://fonts.googleapis.com/css2?family=Comfortaa:wght@300&family=Open+Sans&display=swap'); + * { margin: 0; box-sizing: border-box; @@ -22,8 +25,11 @@ html { } } -h1, -h2 { +img { + user-select: none; +} + +h1 { &, * { font-family: 'Comfortaa', sans-serif; @@ -31,6 +37,10 @@ h2 { font-size: 6rem; text-align: center; padding-bottom: $medium-padding; + + @media (max-height: $height-breakpoint) { + display: none; + } } h2 { @@ -131,30 +141,29 @@ body { } } - #open-settings { - position: absolute; - top: 0; - right: 0; + #server-container { + max-height: 30vh; + overflow-y: auto; - animation: spin 32s linear infinite; - @keyframes spin { - 100% { - transform: rotate(360deg); - } + &::-webkit-scrollbar-track, + &::-webkit-scrollbar { + background-color: transparent; + width: 2px; + } + &::-webkit-scrollbar-thumb { + background-color: $accent; + border-radius: $border-radius; } - } - .icon { - box-sizing: content-box; - - user-select: none; - cursor: pointer; - - padding: $medium-padding; - @include square(48px); - @media (max-width: $breakpoint) { - @include square(32px); - padding: $small-padding; + &.scroll { + box-shadow: inset 0 -8px 8px -8px rgba(0, 0, 0, 0.4), + inset 0 8px 8px -8px rgba(0, 0, 0, 0.4); + &.top { + box-shadow: inset 0 -8px 8px -8px rgba(0, 0, 0, 0.4); + } + &.bottom { + box-shadow: inset 0 8px 8px -8px rgba(0, 0, 0, 0.4); + } } } @@ -162,17 +171,21 @@ body { position: absolute; bottom: 0; left: 0; - } - #settings { - @include background; - position: absolute; - left: 0; - right: 0; - top: 0; - bottom: 0; + box-sizing: content-box; - padding: $large-padding; - visibility: hidden; + user-select: none; + cursor: pointer; + + padding: $medium-padding; + @include square($large-icon); + @media (max-width: $breakpoint) { + @include square($small-icon); + padding: $small-padding; + } + + &:not(:first-child) { + visibility: hidden; + } } } diff --git a/frontend/src/styles/mixins.scss b/frontend/src/styles/mixins.scss index 1afa563..d845573 100644 --- a/frontend/src/styles/mixins.scss +++ b/frontend/src/styles/mixins.scss @@ -6,6 +6,6 @@ @mixin background { backdrop-filter: blur(24px); @supports not (backdrop-filter: blur(24px)) { - background-color: rgba(0, 0, 0, 0.15); + background-color: rgba(0, 0, 0, 0.5); } } diff --git a/frontend/src/styles/settings.scss b/frontend/src/styles/settings.scss new file mode 100644 index 0000000..abb02b0 --- /dev/null +++ b/frontend/src/styles/settings.scss @@ -0,0 +1,122 @@ +@import './vars.scss'; +@import './mixins.scss'; + +#toggle-settings-container, +#settings-container { + position: absolute; + display: flex; + justify-content: center; + + top: 0; + right: 0; +} + +#toggle-settings-container { + padding: $medium-padding; + cursor: pointer; + + #toggle-settings { + @include square($large-icon); + @media (max-width: $breakpoint) { + @include square($small-icon); + } + + animation: spin 32s linear infinite; + @keyframes spin { + 100% { + transform: rotate(360deg); + } + } + } +} + +#settings-container { + top: $medium-padding + $large-icon + $small-padding; + @media (max-width: $breakpoint) { + top: 0; + right: $medium-padding + $small-icon + $small-padding; + } + overflow: hidden; +} + +#settings { + display: flex; + flex-direction: column; + padding: 0 $medium-padding $medium-padding $medium-padding; + + transform: translateY(-100%); + @media (max-width: $breakpoint) { + flex-direction: row-reverse; + transform: translateX(100%); + padding: $medium-padding 0 $medium-padding $medium-padding; + } + + opacity: 0; + transition: transform $animation-time, opacity $animation-time; + + &.open { + transform: none; + opacity: 1; + } + + img { + cursor: pointer; + transition: opacity $animation-time; + margin-bottom: $small-padding; + @include square($large-icon); + @media (max-width: $breakpoint) { + @include square($small-icon); + margin-bottom: 0; + margin-left: $small-padding; + } + } + + label { + position: relative; + } + + input[type='checkbox'] { + width: 0; + height: 0; + appearance: none; + cursor: pointer; + + &:not(:checked) + img { + opacity: 0.4; + } + + &:focus { + outline: none; + } + + &:after { + content: ' '; + background: white; + position: absolute; + + $height: 4px; + width: $height; + top: $height / 2; + + right: 0; + transform-origin: top right; + border-radius: 100px; + height: 0; + transform: rotate(45deg) translateY(17%); + transition: height $animation-time; + + @media (max-width: $breakpoint) { + $height: 2px; + width: $height; + top: $height / 2; + } + } + + &:not(:checked):after { + height: $large-icon; + @media (max-width: $breakpoint) { + height: $small-icon; + } + } + } +} diff --git a/frontend/src/styles/vars.scss b/frontend/src/styles/vars.scss index 7d0be82..7c583fb 100644 --- a/frontend/src/styles/vars.scss +++ b/frontend/src/styles/vars.scss @@ -8,5 +8,8 @@ $small-padding: 12px; $medium-padding: 24px; $large-padding: 64px; $border-radius: 15px; -$animation-time: 200ms; +$animation-time: 200ms ease; $breakpoint: 700px; +$height-breakpoint: 500px; +$large-icon: 48px; +$small-icon: 32px; diff --git a/frontend/static/circle.svg b/frontend/static/circle.svg new file mode 100644 index 0000000..f4fb483 --- /dev/null +++ b/frontend/static/circle.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/static/logout.svg b/frontend/static/logout.svg new file mode 100644 index 0000000..ab168e8 --- /dev/null +++ b/frontend/static/logout.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/frontend/static/vibrate.svg b/frontend/static/vibrate.svg new file mode 100644 index 0000000..ce6d594 --- /dev/null +++ b/frontend/static/vibrate.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/frontend/static/volume.svg b/frontend/static/volume.svg new file mode 100644 index 0000000..dedc4d8 --- /dev/null +++ b/frontend/static/volume.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file From f1a2131540bb37e2642f0c6d5e3d5ad1175b23f8 Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Thu, 22 Oct 2020 16:38:52 +0200 Subject: [PATCH 023/101] Upgrade webpack config and inline svg-s --- .dockerignore | 3 + Dockerfile | 11 +- backend/package.json | 17 +- backend/tsconfig.json | 4 +- frontend/package-lock.json | 34321 ++++++++++++++++++++++++++ frontend/package.json | 37 +- frontend/src/index.html | 14 +- frontend/src/index.ts | 6 +- frontend/src/{styles => }/main.scss | 13 +- frontend/src/styles/settings.scss | 89 +- frontend/tsconfig.json | 2 +- frontend/webpack.config.js | 129 +- package.json | 7 +- shared/package.json | 2 +- 14 files changed, 34437 insertions(+), 218 deletions(-) create mode 100644 frontend/package-lock.json rename frontend/src/{styles => }/main.scss (93%) diff --git a/.dockerignore b/.dockerignore index e10427c..c6f8e04 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,3 +1,6 @@ .dockerignore Dockerfile **/node_modules +node_modules +**/package-lock.json +package-lock.json diff --git a/Dockerfile b/Dockerfile index 420a749..f4974ae 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,20 @@ FROM node:14.13.0-alpine3.10 as build +RUN npm install -g npm@7 +WORKDIR /app COPY . . -RUN npm i -g concurrently -RUN yarn && yarn run build + +RUN npm install --legacy-peer-deps +RUN npm run build FROM node:14.13.0-alpine3.10 +WORKDIR /app + ENV NODE_ENV=production COPY backend/package.json . -RUN npm i --production +RUN npm install --production COPY --from=build backend/dist/main.js main.js diff --git a/backend/package.json b/backend/package.json index 9a934cf..e43041c 100644 --- a/backend/package.json +++ b/backend/package.json @@ -6,7 +6,7 @@ "author": "András Schmelczer (https://schmelczer.dev/)", "main": "dist/main.js", "bin": { - "declared-server": "./dist/main.js" + "declared-server": "dist/main.js" }, "scripts": { "build": "npx webpack --mode production", @@ -17,15 +17,15 @@ "@types/config": "0.0.36", "cors": "^2.8.5", "express": "^4.17.1", + "gl-matrix": "^3.3.0", "minimist": "^1.2.5", "socket.io": "^2.3.0", - "uws": "^10.148.1", - "gl-matrix": "^3.3.0" + "uws": "^10.148.1" }, "devDependencies": { - "@types/minimist": "^1.2.0", "@types/cors": "^2.8.7", "@types/express": "^4.17.8", + "@types/minimist": "^1.2.0", "@types/node": "^14.11.2", "@types/socket.io": "^2.1.11", "@typescript-eslint/eslint-plugin": "^3.9.1", @@ -39,17 +39,16 @@ "eslint-plugin-prettier": "^3.1.4", "eslint-plugin-unused-imports": "^0.1.3", "file-loader": "^6.1.0", - "ts-loader": "^8.0.3", "nodemon": "^2.0.4", - "webpack-node-externals": "^2.5.2", "prettier": "^2.0.5", "raw-loader": "^4.0.1", "resolve-url-loader": "^3.1.1", - "shared": "0.0.0", "terser-webpack-plugin": "^2.3.5", + "ts-loader": "^8.0.3", "typescript": "^4.0.3", "webpack": "^4.43.0", - "webpack-cli": "^3.3.11", - "webpack-dev-server": "^3.10.3" + "webpack-cli": "^3.3.12", + "webpack-dev-server": "^3.10.3", + "webpack-node-externals": "^2.5.2" } } diff --git a/backend/tsconfig.json b/backend/tsconfig.json index c883490..f545ff5 100644 --- a/backend/tsconfig.json +++ b/backend/tsconfig.json @@ -1,9 +1,7 @@ { "compilerOptions": { "outDir": "dist", - "sourceMap": true, - "declaration": true, - "declarationMap": true, + "skipLibCheck": true, "target": "es6", "esModuleInterop": true, "strict": true, diff --git a/frontend/package-lock.json b/frontend/package-lock.json new file mode 100644 index 0000000..f6c8e9d --- /dev/null +++ b/frontend/package-lock.json @@ -0,0 +1,34321 @@ +{ + "name": "decla.red-frontend", + "version": "0.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "decla.red-frontend", + "version": "0.0.0", + "devDependencies": { + "@types/socket.io-client": "^1.4.34", + "@typescript-eslint/eslint-plugin": "^3.9.1", + "@typescript-eslint/parser": "^3.9.1", + "clean-webpack-plugin": "^3.0.0", + "common-config-webpack-plugin": "^2.0.1", + "eslint": "^7.2.0", + "eslint-config-prettier": "^6.11.0", + "eslint-plugin-import": "^2.21.2", + "eslint-plugin-json-format": "^2.0.1", + "eslint-plugin-prettier": "^3.1.4", + "eslint-plugin-unused-imports": "^0.1.3", + "firebase": "^7.22.0", + "gl-matrix": "^3.3.0", + "html-webpack-inline-svg-plugin": "^2.3.0", + "html-webpack-plugin": "^4.5.0", + "image-config-webpack-plugin": "^2.0.0", + "prettier": "^2.0.5", + "resize-observer-polyfill": "^1.5.1", + "resolve-url-loader": "^3.1.1", + "scss-config-webpack-plugin": "^2.0.0", + "sdf-2d": "^0.6.0", + "socket.io-client": "^2.3.1", + "source-map-loader": "^1.1.1", + "ts-config-webpack-plugin": "^2.0.0", + "typescript": "^4.0.3", + "webpack": "^4.43.0", + "webpack-cli": "^3.3.11", + "webpack-dev-server": "^3.11.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.1.tgz", + "integrity": "sha512-725AQupWJZ8ba0jbKceeFblZTY90McUBWMwHhkFQ9q1zKPJ95GUktljFcgcsIVwRnTnRKlcYzfiNImg5G9m6ZQ==", + "dev": true + }, + "node_modules/@babel/core": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", + "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@babel/core/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.1.tgz", + "integrity": "sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/generator/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helper-builder-react-jsx": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz", + "integrity": "sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helper-builder-react-jsx-experimental": { + "version": "7.12.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.4.tgz", + "integrity": "sha512-AjEa0jrQqNk7eDQOo0pTfUOwQBMF+xVqrausQwT9/rTKy0g04ggFNaJpaE09IQMn9yExluigWMJcj0WC7bq+Og==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-module-imports": "^7.12.1", + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.1.tgz", + "integrity": "sha512-jtBEif7jsPwP27GPHs06v4WBV0KrE8a/P7n0N0sSvHn2hwUCYnolP/CLmz51IzAW4NlN+HuoBtb9QcwnRo9F/g==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.12.1", + "@babel/helper-validator-option": "^7.12.1", + "browserslist": "^4.12.0", + "semver": "^5.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", + "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-map": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "dependencies": { + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", + "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz", + "integrity": "sha512-ZeC1TlMSvikvJNy1v/wPIazCu3NdOwgYZLIkmIyAsGhqkNpiDoQQRmaCK8YP4Pq3GPTLPV9WXaPCJKvx06JxKA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "node_modules/@babel/helper-regex": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", + "dev": true, + "dependencies": { + "lodash": "^4.17.19" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.1.tgz", + "integrity": "sha512-zJjTvtNJnCFsCXVi5rUInstLd/EIVNmIKA1Q9ynESmMBWPWd+7sdR+G4/wdu+Mppfep0XLyG2m7EBPvjCeFyrw==", + "dev": true, + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.11.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", + "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==", + "dev": true + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helpers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.1.tgz", + "integrity": "sha512-9JoDSBGoWtmbay98efmT2+mySkwjzeFeAL9BuWNoVQpkPFQF8SIIFUfY5os9u8wVzglzoiPRSW7cuJmBDUt43g==", + "dev": true, + "dependencies": { + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.3.tgz", + "integrity": "sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.1.tgz", + "integrity": "sha512-MR7Ok+Af3OhNTCxYVjJZHS0t97ydnJZt/DbR4WISO39iDnhiD8XHrY12xuSJ90FFEGjir0Fzyyn7g/zY6hxbxA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", + "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", + "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4", + "globals": "^11.1.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz", + "integrity": "sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.1.tgz", + "integrity": "sha512-RmKejwnT0T0QzQUzcbP5p1VWlpnP8QHtdhEtLG55ZDQnJNalbF3eeDyu3dnGKvGzFIQiBzFhBYTwvv435p9Xpw==", + "dev": true, + "dependencies": { + "@babel/helper-builder-react-jsx": "^7.10.4", + "@babel/helper-builder-react-jsx-experimental": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.1.tgz", + "integrity": "sha512-IilcGWdN1yNgEGOrB96jbTplRh+V2Pz1EoEwsKsHfX1a/L40cUYuD71Zepa7C+ujv7kJIxnDftWeZbKNEqZjCQ==", + "dev": true, + "dependencies": { + "@babel/helper-builder-react-jsx-experimental": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.1.tgz", + "integrity": "sha512-FbpL0ieNWiiBB5tCldX17EtXgmzeEZjFrix72rQYeq9X6nUK38HCaxexzVQrZWXanxKJPKVVIU37gFjEQYkPkA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.1.tgz", + "integrity": "sha512-keQ5kBfjJNRc6zZN1/nVHCd6LLIHq4aUKcVnvE/2l+ZZROSbqoiGFRtT5t3Is89XJxBQaP7NLZX2jgGHdZvvFQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz", + "integrity": "sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", + "dev": true, + "dependencies": { + "regenerator-transform": "^0.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", + "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", + "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", + "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.12.1", + "@babel/helper-compilation-targets": "^7.12.1", + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.1", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.1", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.12.1", + "core-js-compat": "^3.6.2", + "semver": "^5.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.12.1.tgz", + "integrity": "sha512-euCExymHCi0qB9u5fKw7rvlw7AZSjw/NaB9h7EkdTt5+yHRrXdiRTh7fkG3uBPpJg82CqLfp1LHLqWGSCrab+g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-transform-react-display-name": "^7.12.1", + "@babel/plugin-transform-react-jsx": "^7.12.1", + "@babel/plugin-transform-react-jsx-development": "^7.12.1", + "@babel/plugin-transform-react-jsx-self": "^7.12.1", + "@babel/plugin-transform-react-jsx-source": "^7.12.1", + "@babel/plugin-transform-react-pure-annotations": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz", + "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/traverse": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.1.tgz", + "integrity": "sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.1", + "@babel/types": "^7.12.1", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.1.3.tgz", + "integrity": "sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@firebase/analytics": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.6.0.tgz", + "integrity": "sha512-6qYEOPUVYrMhqvJ46Z5Uf1S4uULd6d7vGpMP5Qz+u8kIWuOQGcPdJKQap+Hla6Rq164or9gC2HRXuYXKlgWfpw==", + "dev": true, + "dependencies": { + "@firebase/analytics-types": "0.4.0", + "@firebase/component": "0.1.19", + "@firebase/installations": "0.4.17", + "@firebase/logger": "0.2.6", + "@firebase/util": "0.3.2", + "tslib": "^1.11.1" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/analytics-types": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.4.0.tgz", + "integrity": "sha512-Jj2xW+8+8XPfWGkv9HPv/uR+Qrmq37NPYT352wf7MvE9LrstpLVmFg3LqG6MCRr5miLAom5sen2gZ+iOhVDeRA==", + "dev": true + }, + "node_modules/@firebase/app": { + "version": "0.6.11", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.6.11.tgz", + "integrity": "sha512-FH++PaoyTzfTAVuJ0gITNYEIcjT5G+D0671La27MU8Vvr6MTko+5YUZ4xS9QItyotSeRF4rMJ1KR7G8LSyySiA==", + "dev": true, + "dependencies": { + "@firebase/app-types": "0.6.1", + "@firebase/component": "0.1.19", + "@firebase/logger": "0.2.6", + "@firebase/util": "0.3.2", + "dom-storage": "2.1.0", + "tslib": "^1.11.1", + "xmlhttprequest": "1.8.0" + } + }, + "node_modules/@firebase/app-types": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.6.1.tgz", + "integrity": "sha512-L/ZnJRAq7F++utfuoTKX4CLBG5YR7tFO3PLzG1/oXXKEezJ0kRL3CMRoueBEmTCzVb/6SIs2Qlaw++uDgi5Xyg==", + "dev": true + }, + "node_modules/@firebase/auth": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.15.0.tgz", + "integrity": "sha512-IFuzhxS+HtOQl7+SZ/Mhaghy/zTU7CENsJFWbC16tv2wfLZbayKF5jYGdAU3VFLehgC8KjlcIWd10akc3XivfQ==", + "dev": true, + "dependencies": { + "@firebase/auth-types": "0.10.1" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/auth-interop-types": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.5.tgz", + "integrity": "sha512-88h74TMQ6wXChPA6h9Q3E1Jg6TkTHep2+k63OWg3s0ozyGVMeY+TTOti7PFPzq5RhszQPQOoCi59es4MaRvgCw==", + "dev": true, + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "0.x" + } + }, + "node_modules/@firebase/auth-types": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.10.1.tgz", + "integrity": "sha512-/+gBHb1O9x/YlG7inXfxff/6X3BPZt4zgBv4kql6HEmdzNQCodIRlEYnI+/da+lN+dha7PjaFH7C7ewMmfV7rw==", + "dev": true, + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "0.x" + } + }, + "node_modules/@firebase/component": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.1.19.tgz", + "integrity": "sha512-L0S3g8eqaerg8y0zox3oOHSTwn/FE8RbcRHiurnbESvDViZtP5S5WnhuAPd7FnFxa8ElWK0z1Tr3ikzWDv1xdQ==", + "dev": true, + "dependencies": { + "@firebase/util": "0.3.2", + "tslib": "^1.11.1" + } + }, + "node_modules/@firebase/database": { + "version": "0.6.13", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.6.13.tgz", + "integrity": "sha512-NommVkAPzU7CKd1gyehmi3lz0K78q0KOfiex7Nfy7MBMwknLm7oNqKovXSgQV1PCLvKXvvAplDSFhDhzIf9obA==", + "dev": true, + "dependencies": { + "@firebase/auth-interop-types": "0.1.5", + "@firebase/component": "0.1.19", + "@firebase/database-types": "0.5.2", + "@firebase/logger": "0.2.6", + "@firebase/util": "0.3.2", + "faye-websocket": "0.11.3", + "tslib": "^1.11.1" + } + }, + "node_modules/@firebase/database-types": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.5.2.tgz", + "integrity": "sha512-ap2WQOS3LKmGuVFKUghFft7RxXTyZTDr0Xd8y2aqmWsbJVjgozi0huL/EUMgTjGFrATAjcf2A7aNs8AKKZ2a8g==", + "dev": true, + "dependencies": { + "@firebase/app-types": "0.6.1" + } + }, + "node_modules/@firebase/firestore": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-1.18.0.tgz", + "integrity": "sha512-maMq4ltkrwjDRusR2nt0qS4wldHQMp+0IDSfXIjC+SNmjnWY/t/+Skn9U3Po+dB38xpz3i7nsKbs+8utpDnPSw==", + "dev": true, + "dependencies": { + "@firebase/component": "0.1.19", + "@firebase/firestore-types": "1.14.0", + "@firebase/logger": "0.2.6", + "@firebase/util": "0.3.2", + "@firebase/webchannel-wrapper": "0.4.0", + "@grpc/grpc-js": "^1.0.0", + "@grpc/proto-loader": "^0.5.0", + "node-fetch": "2.6.1", + "tslib": "^1.11.1" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/firestore-types": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-1.14.0.tgz", + "integrity": "sha512-WF8IBwHzZDhwyOgQnmB0pheVrLNP78A8PGxk1nxb/Nrgh1amo4/zYvFMGgSsTeaQK37xMYS/g7eS948te/dJxw==", + "dev": true, + "peerDependencies": { + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/functions": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.5.1.tgz", + "integrity": "sha512-yyjPZXXvzFPjkGRSqFVS5Hc2Y7Y48GyyMH+M3i7hLGe69r/59w6wzgXKqTiSYmyE1pxfjxU4a1YqBDHNkQkrYQ==", + "dev": true, + "dependencies": { + "@firebase/component": "0.1.19", + "@firebase/functions-types": "0.3.17", + "@firebase/messaging-types": "0.5.0", + "node-fetch": "2.6.1", + "tslib": "^1.11.1" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/functions-types": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.3.17.tgz", + "integrity": "sha512-DGR4i3VI55KnYk4IxrIw7+VG7Q3gA65azHnZxo98Il8IvYLr2UTBlSh72dTLlDf25NW51HqvJgYJDKvSaAeyHQ==", + "dev": true + }, + "node_modules/@firebase/installations": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.4.17.tgz", + "integrity": "sha512-AE/TyzIpwkC4UayRJD419xTqZkKzxwk0FLht3Dci8WI2OEKHSwoZG9xv4hOBZebe+fDzoV2EzfatQY8c/6Avig==", + "dev": true, + "dependencies": { + "@firebase/component": "0.1.19", + "@firebase/installations-types": "0.3.4", + "@firebase/util": "0.3.2", + "idb": "3.0.2", + "tslib": "^1.11.1" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/installations-types": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.3.4.tgz", + "integrity": "sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q==", + "dev": true, + "peerDependencies": { + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.2.6.tgz", + "integrity": "sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw==", + "dev": true + }, + "node_modules/@firebase/messaging": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.7.1.tgz", + "integrity": "sha512-iev/ST9v0xd/8YpGYrZtDcqdD9J6ZWzSuceRn8EKy5vIgQvW/rk2eTQc8axzvDpQ36ZfphMYuhW6XuNrR3Pd2Q==", + "dev": true, + "dependencies": { + "@firebase/component": "0.1.19", + "@firebase/installations": "0.4.17", + "@firebase/messaging-types": "0.5.0", + "@firebase/util": "0.3.2", + "idb": "3.0.2", + "tslib": "^1.11.1" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/messaging-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/messaging-types/-/messaging-types-0.5.0.tgz", + "integrity": "sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg==", + "dev": true, + "peerDependencies": { + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/performance": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.4.2.tgz", + "integrity": "sha512-irHTCVWJ/sxJo0QHg+yQifBeVu8ZJPihiTqYzBUz/0AGc51YSt49FZwqSfknvCN2+OfHaazz/ARVBn87g7Ex8g==", + "dev": true, + "dependencies": { + "@firebase/component": "0.1.19", + "@firebase/installations": "0.4.17", + "@firebase/logger": "0.2.6", + "@firebase/performance-types": "0.0.13", + "@firebase/util": "0.3.2", + "tslib": "^1.11.1" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/performance-types": { + "version": "0.0.13", + "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.0.13.tgz", + "integrity": "sha512-6fZfIGjQpwo9S5OzMpPyqgYAUZcFzZxHFqOyNtorDIgNXq33nlldTL/vtaUZA8iT9TT5cJlCrF/jthKU7X21EA==", + "dev": true + }, + "node_modules/@firebase/polyfill": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@firebase/polyfill/-/polyfill-0.3.36.tgz", + "integrity": "sha512-zMM9oSJgY6cT2jx3Ce9LYqb0eIpDE52meIzd/oe/y70F+v9u1LDqk5kUF5mf16zovGBWMNFmgzlsh6Wj0OsFtg==", + "dev": true, + "dependencies": { + "core-js": "3.6.5", + "promise-polyfill": "8.1.3", + "whatwg-fetch": "2.0.4" + } + }, + "node_modules/@firebase/remote-config": { + "version": "0.1.28", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.1.28.tgz", + "integrity": "sha512-4zSdyxpt94jAnFhO8toNjG8oMKBD+xTuBIcK+Nw8BdQWeJhEamgXlupdBARUk1uf3AvYICngHH32+Si/dMVTbw==", + "dev": true, + "dependencies": { + "@firebase/component": "0.1.19", + "@firebase/installations": "0.4.17", + "@firebase/logger": "0.2.6", + "@firebase/remote-config-types": "0.1.9", + "@firebase/util": "0.3.2", + "tslib": "^1.11.1" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/remote-config-types": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.1.9.tgz", + "integrity": "sha512-G96qnF3RYGbZsTRut7NBX0sxyczxt1uyCgXQuH/eAfUCngxjEGcZQnBdy6mvSdqdJh5mC31rWPO4v9/s7HwtzA==", + "dev": true + }, + "node_modules/@firebase/storage": { + "version": "0.3.43", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.3.43.tgz", + "integrity": "sha512-Jp54jcuyimLxPhZHFVAhNbQmgTu3Sda7vXjXrNpPEhlvvMSq4yuZBR6RrZxe/OrNVprLHh/6lTCjwjOVSo3bWA==", + "dev": true, + "dependencies": { + "@firebase/component": "0.1.19", + "@firebase/storage-types": "0.3.13", + "@firebase/util": "0.3.2", + "tslib": "^1.11.1" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/storage-types": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.3.13.tgz", + "integrity": "sha512-pL7b8d5kMNCCL0w9hF7pr16POyKkb3imOW7w0qYrhBnbyJTdVxMWZhb0HxCFyQWC0w3EiIFFmxoz8NTFZDEFog==", + "dev": true, + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "0.x" + } + }, + "node_modules/@firebase/util": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.3.2.tgz", + "integrity": "sha512-Dqs00++c8rwKky6KCKLLY2T1qYO4Q+X5t+lF7DInXDNF4ae1Oau35bkD+OpJ9u7l1pEv7KHowP6CUKuySCOc8g==", + "dev": true, + "dependencies": { + "tslib": "^1.11.1" + } + }, + "node_modules/@firebase/webchannel-wrapper": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.4.0.tgz", + "integrity": "sha512-8cUA/mg0S+BxIZ72TdZRsXKBP5n5uRcE3k29TZhZw6oIiHBt9JA7CTb/4pE1uKtE/q5NeTY2tBDcagoZ+1zjXQ==", + "dev": true + }, + "node_modules/@grpc/grpc-js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.1.7.tgz", + "integrity": "sha512-EuxMstI0u778dp0nk6Fe3gHXYPeV6FYsWOe0/QFwxv1NQ6bc5Wl/0Yxa4xl9uBlKElL6AIxuASmSfu7KEJhqiw==", + "dev": true, + "dependencies": { + "@grpc/proto-loader": "^0.6.0-pre14", + "@types/node": "^12.12.47", + "google-auth-library": "^6.0.0", + "semver": "^6.2.0" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + } + }, + "node_modules/@grpc/grpc-js/node_modules/@grpc/proto-loader": { + "version": "0.6.0-pre9", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.0-pre9.tgz", + "integrity": "sha512-oM+LjpEjNzW5pNJjt4/hq1HYayNeQT+eGrOPABJnYHv7TyNPDNzkQ76rDYZF86X5swJOa4EujEMzQ9iiTdPgww==", + "dev": true, + "dependencies": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^6.9.0", + "yargs": "^15.3.1" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@grpc/grpc-js/node_modules/@types/node": { + "version": "12.19.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.0.tgz", + "integrity": "sha512-4BVAE9yp5DU3ISqBInsaRp9J474HWNaNVs8eZ1Far3dI1MwS3Wk0EvBRMM4xBh3Oz+c05hUgJmcbtAVmG8bv7w==", + "dev": true + }, + "node_modules/@grpc/grpc-js/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/@grpc/grpc-js/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@grpc/grpc-js/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@grpc/grpc-js/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@grpc/grpc-js/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@grpc/grpc-js/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@grpc/grpc-js/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@grpc/grpc-js/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@grpc/grpc-js/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@grpc/grpc-js/node_modules/string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@grpc/grpc-js/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@grpc/grpc-js/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@grpc/grpc-js/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@grpc/proto-loader": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.5.5.tgz", + "integrity": "sha512-WwN9jVNdHRQoOBo9FDH7qU+mgfjPc8GygPYms3M+y3fbQLfnCe/Kv/E01t7JRgnrsOHH8euvSbed3mIalXhwqQ==", + "dev": true, + "dependencies": { + "lodash.camelcase": "^4.3.0", + "protobufjs": "^6.8.6" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=", + "dev": true + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "dev": true + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "dev": true + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=", + "dev": true + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "dev": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=", + "dev": true + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=", + "dev": true + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=", + "dev": true + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=", + "dev": true + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=", + "dev": true + }, + "node_modules/@types/anymatch": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", + "integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==", + "dev": true + }, + "node_modules/@types/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", + "dev": true + }, + "node_modules/@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "dev": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", + "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, + "node_modules/@types/long": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", + "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "14.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.2.tgz", + "integrity": "sha512-jeYJU2kl7hL9U5xuI/BhKPZ4vqGM/OmK6whiFAXVhlstzZhVamWhDSmHyGLIp+RVyuF9/d0dqr2P85aFj4BvJg==", + "dev": true + }, + "node_modules/@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", + "dev": true + }, + "node_modules/@types/socket.io-client": { + "version": "1.4.34", + "resolved": "https://registry.npmjs.org/@types/socket.io-client/-/socket.io-client-1.4.34.tgz", + "integrity": "sha512-Lzia5OTQFJZJ5R4HsEEldywiiqT9+W2rDbyHJiiTGqOcju89sCsQ8aUXDljY6Ls33wKZZGC0bfMhr/VpOyjtXg==", + "dev": true + }, + "node_modules/@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "dev": true + }, + "node_modules/@types/tapable": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.6.tgz", + "integrity": "sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==", + "dev": true + }, + "node_modules/@types/uglify-js": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.11.0.tgz", + "integrity": "sha512-I0Yd8TUELTbgRHq2K65j8rnDPAzAP+DiaF/syLem7yXwYLsHZhPd+AM2iXsWmf9P2F2NlFCgl5erZPQx9IbM9Q==", + "dev": true, + "dependencies": { + "source-map": "^0.6.1" + } + }, + "node_modules/@types/webpack": { + "version": "4.41.23", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.23.tgz", + "integrity": "sha512-ojA4CupZg8RCzVJLugWlvqrHpT59GWhqFxbinlsnvk10MjQCWB+ot7XDACctbWhnhtdhYK7+HOH1JxkVLiZhMg==", + "dev": true, + "dependencies": { + "@types/anymatch": "*", + "@types/node": "*", + "@types/tapable": "*", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "source-map": "^0.6.0" + } + }, + "node_modules/@types/webpack-sources": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.0.0.tgz", + "integrity": "sha512-a5kPx98CNFRKQ+wqawroFunvFqv7GHm/3KOI52NY9xWADgc8smu4R6prt4EU/M4QfVjvgBkMqU4fBhw3QfMVkg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" + } + }, + "node_modules/@types/webpack-sources/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.10.1.tgz", + "integrity": "sha512-PQg0emRtzZFWq6PxBcdxRH3QIQiyFO3WCVpRL3fgj5oQS3CDs3AeAKfv4DxNhzn8ITdNJGJ4D3Qw8eAJf3lXeQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/experimental-utils": "3.10.1", + "debug": "^4.1.1", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^3.0.0", + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz", + "integrity": "sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/types": "3.10.1", + "@typescript-eslint/typescript-estree": "3.10.1", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.10.1.tgz", + "integrity": "sha512-Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw==", + "dev": true, + "dependencies": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "3.10.1", + "@typescript-eslint/types": "3.10.1", + "@typescript-eslint/typescript-estree": "3.10.1", + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz", + "integrity": "sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==", + "dev": true, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz", + "integrity": "sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "3.10.1", + "@typescript-eslint/visitor-keys": "3.10.1", + "debug": "^4.1.1", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz", + "integrity": "sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "dev": true, + "dependencies": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz", + "integrity": "sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/adjust-sourcemap-loader/node_modules/json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "node_modules/agent-base": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.1.tgz", + "integrity": "sha512-01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true, + "peerDependencies": { + "ajv": ">=5.0.0" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "node_modules/amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true, + "engines": { + "node": ">=0.4.2" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "dependencies": { + "type-fest": "^0.11.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/are-we-there-yet/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/are-we-there-yet/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/arity-n": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz", + "integrity": "sha1-2edrEXM+CFacCEeuezmyhgswt0U=", + "dev": true + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "node_modules/array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "dev": true + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + }, + "node_modules/assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1", + "util": "0.10.3" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/asset-config-webpack-plugin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/asset-config-webpack-plugin/-/asset-config-webpack-plugin-2.0.0.tgz", + "integrity": "sha512-iO62Liw2iT3bSTzRwxTv8su6xMZOr3aiIbISlDzpdQMDztVMPTDXYl/+XcLyZXJbTZ9OUSMyXzPT27PSM4eeXQ==", + "dev": true, + "dependencies": { + "font-config-webpack-plugin": "^2.0.0", + "image-config-webpack-plugin": "^2.0.0" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + }, + "peerDependencies": { + "webpack": ">=4.36.0" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "node_modules/async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/autoprefixer": { + "version": "9.8.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", + "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", + "dev": true, + "dependencies": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + }, + "node_modules/autoprefixer/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/autoprefixer/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/autoprefixer/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/autoprefixer/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/autoprefixer/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/autoprefixer/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/autoprefixer/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/autoprefixer/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz", + "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==", + "dev": true + }, + "node_modules/axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "dev": true, + "dependencies": { + "follow-redirects": "1.5.10" + } + }, + "node_modules/axios/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/axios/node_modules/follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "dev": true, + "dependencies": { + "debug": "=3.1.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/axios/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + } + }, + "node_modules/babel-code-frame/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "node_modules/babel-code-frame/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/babel-loader": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", + "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", + "dev": true, + "dependencies": { + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 6.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base64-arraybuffer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", + "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/bignumber.js": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", + "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", + "dev": true + }, + "node_modules/block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "dependencies": { + "inherits": "~2.0.0" + }, + "engines": { + "node": "0.4 || >=0.5.8" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/bn.js": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", + "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", + "dev": true + }, + "node_modules/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "dependencies": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/braces/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-rsa/node_modules/bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserslist": { + "version": "4.14.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.5.tgz", + "integrity": "sha512-Z+vsCZIvCBvqLoYkBFTwEYH3v5MCQbsAjp50ERycpOjnPmolg1Gjy4+KaWWpm8QOJt9GHkhdqAl14NpCX73CWA==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001135", + "electron-to-chromium": "^1.3.571", + "escalade": "^3.1.0", + "node-releases": "^1.1.61" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + }, + "node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=", + "dev": true + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "node_modules/buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/cacache/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cache-base/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cache-loader": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-1.2.5.tgz", + "integrity": "sha512-enWKEQ4kO3YreDFd7AtVRjtJBmNiqh/X9hVDReu0C4qm8gsGmySkwuWtdc+N5O+vq5FzxL1mIZc30NyXCB7o/Q==", + "dev": true, + "dependencies": { + "loader-utils": "^1.1.0", + "mkdirp": "^0.5.1", + "neo-async": "^2.5.0", + "schema-utils": "^0.4.2" + }, + "engines": { + "node": ">= 4.8 < 5.0.0 || >= 5.10" + }, + "peerDependencies": { + "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0" + } + }, + "node_modules/caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "dependencies": { + "callsites": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-callsite/node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "dependencies": { + "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.1.tgz", + "integrity": "sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.1", + "tslib": "^1.10.0" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "dependencies": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/camelcase-keys/node_modules/camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001150", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001150.tgz", + "integrity": "sha512-kiNKvihW0m36UhAFnl7bOAv0i1K1f6wpfVtTF5O5O82XzgtBnb05V0XeV3oZ968vfg2sRNChsHw8ASH2hDfoYQ==", + "dev": true + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz", + "integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==", + "dev": true, + "dependencies": { + "css-select": "~1.2.0", + "dom-serializer": "~0.1.1", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash": "^4.15.0", + "parse5": "^3.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cheerio/node_modules/dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "dev": true, + "dependencies": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, + "node_modules/cheerio/node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "node_modules/cheerio/node_modules/parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.", + "dev": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/chokidar/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/clean-webpack-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz", + "integrity": "sha512-MciirUH5r+cYLGCOL5JX/ZLzOZbVr1ot3Fw+KcvbhUb6PM+yycqd9ZhIlcigQ5gl+XhppNmw3bEFuaaMNyLj3A==", + "dev": true, + "dependencies": { + "@types/webpack": "^4.4.31", + "del": "^4.1.1" + }, + "engines": { + "node": ">=8.9.0" + }, + "peerDependencies": { + "webpack": "*" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "dependencies": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/coa/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/coa/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/coa/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/coa/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/coa/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/coa/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", + "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.1", + "color-string": "^1.5.4" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/color-string": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz", + "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==", + "dev": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/color/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/common-config-webpack-plugin": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/common-config-webpack-plugin/-/common-config-webpack-plugin-2.0.1.tgz", + "integrity": "sha512-zclDlu6t2pltj2rlY8cF/oWTx5hXP9FLgZ0TKYWZGgfSVWUpjQ3hj9Vs0fbYB7zwDawFp3Ts+YIQxzNSN94Bnw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.2.2", + "@babel/preset-env": "^7.2.3", + "@babel/preset-react": "^7.0.0", + "asset-config-webpack-plugin": "^2.0.0", + "js-config-webpack-plugin": "^2.0.1", + "scss-config-webpack-plugin": "^2.0.0", + "ts-config-webpack-plugin": "^2.0.0", + "typescript": "^3.8.3" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + }, + "peerDependencies": { + "webpack": ">=4.36.0" + } + }, + "node_modules/common-config-webpack-plugin/node_modules/typescript": { + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", + "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "node_modules/component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "node_modules/component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "node_modules/compose-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz", + "integrity": "sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8=", + "dev": true, + "dependencies": { + "arity-n": "^1.0.4" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "node_modules/contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/convert-source-map/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "node_modules/copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "dependencies": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/core-js": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "dev": true, + "dependencies": { + "browserslist": "^4.8.5", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cosmiconfig/node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cosmiconfig/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cosmiconfig/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + } + }, + "node_modules/css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + }, + "engines": { + "node": ">4" + } + }, + "node_modules/css-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.1.tgz", + "integrity": "sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw==", + "dev": true, + "dependencies": { + "babel-code-frame": "^6.26.0", + "css-selector-tokenizer": "^0.7.0", + "icss-utils": "^2.1.0", + "loader-utils": "^1.0.2", + "lodash": "^4.17.11", + "postcss": "^6.0.23", + "postcss-modules-extract-imports": "^1.2.0", + "postcss-modules-local-by-default": "^1.2.0", + "postcss-modules-scope": "^1.1.0", + "postcss-modules-values": "^1.3.0", + "postcss-value-parser": "^3.3.0", + "source-list-map": "^2.0.0" + }, + "engines": { + "node": ">= 6.9.0 <7.0.0 || >= 8.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/css-loader/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/css-loader/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/css-loader/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/css-loader/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/css-loader/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/css-loader/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/css-loader/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/css-loader/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "dependencies": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "node_modules/css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "node_modules/css-selector-tokenizer": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "node_modules/css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "dev": true, + "dependencies": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "dev": true, + "dependencies": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/csso": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", + "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", + "dev": true, + "dependencies": { + "css-tree": "1.0.0-alpha.39" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.6", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", + "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==", + "dev": true + }, + "node_modules/cubic2quad": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cubic2quad/-/cubic2quad-1.1.1.tgz", + "integrity": "sha1-abGcYaP1tB7PLx1fro+wNBWqixU=", + "dev": true + }, + "node_modules/currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "dependencies": { + "array-find-index": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "node_modules/default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "dependencies": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/default-gateway/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/default-gateway/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/default-gateway/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/default-gateway/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway/node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/default-gateway/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/default-gateway/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/default-gateway/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "dependencies": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-indent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz", + "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "node_modules/diff-match-patch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz", + "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==", + "dev": true + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dir-glob/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "node_modules/dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "dependencies": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "dependencies": { + "buffer-indexof": "^1.0.0" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/dom-serializer/node_modules/domelementtype": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.2.tgz", + "integrity": "sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/dom-storage": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz", + "integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true, + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, + "node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "node_modules/domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "dependencies": { + "domelementtype": "1" + } + }, + "node_modules/domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/dot-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.3.tgz", + "integrity": "sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA==", + "dev": true, + "dependencies": { + "no-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/duplexify/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexify/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/duplexify/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.3.582", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.582.tgz", + "integrity": "sha512-0nCJ7cSqnkMC+kUuPs0YgklFHraWGl/xHqtZWWtOeVtyi+YqkoAOMGuZQad43DscXCQI/yizcTa3u6B5r+BLww==", + "dev": true + }, + "node_modules/elliptic": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", + "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "dev": true, + "dependencies": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/engine.io-client": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.4.tgz", + "integrity": "sha512-iU4CRr38Fecj8HoZEnFtm2EiKGbYZcPn3cHxqNGl/tmdWRf60KhK+9vE0JeSjgnlS/0oynEfLgKbT9ALpim0sQ==", + "dev": true, + "dependencies": { + "component-emitter": "~1.3.0", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.2.0", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "ws": "~6.1.0", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + } + }, + "node_modules/engine.io-client/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/engine.io-client/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/engine.io-parser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", + "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==", + "dev": true, + "dependencies": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.4", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "node_modules/enhanced-resolve": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", + "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dev": true, + "dependencies": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.11.0.tgz", + "integrity": "sha512-G9+qtYVCHaDi1ZuWzBsOWo2wSwd70TXnU6UHA3cTYHp7gCTXZcpggWFoUVAMRarg68qtPoNfFbzPh+VdOgmwmw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@eslint/eslintrc": "^0.1.3", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.0", + "esquery": "^1.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.14.0.tgz", + "integrity": "sha512-DbVwh0qZhAC7CNDWcq8cBdK6FcVHiMTKmCypOPWeZkp9hJ8xYwTaWSa6bb6cjfi8KOeJy0e9a8Izxyx+O4+gCQ==", + "dev": true, + "dependencies": { + "get-stdin": "^6.0.0" + }, + "bin": { + "eslint-config-prettier-check": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=3.14.1" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", + "dev": true, + "dependencies": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/eslint-module-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "dev": true, + "dependencies": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-module-utils/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/eslint-plugin-import": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", + "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.1", + "array.prototype.flat": "^1.2.3", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.4", + "eslint-module-utils": "^2.6.0", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.1", + "read-pkg-up": "^2.0.0", + "resolve": "^1.17.0", + "tsconfig-paths": "^3.9.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "dependencies": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/eslint-plugin-json-format": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-json-format/-/eslint-plugin-json-format-2.0.1.tgz", + "integrity": "sha512-eWT0sNqIEYzKqbej2dvz+/oQ4JQxthE3i+izjInIdfbsPfVgBtiWbmagkgKStje0LJqo9FATx1LWl6xcuxqsBQ==", + "dev": true, + "dependencies": { + "common-tags": "^1.8.0", + "debug": "^4.1.1", + "diff-match-patch": "^1.0.4", + "json-fixer": "^1.3.2", + "line-column": "^1.0.2", + "lodash": "^4.17.15", + "minimatch": "^3.0.4", + "sort-package-json": "^1.22.1" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "eslint": ">= 3.2.1" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz", + "integrity": "sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "eslint": ">=5.0.0", + "prettier": ">=1.13.0" + } + }, + "node_modules/eslint-plugin-unused-imports": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-0.1.3.tgz", + "integrity": "sha512-hNbmvUhfy+Nf+9t2Sx720FsFRMkpWLaN5QSw0yUyplcOugvnRaLg9ylAK6DFu/S3J+IiPiHueZHKJh7lhggAXA==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "^2.3.0", + "eslint": "^6.3.0", + "eslint-rule-composer": "^0.3.0", + "requireindex": "~1.1.0", + "typescript": "^3.6.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-unused-imports/node_modules/@typescript-eslint/eslint-plugin": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz", + "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/experimental-utils": "2.34.0", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "tsutils": "^3.17.1" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^2.0.0", + "eslint": "^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-unused-imports/node_modules/@typescript-eslint/experimental-utils": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz", + "integrity": "sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/eslint-plugin-unused-imports/node_modules/@typescript-eslint/typescript-estree": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz", + "integrity": "sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "eslint-visitor-keys": "^1.1.0", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-unused-imports/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-plugin-unused-imports/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-unused-imports/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-unused-imports/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/eslint-plugin-unused-imports/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/eslint-plugin-unused-imports/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/eslint-plugin-unused-imports/node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/eslint-plugin-unused-imports/node_modules/eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-unused-imports/node_modules/eslint/node_modules/eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-plugin-unused-imports/node_modules/eslint/node_modules/regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true, + "engines": { + "node": ">=6.5.0" + } + }, + "node_modules/eslint-plugin-unused-imports/node_modules/eslint/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-unused-imports/node_modules/espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eslint-plugin-unused-imports/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-unused-imports/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint-plugin-unused-imports/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint-plugin-unused-imports/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-unused-imports/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint-plugin-unused-imports/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-unused-imports/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-unused-imports/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-plugin-unused-imports/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-unused-imports/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint-plugin-unused-imports/node_modules/typescript": { + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", + "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/eslint-plugin-unused-imports/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/eslint-rule-composer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", + "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/espree": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz", + "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "dependencies": { + "original": "^1.0.0" + }, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "dependencies": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/express/node_modules/qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "dependencies": { + "type": "^2.0.0" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz", + "integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==", + "dev": true + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true, + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", + "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-glob/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-glob/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-glob/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/fast-glob/node_modules/micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-glob/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fast-text-encoding": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz", + "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig==", + "dev": true + }, + "node_modules/fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", + "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "dependencies": { + "flat-cache": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/file-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-2.0.0.tgz", + "integrity": "sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ==", + "dev": true, + "dependencies": { + "loader-utils": "^1.0.2", + "schema-utils": "^1.0.0" + }, + "engines": { + "node": ">= 6.9.0 < 7.0.0 || >= 8.9.0" + }, + "peerDependencies": { + "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0" + } + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dev": true, + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/firebase": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-7.24.0.tgz", + "integrity": "sha512-j6jIyGFFBlwWAmrlUg9HyQ/x+YpsPkc/TTkbTyeLwwAJrpAmmEHNPT6O9xtAnMV4g7d3RqLL/u9//aZlbY4rQA==", + "dev": true, + "dependencies": { + "@firebase/analytics": "0.6.0", + "@firebase/app": "0.6.11", + "@firebase/app-types": "0.6.1", + "@firebase/auth": "0.15.0", + "@firebase/database": "0.6.13", + "@firebase/firestore": "1.18.0", + "@firebase/functions": "0.5.1", + "@firebase/installations": "0.4.17", + "@firebase/messaging": "0.7.1", + "@firebase/performance": "0.4.2", + "@firebase/polyfill": "0.3.36", + "@firebase/remote-config": "0.1.28", + "@firebase/storage": "0.3.43", + "@firebase/util": "0.3.2" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + } + }, + "node_modules/flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "dependencies": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "node_modules/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "node_modules/flush-write-stream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/flush-write-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/flush-write-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", + "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + } + }, + "node_modules/font-config-webpack-plugin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/font-config-webpack-plugin/-/font-config-webpack-plugin-2.0.0.tgz", + "integrity": "sha512-+AZftm5hsUbPN/EzSIvETvcCpAYi3NOf3RlijUNrXo8QIyJvyDmkm2zG1JPHPS0v0dALEI5HUvY1pCRQyPLNHg==", + "dev": true, + "dependencies": { + "cache-loader": "^1.2.2", + "file-loader": "^2.0.0" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + }, + "peerDependencies": { + "webpack": ">=4.36.0" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-0.5.2.tgz", + "integrity": "sha512-a5IG+xXyKnpruI0CP/anyRLAoxWtp3lzdG6flxicANnoSzz64b12dJ7ASAVRrI2OaWwZR2JyBaMHFQqInhWhIw==", + "dev": true, + "dependencies": { + "babel-code-frame": "^6.22.0", + "chalk": "^2.4.1", + "chokidar": "^2.0.4", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.11.5" + }, + "peerDependencies": { + "tslint": "^4.0.0 || ^5.0.0", + "typescript": "^2.1.0 || ^3.0.0", + "webpack": "^2.3.0 || ^3.0.0 || ^4.0.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/from2/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/from2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/from2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "node_modules/fs-write-stream-atomic/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/fs-write-stream-atomic/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/fs-write-stream-atomic/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/gauge/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gaxios": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-3.2.0.tgz", + "integrity": "sha512-+6WPeVzPvOshftpxJwRi2Ozez80tn/hdtOUag7+gajDHRJvAblKxTFSSMPtr2hmnLy7p0mvYz0rMXLBl8pSO7Q==", + "dev": true, + "dependencies": { + "abort-controller": "^3.0.0", + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.3.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "dependencies": { + "globule": "^1.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/gcp-metadata": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.2.0.tgz", + "integrity": "sha512-vQZD57cQkqIA6YPGXM/zc+PIZfNRFdukWGsGZ5+LcJzesi5xp6Gn7a02wRJi4eXPyArNMIYpPET4QMxGqtlk6Q==", + "dev": true, + "dependencies": { + "gaxios": "^3.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/geometry-interfaces": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/geometry-interfaces/-/geometry-interfaces-1.1.4.tgz", + "integrity": "sha512-qD6OdkT6NcES9l4Xx3auTpwraQruU7dARbQPVO71MKvkGYw5/z/oIiGymuFXrRaEQa5Y67EIojUpaLeGEa5hGA==", + "dev": true + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/git-hooks-list": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/git-hooks-list/-/git-hooks-list-1.0.3.tgz", + "integrity": "sha512-Y7wLWcrLUXwk2noSka166byGCvhMtDRpgHdzCno1UQv/n/Hegp++a2xBWJL1lJarnKD3SWaljD+0z1ztqxuKyQ==", + "dev": true, + "funding": { + "url": "https://github.com/fisker/git-hooks-list?sponsor=1" + } + }, + "node_modules/gl-matrix": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.3.0.tgz", + "integrity": "sha512-COb7LDz+SXaHtl/h4LeaFcNdJdAQSDeVqjiIihSXNrkWObZLhDI4hIkZC11Aeqp7bcE72clzB0BnDXr2SmslRA==", + "dev": true + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "dependencies": { + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/globby/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/globule": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz", + "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==", + "dev": true, + "dependencies": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/google-auth-library": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-6.1.2.tgz", + "integrity": "sha512-X9EUX8R+kIpsf55KdSPhFWF0RNyBGuBc1zeYc/5Sjuk65eIYqq91rINJVBD22pp+w/PuM2fasHiA6H2xYjxTIQ==", + "dev": true, + "dependencies": { + "arrify": "^2.0.0", + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "fast-text-encoding": "^1.0.0", + "gaxios": "^3.0.0", + "gcp-metadata": "^4.2.0", + "gtoken": "^5.0.4", + "jws": "^4.0.0", + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/google-p12-pem": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.0.3.tgz", + "integrity": "sha512-wS0ek4ZtFx/ACKYF3JhyGe5kzH7pgiQ7J5otlumqR9psmWMYc+U9cErKlCYVYHoUaidXHdZ2xbo34kB+S+24hA==", + "dev": true, + "dependencies": { + "node-forge": "^0.10.0" + }, + "bin": { + "gp12-pem": "build/src/bin/gp12-pem.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "node_modules/gtoken": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.0.4.tgz", + "integrity": "sha512-U9wnSp4GZ7ov6zRdPuRHG4TuqEWqRRgT1gfXGNArhzBUn9byrPeH8uTmBWU/ZiWJJvTEmkjhDIC3mqHWdVi3xQ==", + "dev": true, + "dependencies": { + "gaxios": "^3.0.0", + "google-p12-pem": "^3.0.3", + "jws": "^4.0.0", + "mime": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dev": true, + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dev": true, + "dependencies": { + "isarray": "2.0.1" + } + }, + "node_modules/has-binary2/node_modules/isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + }, + "node_modules/has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-value/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "node_modules/hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "node_modules/html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, + "node_modules/html-entities": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", + "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==", + "dev": true + }, + "node_modules/html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/html-webpack-inline-svg-plugin": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/html-webpack-inline-svg-plugin/-/html-webpack-inline-svg-plugin-2.3.0.tgz", + "integrity": "sha512-NMeirc/kQX2/5qwr6fYrWwqYQsQt5ZcasgR2Jpm04fgZLr1eVm55cetgd5Dr/w7TyEYb+ZlWhAugZCktbgbUNw==", + "dev": true, + "dependencies": { + "axios": "^0.19.2", + "chalk": "^4.1.0", + "cheerio": "^1.0.0-rc.3", + "lodash": "^4.17.19", + "parse5": "^6.0.1", + "svgo": "^1.3.2" + } + }, + "node_modules/html-webpack-plugin": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz", + "integrity": "sha512-MouoXEYSjTzCrjIxWwg8gxL5fE2X2WZJLmBYXlaJhQUH5K/b5OrqmV7T4dB7iu0xkmJ6JlUuV6fFVtnqbPopZw==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^5.0.0", + "@types/tapable": "^1.0.5", + "@types/webpack": "^4.41.8", + "html-minifier-terser": "^5.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.15", + "pretty-error": "^2.1.1", + "tapable": "^1.1.3", + "util.promisify": "1.0.0" + }, + "engines": { + "node": ">=6.9" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "dependencies": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "node_modules/http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/http-parser-js": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.2.tgz", + "integrity": "sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "dependencies": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/iconfont-webpack-plugin": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/iconfont-webpack-plugin/-/iconfont-webpack-plugin-4.2.2.tgz", + "integrity": "sha512-gr2ujb7/vTnsgOXFiv1rUrpdiMWarfvX2crYrD/XysYFrdEyieMNrzK14twlU0UVvUAiJ1LyR0Akc4iXcwd8dA==", + "dev": true, + "dependencies": { + "loader-utils": "1.4.0", + "postcss": "7.0.27", + "svg2ttf": "4.3.0", + "svgicons2svgfont": "9.1.1", + "ttf2woff": "2.0.1" + }, + "peerDependencies": { + "css-loader": ">=2", + "postcss-loader": "^2.1.3 || ^3.0.0", + "webpack": "*" + } + }, + "node_modules/iconfont-webpack-plugin/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/iconfont-webpack-plugin/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/iconfont-webpack-plugin/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/iconfont-webpack-plugin/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/iconfont-webpack-plugin/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/iconfont-webpack-plugin/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/iconfont-webpack-plugin/node_modules/postcss": { + "version": "7.0.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", + "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + }, + "node_modules/iconfont-webpack-plugin/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "node_modules/icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "dev": true, + "dependencies": { + "postcss": "^6.0.1" + } + }, + "node_modules/icss-utils/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/icss-utils/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/icss-utils/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/icss-utils/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/icss-utils/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/icss-utils/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/icss-utils/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/idb": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz", + "integrity": "sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw==", + "dev": true + }, + "node_modules/ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, + "node_modules/iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-config-webpack-plugin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/image-config-webpack-plugin/-/image-config-webpack-plugin-2.0.0.tgz", + "integrity": "sha512-+uey8BHhHoOyXwl3kFACjNT+JbUDWmX8BFKGR4cjVuLcBdhaD617xQB3+aoUQVxSSDdGo91ASslZnEsF9Z2Ddw==", + "dev": true, + "dependencies": { + "cache-loader": "^1.2.2", + "file-loader": "^2.0.0", + "url-loader": "^1.0.1" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + }, + "peerDependencies": { + "webpack": ">=4.36.0" + } + }, + "node_modules/import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "dependencies": { + "import-from": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-from/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "dependencies": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/in-publish": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", + "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==", + "dev": true, + "bin": { + "in-install": "in-install.js", + "in-publish": "in-publish.js", + "not-in-install": "not-in-install.js", + "not-in-publish": "not-in-publish.js" + } + }, + "node_modules/indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "dependencies": { + "repeating": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "node_modules/indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/inquirer/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "dependencies": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "node_modules/ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-callable": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "dependencies": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "node_modules/is-core-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.0.0.tgz", + "integrity": "sha512-jq1AH6C8MuteOoBPwkxHafmByhL9j5q4OaPGdbuD+ZtQJVzH+i6E3BJDQcBA09k57i2Hh2yQbEG8yObZ0jdlWw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", + "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "dependencies": { + "is-path-inside": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "dependencies": { + "path-is-inside": "^1.0.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "dev": true, + "dependencies": { + "html-comment-regex": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "node_modules/js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, + "node_modules/js-config-webpack-plugin": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/js-config-webpack-plugin/-/js-config-webpack-plugin-2.0.1.tgz", + "integrity": "sha512-d2VbPV+xJaorwWbLQjI9be9bQ2q8Z4RdTqxV5UIZ0v/aPfcZyGdZ+ESKu6uwJViSOW85ASv9UrMx3iOzkIWv4w==", + "dev": true, + "dependencies": { + "babel-loader": "^8.0.0-beta.4", + "thread-loader": "^2.1.1" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0", + "@babel/preset-env": ">=7.0.0", + "@babel/preset-react": ">=7.0.0", + "webpack": ">=4.36.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "dev": true, + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, + "node_modules/json-fixer": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/json-fixer/-/json-fixer-1.6.5.tgz", + "integrity": "sha512-ewOhCI/b7Wx0DtO7ZhDp4SW5sjvp5dBWoeGnjta7mXPrvopvcE6TYGIqo+XREhzr/hKz7Bf3e2C0TSuoGFxAYA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.11.2", + "chalk": "^4.1.0", + "pegjs": "^0.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "node_modules/json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "dev": true, + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dev": true, + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/last-call-webpack-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", + "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", + "dev": true, + "dependencies": { + "lodash": "^4.17.5", + "webpack-sources": "^1.1.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/line-column": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/line-column/-/line-column-1.0.2.tgz", + "integrity": "sha1-0lryk2tvSEkXKzEuR5LR2Ye8NKI=", + "dev": true, + "dependencies": { + "isarray": "^1.0.0", + "isobject": "^2.0.0" + } + }, + "node_modules/load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "node_modules/lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true, + "dependencies": { + "lodash._basecopy": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "node_modules/lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "node_modules/lodash._bindcallback": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=", + "dev": true + }, + "node_modules/lodash._createassigner": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", + "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", + "dev": true, + "dependencies": { + "lodash._bindcallback": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash.restparam": "^3.0.0" + } + }, + "node_modules/lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "node_modules/lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "node_modules/lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", + "dev": true + }, + "node_modules/lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "node_modules/lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "node_modules/lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "dependencies": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "node_modules/lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", + "dev": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "node_modules/loglevel": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.0.tgz", + "integrity": "sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-loglevel?utm_medium=referral&utm_source=npm_fund" + } + }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + }, + "node_modules/loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "dependencies": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lower-case": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", + "integrity": "sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==", + "dev": true, + "dependencies": { + "tslib": "^1.10.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/memory-fs/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/memory-fs/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/memory-fs/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "dependencies": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/meow/node_modules/find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/meow/node_modules/load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/meow/node_modules/path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/meow/node_modules/path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/meow/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/meow/node_modules/read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "dependencies": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/meow/node_modules/read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "dependencies": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/meow/node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "dependencies": { + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/microbuffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/microbuffer/-/microbuffer-1.0.0.tgz", + "integrity": "sha1-izgy7UDIfVH0e7I0kTppinVtGdI=", + "dev": true + }, + "node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + }, + "node_modules/mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "dev": true, + "dependencies": { + "mime-db": "1.44.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", + "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==", + "dev": true, + "dependencies": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.4.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "dependencies": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "dependencies": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "dependencies": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/nan": { + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "dev": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/neatequal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/neatequal/-/neatequal-1.0.0.tgz", + "integrity": "sha1-LuEhG8n6bkxVcV/SELsFYC6xrjs=", + "dev": true, + "dependencies": { + "varstream": "^0.3.2" + } + }, + "node_modules/negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/no-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.3.tgz", + "integrity": "sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.1", + "tslib": "^1.10.0" + } + }, + "node_modules/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "dependencies": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/node-gyp/node_modules/semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "dependencies": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + } + }, + "node_modules/node-libs-browser/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/node-libs-browser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "node_modules/node-libs-browser/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/node-libs-browser/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/node-libs-browser/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/node-libs-browser/node_modules/util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/node-releases": { + "version": "1.1.64", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.64.tgz", + "integrity": "sha512-Iec8O9166/x2HRMJyLLLWkd0sFFLrFNy+Xf+JQfSQsdBJzPcHpNl3JQ9gD4j+aJxmCa25jNsIbM4bmACtSbkSg==", + "dev": true + }, + "node_modules/node-sass": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz", + "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash": "^4.17.15", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.13.2", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "2.2.5", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "bin": { + "node-sass": "bin/node-sass" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "dependencies": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "node_modules/node-sass/node_modules/get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/node-sass/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/node-sass/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/node-sass/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "node_modules/nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "dependencies": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.3.tgz", + "integrity": "sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is/node_modules/es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-path": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.9.2.tgz", + "integrity": "sha1-D9mnT8X60a45aLWGvaXGMr1sBaU=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-visit/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.1.tgz", + "integrity": "sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.0", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.assign/node_modules/es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/optimize-css-assets-webpack-plugin": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz", + "integrity": "sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A==", + "dev": true, + "dependencies": { + "cssnano": "^4.1.10", + "last-call-webpack-plugin": "^3.0.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "dependencies": { + "url-parse": "^1.4.3" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dev": true, + "dependencies": { + "retry": "^0.12.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "node_modules/parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "dependencies": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "node_modules/parallel-transform/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/parallel-transform/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/parallel-transform/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/param-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.3.tgz", + "integrity": "sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/parseqs": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", + "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==", + "dev": true + }, + "node_modules/parseuri": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", + "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==", + "dev": true + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.1.tgz", + "integrity": "sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA==", + "dev": true, + "dependencies": { + "no-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "node_modules/path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "dependencies": { + "pify": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-type/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/pegjs": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/pegjs/-/pegjs-0.10.0.tgz", + "integrity": "sha1-z4uvrm7d/0tafvsYUmnqr0YQ3b0=", + "dev": true, + "bin": { + "pegjs": "bin/pegjs" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "dependencies": { + "find-up": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "dependencies": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-calc": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "node_modules/postcss-calc/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-calc/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-calc/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-calc/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-calc/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-calc/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-calc/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-calc/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-colormin/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-convert-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-flexbugs-fixes": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz", + "integrity": "sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ==", + "dev": true, + "dependencies": { + "postcss": "^7.0.26" + } + }, + "node_modules/postcss-flexbugs-fixes/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-flexbugs-fixes/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-flexbugs-fixes/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-flexbugs-fixes/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-flexbugs-fixes/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-flexbugs-fixes/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-flexbugs-fixes/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-flexbugs-fixes/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-load-config": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", + "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", + "dev": true, + "dependencies": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dev": true, + "dependencies": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss-loader/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "dependencies": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-merge-longhand/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-font-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-gradients/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-params/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz", + "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==", + "dev": true, + "dependencies": { + "postcss": "^6.0.1" + } + }, + "node_modules/postcss-modules-extract-imports/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-extract-imports/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-extract-imports/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-modules-extract-imports/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-modules-extract-imports/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-extract-imports/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-modules-extract-imports/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "dev": true, + "dependencies": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-modules-local-by-default/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "dev": true, + "dependencies": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + } + }, + "node_modules/postcss-modules-scope/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-scope/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-scope/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-modules-scope/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-modules-scope/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-scope/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-modules-scope/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "dev": true, + "dependencies": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" + } + }, + "node_modules/postcss-modules-values/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-values/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-values/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-modules-values/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-modules-values/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-values/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-modules-values/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-display-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-positions/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-repeat-style/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "dependencies": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-string/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-timing-functions/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-unicode/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "dependencies": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-url/node_modules/normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-normalize-url/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-whitespace/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-ordered-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-reduce-transforms/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-safe-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", + "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", + "dev": true, + "dependencies": { + "postcss": "^7.0.26" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-safe-parser/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-safe-parser/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-safe-parser/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-safe-parser/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-safe-parser/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-safe-parser/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-safe-parser/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-safe-parser/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", + "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "dev": true, + "dependencies": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-svgo/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true + }, + "node_modules/postcss/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prettier": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.1.2.tgz", + "integrity": "sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-error": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^2.0.4" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "node_modules/promise-polyfill": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.1.3.tgz", + "integrity": "sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g==", + "dev": true + }, + "node_modules/protobufjs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.10.1.tgz", + "integrity": "sha512-pb8kTchL+1Ceg4lFd5XUpK8PdWacbvV5SK2ULH2ebrYtl4GjJmS24m6CKME67jzV53tbJxHlnNOSqQHbTsR9JQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": "^13.7.0", + "long": "^4.0.0" + }, + "bin": { + "pbjs": "bin/pbjs", + "pbts": "bin/pbts" + } + }, + "node_modules/protobufjs/node_modules/@types/node": { + "version": "13.13.28", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.28.tgz", + "integrity": "sha512-EM/qFeRH8ZCD+TlsaIPULyyFm9vOhFIvgskY2JmHbEsWsOPgN+rtjSXrcHGgJpob4Nu17VfO95FKewr0XY7iOQ==", + "dev": true + }, + "node_modules/proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "dev": true, + "dependencies": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true, + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "dependencies": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "dependencies": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "dependencies": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/readdirp/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdirp/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/readdirp/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "dependencies": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", + "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-parser": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", + "dev": true + }, + "node_modules/regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "node_modules/renderkid": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.4.tgz", + "integrity": "sha512-K2eXrSOJdq+HuKzlcjOlGoOarUu5SDguDEhE7+Ah4zuOWL40j8A/oHvLlLob9PSTNvVnBd+/q0Er1QfpEuem5g==", + "dev": true, + "dependencies": { + "css-select": "^1.1.0", + "dom-converter": "^0.2", + "htmlparser2": "^3.3.0", + "lodash": "^4.17.20", + "strip-ansi": "^3.0.0" + } + }, + "node_modules/renderkid/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/renderkid/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "dependencies": { + "is-finite": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dev": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/requireindex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.1.0.tgz", + "integrity": "sha1-5UBLgVV+91225JxacgBIk/4D4WI=", + "dev": true, + "engines": { + "node": ">=0.10.5" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "node_modules/resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz", + "integrity": "sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==", + "dev": true, + "dependencies": { + "is-core-module": "^2.0.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-dir/node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-dir/node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-dir/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true + }, + "node_modules/resolve-url-loader": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz", + "integrity": "sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ==", + "dev": true, + "dependencies": { + "adjust-sourcemap-loader": "3.0.0", + "camelcase": "5.3.1", + "compose-function": "3.0.3", + "convert-source-map": "1.7.0", + "es6-iterator": "2.0.3", + "loader-utils": "1.2.3", + "postcss": "7.0.21", + "rework": "1.0.1", + "rework-visit": "1.0.0", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/resolve-url-loader/node_modules/emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/resolve-url-loader/node_modules/loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rework": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", + "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", + "dev": true, + "dependencies": { + "convert-source-map": "^0.3.3", + "css": "^2.0.0" + } + }, + "node_modules/rework-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", + "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=", + "dev": true + }, + "node_modules/rework/node_modules/convert-source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", + "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=", + "dev": true + }, + "node_modules/rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "node_modules/rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", + "dev": true + }, + "node_modules/run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "dependencies": { + "aproba": "^1.1.1" + } + }, + "node_modules/rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sass-graph": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz", + "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^13.3.2" + }, + "bin": { + "sassgraph": "bin/sassgraph" + } + }, + "node_modules/sass-loader": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", + "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.2.3", + "neo-async": "^2.6.1", + "schema-utils": "^2.6.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0", + "sass": "^1.3.0", + "webpack": "^4.36.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/sass-loader/node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/sass-loader/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "node_modules/schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/scss-config-webpack-plugin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/scss-config-webpack-plugin/-/scss-config-webpack-plugin-2.0.0.tgz", + "integrity": "sha512-NwVdjqZqcN8f6FTKXDgT+KNoSrdWI7EvYH2eJpEo0gJAun7qDf83OJMYzhANrKHCx8myt1kSDIQ5JL5Zl3iMeQ==", + "dev": true, + "dependencies": { + "autoprefixer": "^9.4.3", + "css-loader": "^1.0.0", + "iconfont-webpack-plugin": "4.2.2", + "mini-css-extract-plugin": "0.9.0", + "node-sass": "^4.9.0", + "optimize-css-assets-webpack-plugin": "^5.0.0", + "postcss-flexbugs-fixes": "^4.1.0", + "postcss-loader": "^3.0.0", + "postcss-safe-parser": "^4.0.1", + "resolve-url-loader": "^2.3.0", + "sass-loader": "8.0.2", + "style-loader": "1.1.3" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + }, + "peerDependencies": { + "webpack": ">=4.36.0" + } + }, + "node_modules/scss-config-webpack-plugin/node_modules/adjust-sourcemap-loader": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-1.2.0.tgz", + "integrity": "sha512-958oaHHVEXMvsY7v7cC5gEkNIcoaAVIhZ4mBReYVZJOTP9IgKmzLjIOhTtzpLMu+qriXvLsVjJ155EeInp45IQ==", + "dev": true, + "dependencies": { + "assert": "^1.3.0", + "camelcase": "^1.2.1", + "loader-utils": "^1.1.0", + "lodash.assign": "^4.0.1", + "lodash.defaults": "^3.1.2", + "object-path": "^0.9.2", + "regex-parser": "^2.2.9" + } + }, + "node_modules/scss-config-webpack-plugin/node_modules/adjust-sourcemap-loader/node_modules/camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/scss-config-webpack-plugin/node_modules/adjust-sourcemap-loader/node_modules/lodash.defaults": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-3.1.2.tgz", + "integrity": "sha1-xzCLGNv4vJNy1wGnNJPGEZK9Liw=", + "dev": true, + "dependencies": { + "lodash.assign": "^3.0.0", + "lodash.restparam": "^3.0.0" + } + }, + "node_modules/scss-config-webpack-plugin/node_modules/adjust-sourcemap-loader/node_modules/lodash.defaults/node_modules/lodash.assign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", + "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", + "dev": true, + "dependencies": { + "lodash._baseassign": "^3.0.0", + "lodash._createassigner": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "node_modules/scss-config-webpack-plugin/node_modules/camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/scss-config-webpack-plugin/node_modules/resolve-url-loader": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-2.3.2.tgz", + "integrity": "sha512-sc/UVgiADdoTc+4cGPB7cUCnlEkzlxD1NXHw4oa9qA0fp30H8mAQ2ePJBP9MQ029DUuhEPouhNdvzT37pBCV0g==", + "dev": true, + "dependencies": { + "adjust-sourcemap-loader": "^1.1.0", + "camelcase": "^4.1.0", + "convert-source-map": "^1.5.1", + "loader-utils": "^1.1.0", + "lodash.defaults": "^4.0.0", + "rework": "^1.0.1", + "rework-visit": "^1.0.0", + "source-map": "^0.5.7", + "urix": "^0.1.0" + } + }, + "node_modules/scss-config-webpack-plugin/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "dependencies": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + } + }, + "node_modules/scss-tokenizer/node_modules/source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "dependencies": { + "amdefine": ">=0.0.4" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/sdf-2d": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/sdf-2d/-/sdf-2d-0.6.0.tgz", + "integrity": "sha512-k6osouD30i1/sLCYJeAINwKe159SCwM4JQJMw3YIY2MxvKKrxQy2+djTIfUd8YvBQCHN4u/0bULmNBmw9DDO6w==", + "dev": true, + "dependencies": { + "gl-matrix": "^3.3.0" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "node_modules/selfsigned": { + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", + "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", + "dev": true, + "dependencies": { + "node-forge": "^0.10.0" + } + }, + "node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/snapdragon/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/socket.io-client": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.1.tgz", + "integrity": "sha512-YXmXn3pA8abPOY//JtYxou95Ihvzmg8U6kQyolArkIyLd0pgVhrfor/iMsox8cn07WCOOvvuJ6XKegzIucPutQ==", + "dev": true, + "dependencies": { + "backo2": "1.0.2", + "component-bind": "1.0.0", + "component-emitter": "~1.3.0", + "debug": "~3.1.0", + "engine.io-client": "~3.4.0", + "has-binary2": "~1.0.2", + "indexof": "0.0.1", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "socket.io-parser": "~3.3.0", + "to-array": "0.1.4" + } + }, + "node_modules/socket.io-client/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/socket.io-client/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/socket.io-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.1.tgz", + "integrity": "sha512-1QLvVAe8dTz+mKmZ07Swxt+LAo4Y1ff50rlyoEx00TQmDFVQYPfcqGvIDJLGaBdhdNCecXtyKpD+EgKGcmmbuQ==", + "dev": true, + "dependencies": { + "component-emitter": "~1.3.0", + "debug": "~3.1.0", + "isarray": "2.0.1" + } + }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/socket.io-parser/node_modules/isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + }, + "node_modules/socket.io-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/sockjs": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", + "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.10.0", + "uuid": "^3.4.0", + "websocket-driver": "0.6.5" + } + }, + "node_modules/sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "dev": true, + "dependencies": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + } + }, + "node_modules/sockjs-client/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/sockjs/node_modules/faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/sockjs/node_modules/websocket-driver": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", + "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", + "dev": true, + "dependencies": { + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-object-keys": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sort-object-keys/-/sort-object-keys-1.1.3.tgz", + "integrity": "sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==", + "dev": true + }, + "node_modules/sort-package-json": { + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-1.46.0.tgz", + "integrity": "sha512-Fn5iiGKkATkEOQ0rol45dClfvNNW3r6PZ87mU4rbpz/M0Dxz+0D6oEU8nfpwUB5rd8u+WzsH2BQ/kRDwz+yVDQ==", + "dev": true, + "dependencies": { + "detect-indent": "^6.0.0", + "detect-newline": "3.1.0", + "git-hooks-list": "1.0.3", + "globby": "10.0.0", + "is-plain-obj": "2.1.0", + "sort-object-keys": "^1.1.3" + }, + "bin": { + "sort-package-json": "cli.js" + } + }, + "node_modules/sort-package-json/node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sort-package-json/node_modules/globby": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.0.tgz", + "integrity": "sha512-3LifW9M4joGZasyYPz2A1U74zbC/45fvpXUvO/9KbSa+VV0aGZarWkfdgKyR9sExNP0t0x0ss/UMJpNpcaTspw==", + "dev": true, + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sort-package-json/node_modules/ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/sort-package-json/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.1.1.tgz", + "integrity": "sha512-m2HjSWP2R1yR9P31e4+ciGHFOPvW6GmqHgZkneOkrME2VvWysXTGi4o0yS28iKWWP3vAUmAoa+3x5ZRI2BIX6A==", + "dev": true, + "dependencies": { + "abab": "^2.0.5", + "iconv-lite": "^0.6.2", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "source-map": "^0.6.1", + "whatwg-mimetype": "^2.3.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/source-map-loader/node_modules/iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader/node_modules/json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/source-map-loader/node_modules/loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/source-map-loader/node_modules/schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz", + "integrity": "sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "dependencies": { + "figgy-pudding": "^3.5.1" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.1" + } + }, + "node_modules/stdout-stream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/stdout-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/stdout-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-browserify/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/stream-browserify/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/stream-browserify/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/stream-http/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/stream-http/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/stream-http/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "node_modules/strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string.fromcodepoint": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string.fromcodepoint/-/string.fromcodepoint-0.2.1.tgz", + "integrity": "sha1-jZeDM8C8klOPUPOD5IiPPlYZ1lM=", + "dev": true + }, + "node_modules/string.prototype.codepointat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", + "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==", + "dev": true + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz", + "integrity": "sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend/node_modules/es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz", + "integrity": "sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart/node_modules/es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "dependencies": { + "get-stdin": "^4.0.1" + }, + "bin": { + "strip-indent": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-indent/node_modules/get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-loader": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.1.3.tgz", + "integrity": "sha512-rlkH7X/22yuwFYK357fMN/BxYOorfnfq0eD7+vqlemSK4wEcejFF1dg4zxP0euBW8NrYx2WZzZ8PPFevr7D+Kw==", + "dev": true, + "dependencies": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.6.4" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/style-loader/node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/stylehacks/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/svg-pathdata": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-5.0.5.tgz", + "integrity": "sha512-TAAvLNSE3fEhyl/Da19JWfMAdhSXTYeviXsLSoDT1UM76ADj5ndwAPX1FKQEgB/gFMPavOy6tOqfalXKUiXrow==", + "dev": true, + "engines": { + "node": ">=6.9.5" + } + }, + "node_modules/svg2ttf": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/svg2ttf/-/svg2ttf-4.3.0.tgz", + "integrity": "sha512-LZ0B7zzHWLWbzLzwaKGHQvPOuxCXLReIb3LSxFSGUy1gMw2Utk6KGNbTmbmRL6Rk1qDSmTixnDrQgnXaL9n0CA==", + "dev": true, + "dependencies": { + "argparse": "^1.0.6", + "cubic2quad": "^1.0.0", + "lodash": "^4.17.10", + "microbuffer": "^1.0.0", + "svgpath": "^2.1.5", + "xmldom": "~0.1.22" + }, + "bin": { + "svg2ttf": "svg2ttf.js" + } + }, + "node_modules/svgicons2svgfont": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/svgicons2svgfont/-/svgicons2svgfont-9.1.1.tgz", + "integrity": "sha512-iOj7lqHP/oMrLg7S2Iv89LOJUfmIuePefXcs5ul4IsKwcYvL/T/Buahz+nQQJygyuvEMBBXqnCRmnvJggHeJzA==", + "dev": true, + "dependencies": { + "commander": "^2.12.2", + "geometry-interfaces": "^1.1.4", + "glob": "^7.1.2", + "neatequal": "^1.0.0", + "readable-stream": "^2.3.3", + "sax": "^1.2.4", + "string.fromcodepoint": "^0.2.1", + "string.prototype.codepointat": "^0.2.0", + "svg-pathdata": "^5.0.0", + "transformation-matrix-js": "^2.7.1" + }, + "bin": { + "svgicons2svgfont": "bin/svgicons2svgfont.js" + }, + "engines": { + "node": ">=6.9.5" + } + }, + "node_modules/svgicons2svgfont/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/svgicons2svgfont/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/svgicons2svgfont/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/svgicons2svgfont/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/svgo/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/svgo/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/svgo/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/svgo/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/svgo/node_modules/css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "node_modules/svgo/node_modules/css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/svgo/node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/svgo/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/svgo/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/svgpath": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/svgpath/-/svgpath-2.3.0.tgz", + "integrity": "sha512-N/4UDu3Y2ICik0daMmFW1tplw0XPs1nVIEVYkTiQfj9/JQZeEtAKaSYwheCwje1I4pQ5r22fGpoaNIvGgsyJyg==", + "dev": true + }, + "node_modules/table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "dependencies": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/table/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/table/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/table/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/table/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/table/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "dev": true, + "dependencies": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, + "node_modules/terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dev": true, + "dependencies": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/thread-loader": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-2.1.3.tgz", + "integrity": "sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==", + "dev": true, + "dependencies": { + "loader-runner": "^2.3.1", + "loader-utils": "^1.1.0", + "neo-async": "^2.6.0" + }, + "engines": { + "node": ">= 6.9.0 <7.0.0 || >= 8.9.0" + }, + "peerDependencies": { + "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/through2/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/through2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/through2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dev": true, + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/transformation-matrix-js": { + "version": "2.7.6", + "resolved": "https://registry.npmjs.org/transformation-matrix-js/-/transformation-matrix-js-2.7.6.tgz", + "integrity": "sha512-1CxDIZmCQ3vA0GGnkdMQqxUXVm3xXAFmglPYRS1hr37LzSg22TC7QAWOT38OmdUvMEs/rqcnkFoAsqvzdiluDg==", + "deprecated": "Package no longer supported. Contact support@npmjs.com for more info.", + "dev": true + }, + "node_modules/trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "dependencies": { + "glob": "^7.1.2" + } + }, + "node_modules/ts-config-webpack-plugin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ts-config-webpack-plugin/-/ts-config-webpack-plugin-2.0.0.tgz", + "integrity": "sha512-OQvVU5agUM4B9OormTghgCRI+Na9HyrhZ1gqxux2uZ7Dk4NRorcBvbwDPLystLrzEwivRGpCglaS8GbeLpAVPw==", + "dev": true, + "dependencies": { + "cache-loader": "^1.2.2", + "fork-ts-checker-webpack-plugin": "^0.5.2", + "thread-loader": "^2.1.1", + "ts-loader": "^6.2.1" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + }, + "peerDependencies": { + "typescript": ">=3.1.0", + "webpack": ">=4.36.0" + } + }, + "node_modules/ts-loader": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-6.2.2.tgz", + "integrity": "sha512-HDo5kXZCBml3EUPcc7RlZOV/JGlLHwppTLEHb3SHnr5V7NXD4klMEkrhJe5wgRbaWsSXi+Y1SIBN/K9B6zWGWQ==", + "dev": true, + "dependencies": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^4.0.0", + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8.6" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/ts-loader/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ts-loader/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ts-loader/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/ts-loader/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/ts-loader/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ts-loader/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/ts-loader/node_modules/micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/ts-loader/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ts-loader/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/ttf2woff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ttf2woff/-/ttf2woff-2.0.1.tgz", + "integrity": "sha1-hxgyJAAksJ25VwkEx8GSi4BXyWk=", + "dev": true, + "dependencies": { + "argparse": "^1.0.6", + "microbuffer": "^1.0.0", + "pako": "^1.0.0" + }, + "bin": { + "ttf2woff": "ttf2woff.js" + } + }, + "node_modules/tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "node_modules/typescript": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.3.tgz", + "integrity": "sha512-tEu6DGxGgRJPb/mVPIZ48e69xCn2yRmCgYmDugAVwmJ6o+0u1RI18eO7E7WBTLYLaEVVOhwQmcdhQHweux/WPg==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "node_modules/uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/uri-js": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url-loader": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz", + "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==", + "dev": true, + "dependencies": { + "loader-utils": "^1.1.0", + "mime": "^2.0.3", + "schema-utils": "^1.0.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^3.0.0 || ^4.0.0" + } + }, + "node_modules/url-loader/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "dependencies": { + "inherits": "2.0.1" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/varstream": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/varstream/-/varstream-0.3.2.tgz", + "integrity": "sha1-GKxklHZfP/GjWtmkvgU77BiKXeE=", + "dev": true, + "dependencies": { + "readable-stream": "^1.0.33" + }, + "bin": { + "json2varstream": "cli/json2varstream.js", + "varstream2json": "cli/varstream2json.js" + }, + "engines": { + "node": ">=0.10.*" + } + }, + "node_modules/varstream/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "node_modules/varstream/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/varstream/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "node_modules/watchpack": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz", + "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", + "dev": true, + "dependencies": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.0" + }, + "optionalDependencies": { + "chokidar": "^3.4.1", + "watchpack-chokidar2": "^2.0.0" + } + }, + "node_modules/watchpack-chokidar2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", + "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "dev": true, + "optional": true, + "dependencies": { + "chokidar": "^2.1.8" + }, + "engines": { + "node": "<8.10.0" + } + }, + "node_modules/watchpack/node_modules/anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "optional": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/watchpack/node_modules/binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/watchpack/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "optional": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/watchpack/node_modules/chokidar": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", + "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "dev": true, + "optional": true, + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.1.2" + } + }, + "node_modules/watchpack/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "optional": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/watchpack/node_modules/fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/watchpack/node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/watchpack/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/watchpack/node_modules/readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "optional": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/watchpack/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/webpack": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz", + "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.3.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + }, + "webpack-command": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz", + "integrity": "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "cross-spawn": "^6.0.5", + "enhanced-resolve": "^4.1.1", + "findup-sync": "^3.0.0", + "global-modules": "^2.0.0", + "import-local": "^2.0.0", + "interpret": "^1.4.0", + "loader-utils": "^1.4.0", + "supports-color": "^6.1.0", + "v8-compile-cache": "^2.1.1", + "yargs": "^13.3.2" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=6.11.5" + }, + "peerDependencies": { + "webpack": "4.x.x" + } + }, + "node_modules/webpack-cli/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-cli/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-cli/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-cli/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/webpack-cli/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/webpack-cli/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/webpack-cli/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-cli/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-cli/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/webpack-cli/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-cli/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-cli/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-cli/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "dev": true, + "dependencies": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "node_modules/webpack-dev-middleware/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/webpack-dev-middleware/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/webpack-dev-middleware/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/webpack-dev-server": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", + "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", + "dev": true, + "dependencies": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.8", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.7", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.20", + "sockjs-client": "1.4.0", + "spdy": "^4.0.2", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "^13.3.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 6.11.5" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-dev-server/node_modules/is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/webpack-dev-server/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/webpack-dev-server/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "dependencies": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/webpack-log/node_modules/ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/webpack/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/webpack/node_modules/eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/webpack/node_modules/memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "node_modules/webpack/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/webpack/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/webpack/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==", + "dev": true + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "node_modules/wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "dependencies": { + "errno": "~0.1.7" + } + }, + "node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "dependencies": { + "mkdirp": "^0.5.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ws": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", + "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", + "dev": true, + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/xmldom": { + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", + "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==", + "dev": true, + "engines": { + "node": ">=0.1" + } + }, + "node_modules/xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/yargs/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/yargs/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/compat-data": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.1.tgz", + "integrity": "sha512-725AQupWJZ8ba0jbKceeFblZTY90McUBWMwHhkFQ9q1zKPJ95GUktljFcgcsIVwRnTnRKlcYzfiNImg5G9m6ZQ==", + "dev": true + }, + "@babel/core": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", + "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.1.tgz", + "integrity": "sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-builder-react-jsx": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz", + "integrity": "sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-builder-react-jsx-experimental": { + "version": "7.12.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.4.tgz", + "integrity": "sha512-AjEa0jrQqNk7eDQOo0pTfUOwQBMF+xVqrausQwT9/rTKy0g04ggFNaJpaE09IQMn9yExluigWMJcj0WC7bq+Og==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-module-imports": "^7.12.1", + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.1.tgz", + "integrity": "sha512-jtBEif7jsPwP27GPHs06v4WBV0KrE8a/P7n0N0sSvHn2hwUCYnolP/CLmz51IzAW4NlN+HuoBtb9QcwnRo9F/g==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.1", + "@babel/helper-validator-option": "^7.12.1", + "browserslist": "^4.12.0", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", + "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-define-map": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", + "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-module-imports": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz", + "integrity": "sha512-ZeC1TlMSvikvJNy1v/wPIazCu3NdOwgYZLIkmIyAsGhqkNpiDoQQRmaCK8YP4Pq3GPTLPV9WXaPCJKvx06JxKA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-module-transforms": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", + "dev": true, + "requires": { + "lodash": "^4.17.19" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-replace-supers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.1.tgz", + "integrity": "sha512-zJjTvtNJnCFsCXVi5rUInstLd/EIVNmIKA1Q9ynESmMBWPWd+7sdR+G4/wdu+Mppfep0XLyG2m7EBPvjCeFyrw==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-simple-access": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "dev": true, + "requires": { + "@babel/types": "^7.11.0" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", + "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helpers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.1.tgz", + "integrity": "sha512-9JoDSBGoWtmbay98efmT2+mySkwjzeFeAL9BuWNoVQpkPFQF8SIIFUfY5os9u8wVzglzoiPRSW7cuJmBDUt43g==", + "dev": true, + "requires": { + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1" + } + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.3.tgz", + "integrity": "sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.1.tgz", + "integrity": "sha512-MR7Ok+Af3OhNTCxYVjJZHS0t97ydnJZt/DbR4WISO39iDnhiD8XHrY12xuSJ90FFEGjir0Fzyyn7g/zY6hxbxA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", + "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", + "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4", + "globals": "^11.1.0" + }, + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz", + "integrity": "sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.1.tgz", + "integrity": "sha512-RmKejwnT0T0QzQUzcbP5p1VWlpnP8QHtdhEtLG55ZDQnJNalbF3eeDyu3dnGKvGzFIQiBzFhBYTwvv435p9Xpw==", + "dev": true, + "requires": { + "@babel/helper-builder-react-jsx": "^7.10.4", + "@babel/helper-builder-react-jsx-experimental": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.12.1" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.1.tgz", + "integrity": "sha512-IilcGWdN1yNgEGOrB96jbTplRh+V2Pz1EoEwsKsHfX1a/L40cUYuD71Zepa7C+ujv7kJIxnDftWeZbKNEqZjCQ==", + "dev": true, + "requires": { + "@babel/helper-builder-react-jsx-experimental": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.12.1" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.1.tgz", + "integrity": "sha512-FbpL0ieNWiiBB5tCldX17EtXgmzeEZjFrix72rQYeq9X6nUK38HCaxexzVQrZWXanxKJPKVVIU37gFjEQYkPkA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.1.tgz", + "integrity": "sha512-keQ5kBfjJNRc6zZN1/nVHCd6LLIHq4aUKcVnvE/2l+ZZROSbqoiGFRtT5t3Is89XJxBQaP7NLZX2jgGHdZvvFQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz", + "integrity": "sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", + "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", + "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/preset-env": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", + "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.1", + "@babel/helper-compilation-targets": "^7.12.1", + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.1", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.1", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.12.1", + "core-js-compat": "^3.6.2", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-react": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.12.1.tgz", + "integrity": "sha512-euCExymHCi0qB9u5fKw7rvlw7AZSjw/NaB9h7EkdTt5+yHRrXdiRTh7fkG3uBPpJg82CqLfp1LHLqWGSCrab+g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-transform-react-display-name": "^7.12.1", + "@babel/plugin-transform-react-jsx": "^7.12.1", + "@babel/plugin-transform-react-jsx-development": "^7.12.1", + "@babel/plugin-transform-react-jsx-self": "^7.12.1", + "@babel/plugin-transform-react-jsx-source": "^7.12.1", + "@babel/plugin-transform-react-pure-annotations": "^7.12.1" + } + }, + "@babel/runtime": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz", + "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.1.tgz", + "integrity": "sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.1", + "@babel/types": "^7.12.1", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + }, + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "@eslint/eslintrc": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.1.3.tgz", + "integrity": "sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + } + }, + "@firebase/analytics": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.6.0.tgz", + "integrity": "sha512-6qYEOPUVYrMhqvJ46Z5Uf1S4uULd6d7vGpMP5Qz+u8kIWuOQGcPdJKQap+Hla6Rq164or9gC2HRXuYXKlgWfpw==", + "dev": true, + "requires": { + "@firebase/analytics-types": "0.4.0", + "@firebase/component": "0.1.19", + "@firebase/installations": "0.4.17", + "@firebase/logger": "0.2.6", + "@firebase/util": "0.3.2", + "tslib": "^1.11.1" + } + }, + "@firebase/analytics-types": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.4.0.tgz", + "integrity": "sha512-Jj2xW+8+8XPfWGkv9HPv/uR+Qrmq37NPYT352wf7MvE9LrstpLVmFg3LqG6MCRr5miLAom5sen2gZ+iOhVDeRA==", + "dev": true + }, + "@firebase/app": { + "version": "0.6.11", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.6.11.tgz", + "integrity": "sha512-FH++PaoyTzfTAVuJ0gITNYEIcjT5G+D0671La27MU8Vvr6MTko+5YUZ4xS9QItyotSeRF4rMJ1KR7G8LSyySiA==", + "dev": true, + "requires": { + "@firebase/app-types": "0.6.1", + "@firebase/component": "0.1.19", + "@firebase/logger": "0.2.6", + "@firebase/util": "0.3.2", + "dom-storage": "2.1.0", + "tslib": "^1.11.1", + "xmlhttprequest": "1.8.0" + } + }, + "@firebase/app-types": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.6.1.tgz", + "integrity": "sha512-L/ZnJRAq7F++utfuoTKX4CLBG5YR7tFO3PLzG1/oXXKEezJ0kRL3CMRoueBEmTCzVb/6SIs2Qlaw++uDgi5Xyg==", + "dev": true + }, + "@firebase/auth": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.15.0.tgz", + "integrity": "sha512-IFuzhxS+HtOQl7+SZ/Mhaghy/zTU7CENsJFWbC16tv2wfLZbayKF5jYGdAU3VFLehgC8KjlcIWd10akc3XivfQ==", + "dev": true, + "requires": { + "@firebase/auth-types": "0.10.1" + } + }, + "@firebase/auth-interop-types": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.5.tgz", + "integrity": "sha512-88h74TMQ6wXChPA6h9Q3E1Jg6TkTHep2+k63OWg3s0ozyGVMeY+TTOti7PFPzq5RhszQPQOoCi59es4MaRvgCw==", + "dev": true, + "requires": {} + }, + "@firebase/auth-types": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.10.1.tgz", + "integrity": "sha512-/+gBHb1O9x/YlG7inXfxff/6X3BPZt4zgBv4kql6HEmdzNQCodIRlEYnI+/da+lN+dha7PjaFH7C7ewMmfV7rw==", + "dev": true, + "requires": {} + }, + "@firebase/component": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.1.19.tgz", + "integrity": "sha512-L0S3g8eqaerg8y0zox3oOHSTwn/FE8RbcRHiurnbESvDViZtP5S5WnhuAPd7FnFxa8ElWK0z1Tr3ikzWDv1xdQ==", + "dev": true, + "requires": { + "@firebase/util": "0.3.2", + "tslib": "^1.11.1" + } + }, + "@firebase/database": { + "version": "0.6.13", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.6.13.tgz", + "integrity": "sha512-NommVkAPzU7CKd1gyehmi3lz0K78q0KOfiex7Nfy7MBMwknLm7oNqKovXSgQV1PCLvKXvvAplDSFhDhzIf9obA==", + "dev": true, + "requires": { + "@firebase/auth-interop-types": "0.1.5", + "@firebase/component": "0.1.19", + "@firebase/database-types": "0.5.2", + "@firebase/logger": "0.2.6", + "@firebase/util": "0.3.2", + "faye-websocket": "0.11.3", + "tslib": "^1.11.1" + } + }, + "@firebase/database-types": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.5.2.tgz", + "integrity": "sha512-ap2WQOS3LKmGuVFKUghFft7RxXTyZTDr0Xd8y2aqmWsbJVjgozi0huL/EUMgTjGFrATAjcf2A7aNs8AKKZ2a8g==", + "dev": true, + "requires": { + "@firebase/app-types": "0.6.1" + } + }, + "@firebase/firestore": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-1.18.0.tgz", + "integrity": "sha512-maMq4ltkrwjDRusR2nt0qS4wldHQMp+0IDSfXIjC+SNmjnWY/t/+Skn9U3Po+dB38xpz3i7nsKbs+8utpDnPSw==", + "dev": true, + "requires": { + "@firebase/component": "0.1.19", + "@firebase/firestore-types": "1.14.0", + "@firebase/logger": "0.2.6", + "@firebase/util": "0.3.2", + "@firebase/webchannel-wrapper": "0.4.0", + "@grpc/grpc-js": "^1.0.0", + "@grpc/proto-loader": "^0.5.0", + "node-fetch": "2.6.1", + "tslib": "^1.11.1" + } + }, + "@firebase/firestore-types": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-1.14.0.tgz", + "integrity": "sha512-WF8IBwHzZDhwyOgQnmB0pheVrLNP78A8PGxk1nxb/Nrgh1amo4/zYvFMGgSsTeaQK37xMYS/g7eS948te/dJxw==", + "dev": true, + "requires": {} + }, + "@firebase/functions": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.5.1.tgz", + "integrity": "sha512-yyjPZXXvzFPjkGRSqFVS5Hc2Y7Y48GyyMH+M3i7hLGe69r/59w6wzgXKqTiSYmyE1pxfjxU4a1YqBDHNkQkrYQ==", + "dev": true, + "requires": { + "@firebase/component": "0.1.19", + "@firebase/functions-types": "0.3.17", + "@firebase/messaging-types": "0.5.0", + "node-fetch": "2.6.1", + "tslib": "^1.11.1" + } + }, + "@firebase/functions-types": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.3.17.tgz", + "integrity": "sha512-DGR4i3VI55KnYk4IxrIw7+VG7Q3gA65azHnZxo98Il8IvYLr2UTBlSh72dTLlDf25NW51HqvJgYJDKvSaAeyHQ==", + "dev": true + }, + "@firebase/installations": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.4.17.tgz", + "integrity": "sha512-AE/TyzIpwkC4UayRJD419xTqZkKzxwk0FLht3Dci8WI2OEKHSwoZG9xv4hOBZebe+fDzoV2EzfatQY8c/6Avig==", + "dev": true, + "requires": { + "@firebase/component": "0.1.19", + "@firebase/installations-types": "0.3.4", + "@firebase/util": "0.3.2", + "idb": "3.0.2", + "tslib": "^1.11.1" + } + }, + "@firebase/installations-types": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.3.4.tgz", + "integrity": "sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q==", + "dev": true, + "requires": {} + }, + "@firebase/logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.2.6.tgz", + "integrity": "sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw==", + "dev": true + }, + "@firebase/messaging": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.7.1.tgz", + "integrity": "sha512-iev/ST9v0xd/8YpGYrZtDcqdD9J6ZWzSuceRn8EKy5vIgQvW/rk2eTQc8axzvDpQ36ZfphMYuhW6XuNrR3Pd2Q==", + "dev": true, + "requires": { + "@firebase/component": "0.1.19", + "@firebase/installations": "0.4.17", + "@firebase/messaging-types": "0.5.0", + "@firebase/util": "0.3.2", + "idb": "3.0.2", + "tslib": "^1.11.1" + } + }, + "@firebase/messaging-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/messaging-types/-/messaging-types-0.5.0.tgz", + "integrity": "sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg==", + "dev": true, + "requires": {} + }, + "@firebase/performance": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.4.2.tgz", + "integrity": "sha512-irHTCVWJ/sxJo0QHg+yQifBeVu8ZJPihiTqYzBUz/0AGc51YSt49FZwqSfknvCN2+OfHaazz/ARVBn87g7Ex8g==", + "dev": true, + "requires": { + "@firebase/component": "0.1.19", + "@firebase/installations": "0.4.17", + "@firebase/logger": "0.2.6", + "@firebase/performance-types": "0.0.13", + "@firebase/util": "0.3.2", + "tslib": "^1.11.1" + } + }, + "@firebase/performance-types": { + "version": "0.0.13", + "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.0.13.tgz", + "integrity": "sha512-6fZfIGjQpwo9S5OzMpPyqgYAUZcFzZxHFqOyNtorDIgNXq33nlldTL/vtaUZA8iT9TT5cJlCrF/jthKU7X21EA==", + "dev": true + }, + "@firebase/polyfill": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@firebase/polyfill/-/polyfill-0.3.36.tgz", + "integrity": "sha512-zMM9oSJgY6cT2jx3Ce9LYqb0eIpDE52meIzd/oe/y70F+v9u1LDqk5kUF5mf16zovGBWMNFmgzlsh6Wj0OsFtg==", + "dev": true, + "requires": { + "core-js": "3.6.5", + "promise-polyfill": "8.1.3", + "whatwg-fetch": "2.0.4" + } + }, + "@firebase/remote-config": { + "version": "0.1.28", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.1.28.tgz", + "integrity": "sha512-4zSdyxpt94jAnFhO8toNjG8oMKBD+xTuBIcK+Nw8BdQWeJhEamgXlupdBARUk1uf3AvYICngHH32+Si/dMVTbw==", + "dev": true, + "requires": { + "@firebase/component": "0.1.19", + "@firebase/installations": "0.4.17", + "@firebase/logger": "0.2.6", + "@firebase/remote-config-types": "0.1.9", + "@firebase/util": "0.3.2", + "tslib": "^1.11.1" + } + }, + "@firebase/remote-config-types": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.1.9.tgz", + "integrity": "sha512-G96qnF3RYGbZsTRut7NBX0sxyczxt1uyCgXQuH/eAfUCngxjEGcZQnBdy6mvSdqdJh5mC31rWPO4v9/s7HwtzA==", + "dev": true + }, + "@firebase/storage": { + "version": "0.3.43", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.3.43.tgz", + "integrity": "sha512-Jp54jcuyimLxPhZHFVAhNbQmgTu3Sda7vXjXrNpPEhlvvMSq4yuZBR6RrZxe/OrNVprLHh/6lTCjwjOVSo3bWA==", + "dev": true, + "requires": { + "@firebase/component": "0.1.19", + "@firebase/storage-types": "0.3.13", + "@firebase/util": "0.3.2", + "tslib": "^1.11.1" + } + }, + "@firebase/storage-types": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.3.13.tgz", + "integrity": "sha512-pL7b8d5kMNCCL0w9hF7pr16POyKkb3imOW7w0qYrhBnbyJTdVxMWZhb0HxCFyQWC0w3EiIFFmxoz8NTFZDEFog==", + "dev": true, + "requires": {} + }, + "@firebase/util": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.3.2.tgz", + "integrity": "sha512-Dqs00++c8rwKky6KCKLLY2T1qYO4Q+X5t+lF7DInXDNF4ae1Oau35bkD+OpJ9u7l1pEv7KHowP6CUKuySCOc8g==", + "dev": true, + "requires": { + "tslib": "^1.11.1" + } + }, + "@firebase/webchannel-wrapper": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.4.0.tgz", + "integrity": "sha512-8cUA/mg0S+BxIZ72TdZRsXKBP5n5uRcE3k29TZhZw6oIiHBt9JA7CTb/4pE1uKtE/q5NeTY2tBDcagoZ+1zjXQ==", + "dev": true + }, + "@grpc/grpc-js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.1.7.tgz", + "integrity": "sha512-EuxMstI0u778dp0nk6Fe3gHXYPeV6FYsWOe0/QFwxv1NQ6bc5Wl/0Yxa4xl9uBlKElL6AIxuASmSfu7KEJhqiw==", + "dev": true, + "requires": { + "@grpc/proto-loader": "^0.6.0-pre14", + "@types/node": "^12.12.47", + "google-auth-library": "^6.0.0", + "semver": "^6.2.0" + }, + "dependencies": { + "@grpc/proto-loader": { + "version": "0.6.0-pre9", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.0-pre9.tgz", + "integrity": "sha512-oM+LjpEjNzW5pNJjt4/hq1HYayNeQT+eGrOPABJnYHv7TyNPDNzkQ76rDYZF86X5swJOa4EujEMzQ9iiTdPgww==", + "dev": true, + "requires": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^6.9.0", + "yargs": "^15.3.1" + } + }, + "@types/node": { + "version": "12.19.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.0.tgz", + "integrity": "sha512-4BVAE9yp5DU3ISqBInsaRp9J474HWNaNVs8eZ1Far3dI1MwS3Wk0EvBRMM4xBh3Oz+c05hUgJmcbtAVmG8bv7w==", + "dev": true + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "@grpc/proto-loader": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.5.5.tgz", + "integrity": "sha512-WwN9jVNdHRQoOBo9FDH7qU+mgfjPc8GygPYms3M+y3fbQLfnCe/Kv/E01t7JRgnrsOHH8euvSbed3mIalXhwqQ==", + "dev": true, + "requires": { + "lodash.camelcase": "^4.3.0", + "protobufjs": "^6.8.6" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=", + "dev": true + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "dev": true + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "dev": true + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=", + "dev": true + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "dev": true, + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=", + "dev": true + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=", + "dev": true + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=", + "dev": true + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=", + "dev": true + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=", + "dev": true + }, + "@types/anymatch": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", + "integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==", + "dev": true + }, + "@types/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", + "dev": true + }, + "@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", + "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", + "dev": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, + "@types/long": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", + "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==", + "dev": true + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "@types/node": { + "version": "14.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.2.tgz", + "integrity": "sha512-jeYJU2kl7hL9U5xuI/BhKPZ4vqGM/OmK6whiFAXVhlstzZhVamWhDSmHyGLIp+RVyuF9/d0dqr2P85aFj4BvJg==", + "dev": true + }, + "@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", + "dev": true + }, + "@types/socket.io-client": { + "version": "1.4.34", + "resolved": "https://registry.npmjs.org/@types/socket.io-client/-/socket.io-client-1.4.34.tgz", + "integrity": "sha512-Lzia5OTQFJZJ5R4HsEEldywiiqT9+W2rDbyHJiiTGqOcju89sCsQ8aUXDljY6Ls33wKZZGC0bfMhr/VpOyjtXg==", + "dev": true + }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "dev": true + }, + "@types/tapable": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.6.tgz", + "integrity": "sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==", + "dev": true + }, + "@types/uglify-js": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.11.0.tgz", + "integrity": "sha512-I0Yd8TUELTbgRHq2K65j8rnDPAzAP+DiaF/syLem7yXwYLsHZhPd+AM2iXsWmf9P2F2NlFCgl5erZPQx9IbM9Q==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + } + }, + "@types/webpack": { + "version": "4.41.23", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.23.tgz", + "integrity": "sha512-ojA4CupZg8RCzVJLugWlvqrHpT59GWhqFxbinlsnvk10MjQCWB+ot7XDACctbWhnhtdhYK7+HOH1JxkVLiZhMg==", + "dev": true, + "requires": { + "@types/anymatch": "*", + "@types/node": "*", + "@types/tapable": "*", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "source-map": "^0.6.0" + } + }, + "@types/webpack-sources": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.0.0.tgz", + "integrity": "sha512-a5kPx98CNFRKQ+wqawroFunvFqv7GHm/3KOI52NY9xWADgc8smu4R6prt4EU/M4QfVjvgBkMqU4fBhw3QfMVkg==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "@typescript-eslint/eslint-plugin": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.10.1.tgz", + "integrity": "sha512-PQg0emRtzZFWq6PxBcdxRH3QIQiyFO3WCVpRL3fgj5oQS3CDs3AeAKfv4DxNhzn8ITdNJGJ4D3Qw8eAJf3lXeQ==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "3.10.1", + "debug": "^4.1.1", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz", + "integrity": "sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/types": "3.10.1", + "@typescript-eslint/typescript-estree": "3.10.1", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.10.1.tgz", + "integrity": "sha512-Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw==", + "dev": true, + "requires": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "3.10.1", + "@typescript-eslint/types": "3.10.1", + "@typescript-eslint/typescript-estree": "3.10.1", + "eslint-visitor-keys": "^1.1.0" + } + }, + "@typescript-eslint/types": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz", + "integrity": "sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz", + "integrity": "sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "3.10.1", + "@typescript-eslint/visitor-keys": "3.10.1", + "debug": "^4.1.1", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz", + "integrity": "sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true, + "requires": {} + }, + "adjust-sourcemap-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz", + "integrity": "sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "dependencies": { + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "agent-base": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.1.tgz", + "integrity": "sha512-01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true, + "requires": {} + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arity-n": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz", + "integrity": "sha1-2edrEXM+CFacCEeuezmyhgswt0U=", + "dev": true + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "dev": true + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "asset-config-webpack-plugin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/asset-config-webpack-plugin/-/asset-config-webpack-plugin-2.0.0.tgz", + "integrity": "sha512-iO62Liw2iT3bSTzRwxTv8su6xMZOr3aiIbISlDzpdQMDztVMPTDXYl/+XcLyZXJbTZ9OUSMyXzPT27PSM4eeXQ==", + "dev": true, + "requires": { + "font-config-webpack-plugin": "^2.0.0", + "image-config-webpack-plugin": "^2.0.0" + } + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "9.8.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", + "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz", + "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==", + "dev": true + }, + "axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "dev": true, + "requires": { + "follow-redirects": "1.5.10" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "dev": true, + "requires": { + "debug": "=3.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-loader": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", + "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", + "dev": true, + "requires": { + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "base64-arraybuffer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", + "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", + "dev": true + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "bignumber.js": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", + "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", + "dev": true + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", + "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.14.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.5.tgz", + "integrity": "sha512-Z+vsCZIvCBvqLoYkBFTwEYH3v5MCQbsAjp50ERycpOjnPmolg1Gjy4+KaWWpm8QOJt9GHkhdqAl14NpCX73CWA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001135", + "electron-to-chromium": "^1.3.571", + "escalade": "^3.1.0", + "node-releases": "^1.1.61" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "cache-loader": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-1.2.5.tgz", + "integrity": "sha512-enWKEQ4kO3YreDFd7AtVRjtJBmNiqh/X9hVDReu0C4qm8gsGmySkwuWtdc+N5O+vq5FzxL1mIZc30NyXCB7o/Q==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "mkdirp": "^0.5.1", + "neo-async": "^2.5.0", + "schema-utils": "^0.4.2" + } + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camel-case": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.1.tgz", + "integrity": "sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==", + "dev": true, + "requires": { + "pascal-case": "^3.1.1", + "tslib": "^1.10.0" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001150", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001150.tgz", + "integrity": "sha512-kiNKvihW0m36UhAFnl7bOAv0i1K1f6wpfVtTF5O5O82XzgtBnb05V0XeV3oZ968vfg2sRNChsHw8ASH2hDfoYQ==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "cheerio": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz", + "integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==", + "dev": true, + "requires": { + "css-select": "~1.2.0", + "dom-serializer": "~0.1.1", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash": "^4.15.0", + "parse5": "^3.0.1" + }, + "dependencies": { + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "dev": true, + "requires": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "dev": true, + "requires": { + "@types/node": "*" + } + } + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + } + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + } + }, + "clean-webpack-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz", + "integrity": "sha512-MciirUH5r+cYLGCOL5JX/ZLzOZbVr1ot3Fw+KcvbhUb6PM+yycqd9ZhIlcigQ5gl+XhppNmw3bEFuaaMNyLj3A==", + "dev": true, + "requires": { + "@types/webpack": "^4.4.31", + "del": "^4.1.1" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", + "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.4" + }, + "dependencies": { + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + } + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "color-string": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz", + "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, + "common-config-webpack-plugin": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/common-config-webpack-plugin/-/common-config-webpack-plugin-2.0.1.tgz", + "integrity": "sha512-zclDlu6t2pltj2rlY8cF/oWTx5hXP9FLgZ0TKYWZGgfSVWUpjQ3hj9Vs0fbYB7zwDawFp3Ts+YIQxzNSN94Bnw==", + "dev": true, + "requires": { + "@babel/core": "^7.2.2", + "@babel/preset-env": "^7.2.3", + "@babel/preset-react": "^7.0.0", + "asset-config-webpack-plugin": "^2.0.0", + "js-config-webpack-plugin": "^2.0.1", + "scss-config-webpack-plugin": "^2.0.0", + "ts-config-webpack-plugin": "^2.0.0", + "typescript": "^3.8.3" + }, + "dependencies": { + "typescript": { + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", + "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", + "dev": true + } + } + }, + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "compose-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz", + "integrity": "sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8=", + "dev": true, + "requires": { + "arity-n": "^1.0.4" + } + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", + "dev": true + }, + "core-js-compat": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "dev": true, + "requires": { + "browserslist": "^4.8.5", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.1.tgz", + "integrity": "sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "css-selector-tokenizer": "^0.7.0", + "icss-utils": "^2.1.0", + "loader-utils": "^1.0.2", + "lodash": "^4.17.11", + "postcss": "^6.0.23", + "postcss-modules-extract-imports": "^1.2.0", + "postcss-modules-local-by-default": "^1.2.0", + "postcss-modules-scope": "^1.1.0", + "postcss-modules-values": "^1.3.0", + "postcss-value-parser": "^3.3.0", + "source-list-map": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "css-selector-tokenizer": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true + }, + "csso": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", + "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", + "dev": true, + "requires": { + "css-tree": "1.0.0-alpha.39" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "dev": true, + "requires": { + "mdn-data": "2.0.6", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", + "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==", + "dev": true + } + } + }, + "cubic2quad": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cubic2quad/-/cubic2quad-1.1.1.tgz", + "integrity": "sha1-abGcYaP1tB7PLx1fro+wNBWqixU=", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "detect-indent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz", + "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==", + "dev": true + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "diff-match-patch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz", + "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + }, + "dependencies": { + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + } + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.2.tgz", + "integrity": "sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA==", + "dev": true + } + } + }, + "dom-storage": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz", + "integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q==", + "dev": true + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.3.tgz", + "integrity": "sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA==", + "dev": true, + "requires": { + "no-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.582", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.582.tgz", + "integrity": "sha512-0nCJ7cSqnkMC+kUuPs0YgklFHraWGl/xHqtZWWtOeVtyi+YqkoAOMGuZQad43DscXCQI/yizcTa3u6B5r+BLww==", + "dev": true + }, + "elliptic": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", + "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "engine.io-client": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.4.tgz", + "integrity": "sha512-iU4CRr38Fecj8HoZEnFtm2EiKGbYZcPn3cHxqNGl/tmdWRf60KhK+9vE0JeSjgnlS/0oynEfLgKbT9ALpim0sQ==", + "dev": true, + "requires": { + "component-emitter": "~1.3.0", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.2.0", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "ws": "~6.1.0", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "engine.io-parser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", + "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.4", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "enhanced-resolve": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", + "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.11.0.tgz", + "integrity": "sha512-G9+qtYVCHaDi1ZuWzBsOWo2wSwd70TXnU6UHA3cTYHp7gCTXZcpggWFoUVAMRarg68qtPoNfFbzPh+VdOgmwmw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@eslint/eslintrc": "^0.1.3", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.0", + "esquery": "^1.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true + } + } + }, + "eslint-config-prettier": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.14.0.tgz", + "integrity": "sha512-DbVwh0qZhAC7CNDWcq8cBdK6FcVHiMTKmCypOPWeZkp9hJ8xYwTaWSa6bb6cjfi8KOeJy0e9a8Izxyx+O4+gCQ==", + "dev": true, + "requires": { + "get-stdin": "^6.0.0" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-module-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-plugin-import": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", + "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", + "dev": true, + "requires": { + "array-includes": "^3.1.1", + "array.prototype.flat": "^1.2.3", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.4", + "eslint-module-utils": "^2.6.0", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.1", + "read-pkg-up": "^2.0.0", + "resolve": "^1.17.0", + "tsconfig-paths": "^3.9.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-plugin-json-format": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-json-format/-/eslint-plugin-json-format-2.0.1.tgz", + "integrity": "sha512-eWT0sNqIEYzKqbej2dvz+/oQ4JQxthE3i+izjInIdfbsPfVgBtiWbmagkgKStje0LJqo9FATx1LWl6xcuxqsBQ==", + "dev": true, + "requires": { + "common-tags": "^1.8.0", + "debug": "^4.1.1", + "diff-match-patch": "^1.0.4", + "json-fixer": "^1.3.2", + "line-column": "^1.0.2", + "lodash": "^4.17.15", + "minimatch": "^3.0.4", + "sort-package-json": "^1.22.1" + } + }, + "eslint-plugin-prettier": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz", + "integrity": "sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-plugin-unused-imports": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-0.1.3.tgz", + "integrity": "sha512-hNbmvUhfy+Nf+9t2Sx720FsFRMkpWLaN5QSw0yUyplcOugvnRaLg9ylAK6DFu/S3J+IiPiHueZHKJh7lhggAXA==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "^2.3.0", + "eslint": "^6.3.0", + "eslint-rule-composer": "^0.3.0", + "requireindex": "~1.1.0", + "typescript": "^3.6.3" + }, + "dependencies": { + "@typescript-eslint/eslint-plugin": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz", + "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "2.34.0", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz", + "integrity": "sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + } + }, + "@typescript-eslint/typescript-estree": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz", + "integrity": "sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "eslint-visitor-keys": "^1.1.0", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + } + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "typescript": { + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", + "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "eslint-rule-composer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", + "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "espree": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz", + "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.3.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz", + "integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-glob": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", + "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fast-text-encoding": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz", + "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig==", + "dev": true + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "fastq": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", + "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-2.0.0.tgz", + "integrity": "sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "firebase": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-7.24.0.tgz", + "integrity": "sha512-j6jIyGFFBlwWAmrlUg9HyQ/x+YpsPkc/TTkbTyeLwwAJrpAmmEHNPT6O9xtAnMV4g7d3RqLL/u9//aZlbY4rQA==", + "dev": true, + "requires": { + "@firebase/analytics": "0.6.0", + "@firebase/app": "0.6.11", + "@firebase/app-types": "0.6.1", + "@firebase/auth": "0.15.0", + "@firebase/database": "0.6.13", + "@firebase/firestore": "1.18.0", + "@firebase/functions": "0.5.1", + "@firebase/installations": "0.4.17", + "@firebase/messaging": "0.7.1", + "@firebase/performance": "0.4.2", + "@firebase/polyfill": "0.3.36", + "@firebase/remote-config": "0.1.28", + "@firebase/storage": "0.3.43", + "@firebase/util": "0.3.2" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "follow-redirects": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", + "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==", + "dev": true + }, + "font-config-webpack-plugin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/font-config-webpack-plugin/-/font-config-webpack-plugin-2.0.0.tgz", + "integrity": "sha512-+AZftm5hsUbPN/EzSIvETvcCpAYi3NOf3RlijUNrXo8QIyJvyDmkm2zG1JPHPS0v0dALEI5HUvY1pCRQyPLNHg==", + "dev": true, + "requires": { + "cache-loader": "^1.2.2", + "file-loader": "^2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "fork-ts-checker-webpack-plugin": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-0.5.2.tgz", + "integrity": "sha512-a5IG+xXyKnpruI0CP/anyRLAoxWtp3lzdG6flxicANnoSzz64b12dJ7ASAVRrI2OaWwZR2JyBaMHFQqInhWhIw==", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "chalk": "^2.4.1", + "chokidar": "^2.0.4", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "tapable": "^1.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "gaxios": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-3.2.0.tgz", + "integrity": "sha512-+6WPeVzPvOshftpxJwRi2Ozez80tn/hdtOUag7+gajDHRJvAblKxTFSSMPtr2hmnLy7p0mvYz0rMXLBl8pSO7Q==", + "dev": true, + "requires": { + "abort-controller": "^3.0.0", + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.3.0" + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, + "gcp-metadata": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.2.0.tgz", + "integrity": "sha512-vQZD57cQkqIA6YPGXM/zc+PIZfNRFdukWGsGZ5+LcJzesi5xp6Gn7a02wRJi4eXPyArNMIYpPET4QMxGqtlk6Q==", + "dev": true, + "requires": { + "gaxios": "^3.0.0", + "json-bigint": "^1.0.0" + } + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true + }, + "geometry-interfaces": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/geometry-interfaces/-/geometry-interfaces-1.1.4.tgz", + "integrity": "sha512-qD6OdkT6NcES9l4Xx3auTpwraQruU7dARbQPVO71MKvkGYw5/z/oIiGymuFXrRaEQa5Y67EIojUpaLeGEa5hGA==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "git-hooks-list": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/git-hooks-list/-/git-hooks-list-1.0.3.tgz", + "integrity": "sha512-Y7wLWcrLUXwk2noSka166byGCvhMtDRpgHdzCno1UQv/n/Hegp++a2xBWJL1lJarnKD3SWaljD+0z1ztqxuKyQ==", + "dev": true + }, + "gl-matrix": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.3.0.tgz", + "integrity": "sha512-COb7LDz+SXaHtl/h4LeaFcNdJdAQSDeVqjiIihSXNrkWObZLhDI4hIkZC11Aeqp7bcE72clzB0BnDXr2SmslRA==", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "globule": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz", + "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + } + }, + "google-auth-library": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-6.1.2.tgz", + "integrity": "sha512-X9EUX8R+kIpsf55KdSPhFWF0RNyBGuBc1zeYc/5Sjuk65eIYqq91rINJVBD22pp+w/PuM2fasHiA6H2xYjxTIQ==", + "dev": true, + "requires": { + "arrify": "^2.0.0", + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "fast-text-encoding": "^1.0.0", + "gaxios": "^3.0.0", + "gcp-metadata": "^4.2.0", + "gtoken": "^5.0.4", + "jws": "^4.0.0", + "lru-cache": "^6.0.0" + } + }, + "google-p12-pem": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.0.3.tgz", + "integrity": "sha512-wS0ek4ZtFx/ACKYF3JhyGe5kzH7pgiQ7J5otlumqR9psmWMYc+U9cErKlCYVYHoUaidXHdZ2xbo34kB+S+24hA==", + "dev": true, + "requires": { + "node-forge": "^0.10.0" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "gtoken": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.0.4.tgz", + "integrity": "sha512-U9wnSp4GZ7ov6zRdPuRHG4TuqEWqRRgT1gfXGNArhzBUn9byrPeH8uTmBWU/ZiWJJvTEmkjhDIC3mqHWdVi3xQ==", + "dev": true, + "requires": { + "gaxios": "^3.0.0", + "google-p12-pem": "^3.0.3", + "jws": "^4.0.0", + "mime": "^2.2.0" + } + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dev": true, + "requires": { + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, + "html-entities": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", + "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==", + "dev": true + }, + "html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "dev": true, + "requires": { + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" + } + }, + "html-webpack-inline-svg-plugin": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/html-webpack-inline-svg-plugin/-/html-webpack-inline-svg-plugin-2.3.0.tgz", + "integrity": "sha512-NMeirc/kQX2/5qwr6fYrWwqYQsQt5ZcasgR2Jpm04fgZLr1eVm55cetgd5Dr/w7TyEYb+ZlWhAugZCktbgbUNw==", + "dev": true, + "requires": { + "axios": "^0.19.2", + "chalk": "^4.1.0", + "cheerio": "^1.0.0-rc.3", + "lodash": "^4.17.19", + "parse5": "^6.0.1", + "svgo": "^1.3.2" + } + }, + "html-webpack-plugin": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz", + "integrity": "sha512-MouoXEYSjTzCrjIxWwg8gxL5fE2X2WZJLmBYXlaJhQUH5K/b5OrqmV7T4dB7iu0xkmJ6JlUuV6fFVtnqbPopZw==", + "dev": true, + "requires": { + "@types/html-minifier-terser": "^5.0.0", + "@types/tapable": "^1.0.5", + "@types/webpack": "^4.41.8", + "html-minifier-terser": "^5.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.15", + "pretty-error": "^2.1.1", + "tapable": "^1.1.3", + "util.promisify": "1.0.0" + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.2.tgz", + "integrity": "sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "iconfont-webpack-plugin": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/iconfont-webpack-plugin/-/iconfont-webpack-plugin-4.2.2.tgz", + "integrity": "sha512-gr2ujb7/vTnsgOXFiv1rUrpdiMWarfvX2crYrD/XysYFrdEyieMNrzK14twlU0UVvUAiJ1LyR0Akc4iXcwd8dA==", + "dev": true, + "requires": { + "loader-utils": "1.4.0", + "postcss": "7.0.27", + "svg2ttf": "4.3.0", + "svgicons2svgfont": "9.1.1", + "ttf2woff": "2.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "7.0.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", + "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "dev": true, + "requires": { + "postcss": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "idb": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz", + "integrity": "sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw==", + "dev": true + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "image-config-webpack-plugin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/image-config-webpack-plugin/-/image-config-webpack-plugin-2.0.0.tgz", + "integrity": "sha512-+uey8BHhHoOyXwl3kFACjNT+JbUDWmX8BFKGR4cjVuLcBdhaD617xQB3+aoUQVxSSDdGo91ASslZnEsF9Z2Ddw==", + "dev": true, + "requires": { + "cache-loader": "^1.2.2", + "file-loader": "^2.0.0", + "url-loader": "^1.0.1" + } + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "in-publish": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", + "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "dev": true + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-core-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.0.0.tgz", + "integrity": "sha512-jq1AH6C8MuteOoBPwkxHafmByhL9j5q4OaPGdbuD+ZtQJVzH+i6E3BJDQcBA09k57i2Hh2yQbEG8yObZ0jdlWw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negative-zero": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", + "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, + "js-config-webpack-plugin": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/js-config-webpack-plugin/-/js-config-webpack-plugin-2.0.1.tgz", + "integrity": "sha512-d2VbPV+xJaorwWbLQjI9be9bQ2q8Z4RdTqxV5UIZ0v/aPfcZyGdZ+ESKu6uwJViSOW85ASv9UrMx3iOzkIWv4w==", + "dev": true, + "requires": { + "babel-loader": "^8.0.0-beta.4", + "thread-loader": "^2.1.1" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "dev": true, + "requires": { + "bignumber.js": "^9.0.0" + } + }, + "json-fixer": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/json-fixer/-/json-fixer-1.6.5.tgz", + "integrity": "sha512-ewOhCI/b7Wx0DtO7ZhDp4SW5sjvp5dBWoeGnjta7mXPrvopvcE6TYGIqo+XREhzr/hKz7Bf3e2C0TSuoGFxAYA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.11.2", + "chalk": "^4.1.0", + "pegjs": "^0.10.0" + } + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "dev": true, + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dev": true, + "requires": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "last-call-webpack-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", + "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", + "dev": true, + "requires": { + "lodash": "^4.17.5", + "webpack-sources": "^1.1.0" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "line-column": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/line-column/-/line-column-1.0.2.tgz", + "integrity": "sha1-0lryk2tvSEkXKzEuR5LR2Ye8NKI=", + "dev": true, + "requires": { + "isarray": "^1.0.0", + "isobject": "^2.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true, + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._bindcallback": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=", + "dev": true + }, + "lodash._createassigner": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", + "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", + "dev": true, + "requires": { + "lodash._bindcallback": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash.restparam": "^3.0.0" + } + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", + "dev": true + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "loglevel": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.0.tgz", + "integrity": "sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ==", + "dev": true + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lower-case": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", + "integrity": "sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "microbuffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/microbuffer/-/microbuffer-1.0.0.tgz", + "integrity": "sha1-izgy7UDIfVH0e7I0kTppinVtGdI=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", + "dev": true + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "dev": true + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "dev": true, + "requires": { + "mime-db": "1.44.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", + "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "nan": { + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "neatequal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/neatequal/-/neatequal-1.0.0.tgz", + "integrity": "sha1-LuEhG8n6bkxVcV/SELsFYC6xrjs=", + "dev": true, + "requires": { + "varstream": "^0.3.2" + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "no-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.3.tgz", + "integrity": "sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==", + "dev": true, + "requires": { + "lower-case": "^2.0.1", + "tslib": "^1.10.0" + } + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true + }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true + }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + } + } + }, + "node-releases": { + "version": "1.1.64", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.64.tgz", + "integrity": "sha512-Iec8O9166/x2HRMJyLLLWkd0sFFLrFNy+Xf+JQfSQsdBJzPcHpNl3JQ9gD4j+aJxmCa25jNsIbM4bmACtSbkSg==", + "dev": true + }, + "node-sass": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz", + "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", + "dev": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash": "^4.17.15", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.13.2", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "2.2.5", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true + }, + "object-is": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.3.tgz", + "integrity": "sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-path": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.9.2.tgz", + "integrity": "sha1-D9mnT8X60a45aLWGvaXGMr1sBaU=", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "object.assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.1.tgz", + "integrity": "sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.0", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optimize-css-assets-webpack-plugin": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz", + "integrity": "sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A==", + "dev": true, + "requires": { + "cssnano": "^4.1.10", + "last-call-webpack-plugin": "^3.0.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dev": true, + "requires": { + "retry": "^0.12.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "param-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.3.tgz", + "integrity": "sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA==", + "dev": true, + "requires": { + "dot-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "parseqs": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", + "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==", + "dev": true + }, + "parseuri": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", + "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==", + "dev": true + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascal-case": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.1.tgz", + "integrity": "sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA==", + "dev": true, + "requires": { + "no-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "pbkdf2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pegjs": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/pegjs/-/pegjs-0.10.0.tgz", + "integrity": "sha1-z4uvrm7d/0tafvsYUmnqr0YQ3b0=", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-calc": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-flexbugs-fixes": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz", + "integrity": "sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ==", + "dev": true, + "requires": { + "postcss": "^7.0.26" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-load-config": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", + "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz", + "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==", + "dev": true, + "requires": { + "postcss": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "dev": true, + "requires": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-safe-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", + "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", + "dev": true, + "requires": { + "postcss": "^7.0.26" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-selector-parser": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", + "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "prettier": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.1.2.tgz", + "integrity": "sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==", + "dev": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "pretty-error": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", + "dev": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^2.0.4" + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promise-polyfill": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.1.3.tgz", + "integrity": "sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g==", + "dev": true + }, + "protobufjs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.10.1.tgz", + "integrity": "sha512-pb8kTchL+1Ceg4lFd5XUpK8PdWacbvV5SK2ULH2ebrYtl4GjJmS24m6CKME67jzV53tbJxHlnNOSqQHbTsR9JQ==", + "dev": true, + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": "^13.7.0", + "long": "^4.0.0" + }, + "dependencies": { + "@types/node": { + "version": "13.13.28", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.28.tgz", + "integrity": "sha512-EM/qFeRH8ZCD+TlsaIPULyyFm9vOhFIvgskY2JmHbEsWsOPgN+rtjSXrcHGgJpob4Nu17VfO95FKewr0XY7iOQ==", + "dev": true + } + } + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + } + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "regenerate": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", + "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "regex-parser": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", + "dev": true + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, + "regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "renderkid": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.4.tgz", + "integrity": "sha512-K2eXrSOJdq+HuKzlcjOlGoOarUu5SDguDEhE7+Ah4zuOWL40j8A/oHvLlLob9PSTNvVnBd+/q0Er1QfpEuem5g==", + "dev": true, + "requires": { + "css-select": "^1.1.0", + "dom-converter": "^0.2", + "htmlparser2": "^3.3.0", + "lodash": "^4.17.20", + "strip-ansi": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "requireindex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.1.0.tgz", + "integrity": "sha1-5UBLgVV+91225JxacgBIk/4D4WI=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", + "dev": true + }, + "resolve": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz", + "integrity": "sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==", + "dev": true, + "requires": { + "is-core-module": "^2.0.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "dependencies": { + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "resolve-url-loader": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz", + "integrity": "sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ==", + "dev": true, + "requires": { + "adjust-sourcemap-loader": "3.0.0", + "camelcase": "5.3.1", + "compose-function": "3.0.3", + "convert-source-map": "1.7.0", + "es6-iterator": "2.0.3", + "loader-utils": "1.2.3", + "postcss": "7.0.21", + "rework": "1.0.1", + "rework-visit": "1.0.0", + "source-map": "0.6.1" + }, + "dependencies": { + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + } + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rework": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", + "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", + "dev": true, + "requires": { + "convert-source-map": "^0.3.3", + "css": "^2.0.0" + }, + "dependencies": { + "convert-source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", + "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=", + "dev": true + } + } + }, + "rework-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", + "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", + "dev": true + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sass-graph": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz", + "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^13.3.2" + } + }, + "sass-loader": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", + "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.2.3", + "neo-async": "^2.6.1", + "schema-utils": "^2.6.1", + "semver": "^6.3.0" + }, + "dependencies": { + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + }, + "scss-config-webpack-plugin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/scss-config-webpack-plugin/-/scss-config-webpack-plugin-2.0.0.tgz", + "integrity": "sha512-NwVdjqZqcN8f6FTKXDgT+KNoSrdWI7EvYH2eJpEo0gJAun7qDf83OJMYzhANrKHCx8myt1kSDIQ5JL5Zl3iMeQ==", + "dev": true, + "requires": { + "autoprefixer": "^9.4.3", + "css-loader": "^1.0.0", + "iconfont-webpack-plugin": "4.2.2", + "mini-css-extract-plugin": "0.9.0", + "node-sass": "^4.9.0", + "optimize-css-assets-webpack-plugin": "^5.0.0", + "postcss-flexbugs-fixes": "^4.1.0", + "postcss-loader": "^3.0.0", + "postcss-safe-parser": "^4.0.1", + "resolve-url-loader": "^2.3.0", + "sass-loader": "8.0.2", + "style-loader": "1.1.3" + }, + "dependencies": { + "adjust-sourcemap-loader": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-1.2.0.tgz", + "integrity": "sha512-958oaHHVEXMvsY7v7cC5gEkNIcoaAVIhZ4mBReYVZJOTP9IgKmzLjIOhTtzpLMu+qriXvLsVjJ155EeInp45IQ==", + "dev": true, + "requires": { + "assert": "^1.3.0", + "camelcase": "^1.2.1", + "loader-utils": "^1.1.0", + "lodash.assign": "^4.0.1", + "lodash.defaults": "^3.1.2", + "object-path": "^0.9.2", + "regex-parser": "^2.2.9" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "lodash.defaults": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-3.1.2.tgz", + "integrity": "sha1-xzCLGNv4vJNy1wGnNJPGEZK9Liw=", + "dev": true, + "requires": { + "lodash.assign": "^3.0.0", + "lodash.restparam": "^3.0.0" + }, + "dependencies": { + "lodash.assign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", + "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", + "dev": true, + "requires": { + "lodash._baseassign": "^3.0.0", + "lodash._createassigner": "^3.0.0", + "lodash.keys": "^3.0.0" + } + } + } + } + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "resolve-url-loader": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-2.3.2.tgz", + "integrity": "sha512-sc/UVgiADdoTc+4cGPB7cUCnlEkzlxD1NXHw4oa9qA0fp30H8mAQ2ePJBP9MQ029DUuhEPouhNdvzT37pBCV0g==", + "dev": true, + "requires": { + "adjust-sourcemap-loader": "^1.1.0", + "camelcase": "^4.1.0", + "convert-source-map": "^1.5.1", + "loader-utils": "^1.1.0", + "lodash.defaults": "^4.0.0", + "rework": "^1.0.1", + "rework-visit": "^1.0.0", + "source-map": "^0.5.7", + "urix": "^0.1.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "sdf-2d": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/sdf-2d/-/sdf-2d-0.6.0.tgz", + "integrity": "sha512-k6osouD30i1/sLCYJeAINwKe159SCwM4JQJMw3YIY2MxvKKrxQy2+djTIfUd8YvBQCHN4u/0bULmNBmw9DDO6w==", + "dev": true, + "requires": { + "gl-matrix": "^3.3.0" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", + "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", + "dev": true, + "requires": { + "node-forge": "^0.10.0" + } + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "socket.io-client": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.1.tgz", + "integrity": "sha512-YXmXn3pA8abPOY//JtYxou95Ihvzmg8U6kQyolArkIyLd0pgVhrfor/iMsox8cn07WCOOvvuJ6XKegzIucPutQ==", + "dev": true, + "requires": { + "backo2": "1.0.2", + "component-bind": "1.0.0", + "component-emitter": "~1.3.0", + "debug": "~3.1.0", + "engine.io-client": "~3.4.0", + "has-binary2": "~1.0.2", + "indexof": "0.0.1", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "socket.io-parser": "~3.3.0", + "to-array": "0.1.4" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "socket.io-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.1.tgz", + "integrity": "sha512-1QLvVAe8dTz+mKmZ07Swxt+LAo4Y1ff50rlyoEx00TQmDFVQYPfcqGvIDJLGaBdhdNCecXtyKpD+EgKGcmmbuQ==", + "dev": true, + "requires": { + "component-emitter": "~1.3.0", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "sockjs": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", + "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.4.0", + "websocket-driver": "0.6.5" + }, + "dependencies": { + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "websocket-driver": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", + "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", + "dev": true, + "requires": { + "websocket-extensions": ">=0.1.1" + } + } + } + }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "sort-object-keys": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sort-object-keys/-/sort-object-keys-1.1.3.tgz", + "integrity": "sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==", + "dev": true + }, + "sort-package-json": { + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-1.46.0.tgz", + "integrity": "sha512-Fn5iiGKkATkEOQ0rol45dClfvNNW3r6PZ87mU4rbpz/M0Dxz+0D6oEU8nfpwUB5rd8u+WzsH2BQ/kRDwz+yVDQ==", + "dev": true, + "requires": { + "detect-indent": "^6.0.0", + "detect-newline": "3.1.0", + "git-hooks-list": "1.0.3", + "globby": "10.0.0", + "is-plain-obj": "2.1.0", + "sort-object-keys": "^1.1.3" + }, + "dependencies": { + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "globby": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.0.tgz", + "integrity": "sha512-3LifW9M4joGZasyYPz2A1U74zbC/45fvpXUvO/9KbSa+VV0aGZarWkfdgKyR9sExNP0t0x0ss/UMJpNpcaTspw==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + } + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + } + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-loader": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.1.1.tgz", + "integrity": "sha512-m2HjSWP2R1yR9P31e4+ciGHFOPvW6GmqHgZkneOkrME2VvWysXTGi4o0yS28iKWWP3vAUmAoa+3x5ZRI2BIX6A==", + "dev": true, + "requires": { + "abab": "^2.0.5", + "iconv-lite": "^0.6.2", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "source-map": "^0.6.1", + "whatwg-mimetype": "^2.3.0" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz", + "integrity": "sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "string.fromcodepoint": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string.fromcodepoint/-/string.fromcodepoint-0.2.1.tgz", + "integrity": "sha1-jZeDM8C8klOPUPOD5IiPPlYZ1lM=", + "dev": true + }, + "string.prototype.codepointat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", + "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==", + "dev": true + }, + "string.prototype.trimend": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz", + "integrity": "sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "string.prototype.trimstart": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz", + "integrity": "sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + }, + "dependencies": { + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + } + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "style-loader": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.1.3.tgz", + "integrity": "sha512-rlkH7X/22yuwFYK357fMN/BxYOorfnfq0eD7+vqlemSK4wEcejFF1dg4zxP0euBW8NrYx2WZzZ8PPFevr7D+Kw==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.6.4" + }, + "dependencies": { + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "svg-pathdata": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-5.0.5.tgz", + "integrity": "sha512-TAAvLNSE3fEhyl/Da19JWfMAdhSXTYeviXsLSoDT1UM76ADj5ndwAPX1FKQEgB/gFMPavOy6tOqfalXKUiXrow==", + "dev": true + }, + "svg2ttf": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/svg2ttf/-/svg2ttf-4.3.0.tgz", + "integrity": "sha512-LZ0B7zzHWLWbzLzwaKGHQvPOuxCXLReIb3LSxFSGUy1gMw2Utk6KGNbTmbmRL6Rk1qDSmTixnDrQgnXaL9n0CA==", + "dev": true, + "requires": { + "argparse": "^1.0.6", + "cubic2quad": "^1.0.0", + "lodash": "^4.17.10", + "microbuffer": "^1.0.0", + "svgpath": "^2.1.5", + "xmldom": "~0.1.22" + } + }, + "svgicons2svgfont": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/svgicons2svgfont/-/svgicons2svgfont-9.1.1.tgz", + "integrity": "sha512-iOj7lqHP/oMrLg7S2Iv89LOJUfmIuePefXcs5ul4IsKwcYvL/T/Buahz+nQQJygyuvEMBBXqnCRmnvJggHeJzA==", + "dev": true, + "requires": { + "commander": "^2.12.2", + "geometry-interfaces": "^1.1.4", + "glob": "^7.1.2", + "neatequal": "^1.0.0", + "readable-stream": "^2.3.3", + "sax": "^1.2.4", + "string.fromcodepoint": "^0.2.1", + "string.prototype.codepointat": "^0.2.0", + "svg-pathdata": "^5.0.0", + "transformation-matrix-js": "^2.7.1" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "dev": true + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "svgpath": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/svgpath/-/svgpath-2.3.0.tgz", + "integrity": "sha512-N/4UDu3Y2ICik0daMmFW1tplw0XPs1nVIEVYkTiQfj9/JQZeEtAKaSYwheCwje1I4pQ5r22fGpoaNIvGgsyJyg==", + "dev": true + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "thread-loader": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-2.1.3.tgz", + "integrity": "sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==", + "dev": true, + "requires": { + "loader-runner": "^2.3.1", + "loader-utils": "^1.1.0", + "neo-async": "^2.6.0" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "transformation-matrix-js": { + "version": "2.7.6", + "resolved": "https://registry.npmjs.org/transformation-matrix-js/-/transformation-matrix-js-2.7.6.tgz", + "integrity": "sha512-1CxDIZmCQ3vA0GGnkdMQqxUXVm3xXAFmglPYRS1hr37LzSg22TC7QAWOT38OmdUvMEs/rqcnkFoAsqvzdiluDg==", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "requires": { + "glob": "^7.1.2" + } + }, + "ts-config-webpack-plugin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ts-config-webpack-plugin/-/ts-config-webpack-plugin-2.0.0.tgz", + "integrity": "sha512-OQvVU5agUM4B9OormTghgCRI+Na9HyrhZ1gqxux2uZ7Dk4NRorcBvbwDPLystLrzEwivRGpCglaS8GbeLpAVPw==", + "dev": true, + "requires": { + "cache-loader": "^1.2.2", + "fork-ts-checker-webpack-plugin": "^0.5.2", + "thread-loader": "^2.1.1", + "ts-loader": "^6.2.1" + } + }, + "ts-loader": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-6.2.2.tgz", + "integrity": "sha512-HDo5kXZCBml3EUPcc7RlZOV/JGlLHwppTLEHb3SHnr5V7NXD4klMEkrhJe5wgRbaWsSXi+Y1SIBN/K9B6zWGWQ==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^4.0.0", + "semver": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "tsconfig-paths": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "ttf2woff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ttf2woff/-/ttf2woff-2.0.1.tgz", + "integrity": "sha1-hxgyJAAksJ25VwkEx8GSi4BXyWk=", + "dev": true, + "requires": { + "argparse": "^1.0.6", + "microbuffer": "^1.0.0", + "pako": "^1.0.0" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.3.tgz", + "integrity": "sha512-tEu6DGxGgRJPb/mVPIZ48e69xCn2yRmCgYmDugAVwmJ6o+0u1RI18eO7E7WBTLYLaEVVOhwQmcdhQHweux/WPg==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "uri-js": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-loader": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz", + "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "mime": "^2.0.3", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "varstream": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/varstream/-/varstream-0.3.2.tgz", + "integrity": "sha1-GKxklHZfP/GjWtmkvgU77BiKXeE=", + "dev": true, + "requires": { + "readable-stream": "^1.0.33" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "watchpack": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz", + "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", + "dev": true, + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "optional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "dev": true, + "optional": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", + "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "optional": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "watchpack-chokidar2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", + "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webpack": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz", + "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.3.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "webpack-cli": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz", + "integrity": "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "cross-spawn": "^6.0.5", + "enhanced-resolve": "^4.1.1", + "findup-sync": "^3.0.0", + "global-modules": "^2.0.0", + "import-local": "^2.0.0", + "interpret": "^1.4.0", + "loader-utils": "^1.4.0", + "supports-color": "^6.1.0", + "v8-compile-cache": "^2.1.1", + "yargs": "^13.3.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "webpack-dev-server": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", + "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.8", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.7", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.20", + "sockjs-client": "1.4.0", + "spdy": "^4.0.2", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "^13.3.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + } + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==", + "dev": true + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "ws": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", + "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xmldom": { + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", + "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==", + "dev": true + }, + "xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + } + } +} diff --git a/frontend/package.json b/frontend/package.json index e817939..cba13eb 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -20,47 +20,30 @@ "@types/socket.io-client": "^1.4.34", "@typescript-eslint/eslint-plugin": "^3.9.1", "@typescript-eslint/parser": "^3.9.1", - "autoprefixer": "^9.8.5", "clean-webpack-plugin": "^3.0.0", - "css-loader": "^3.5.2", - "cssnano": "^4.1.10", + "common-config-webpack-plugin": "^2.0.1", "eslint": "^7.2.0", "eslint-config-prettier": "^6.11.0", "eslint-plugin-import": "^2.21.2", "eslint-plugin-json-format": "^2.0.1", "eslint-plugin-prettier": "^3.1.4", "eslint-plugin-unused-imports": "^0.1.3", - "file-loader": "^6.1.0", "firebase": "^7.22.0", "gl-matrix": "^3.3.0", - "html-webpack-inline-source-plugin": "0.0.10", - "html-webpack-plugin": "^3.2.0", - "image-webpack-loader": "^6.0.0", - "mini-css-extract-plugin": "^0.9.0", - "optimize-css-assets-webpack-plugin": "^5.0.3", - "postcss-loader": "^3.0.0", + "html-webpack-inline-svg-plugin": "^2.3.0", + "html-webpack-plugin": "^4.5.0", + "image-config-webpack-plugin": "^2.0.0", "prettier": "^2.0.5", - "raw-loader": "^4.0.1", - "resolve-url-loader": "^3.1.1", - "ts-loader": "^8.0.3", - "sass": "^1.26.3", - "sass-loader": "^9.0.2", - "sdf-2d": "^0.6.0", - "shared": "0.0.0", "resize-observer-polyfill": "^1.5.1", + "resolve-url-loader": "^3.1.1", + "scss-config-webpack-plugin": "^2.0.0", + "sdf-2d": "^0.6.0", "socket.io-client": "^2.3.1", - "source-map-loader": "^1.1.0", - "svg-url-loader": "^6.0.0", - "terser-webpack-plugin": "^4.2.2", + "source-map-loader": "^1.1.1", + "ts-config-webpack-plugin": "^2.0.0", "typescript": "^4.0.3", "webpack": "^4.43.0", - "webpack-bundle-analyzer": "^3.9.0", "webpack-cli": "^3.3.11", - "webpack-dev-server": "^3.10.3" - }, - "postcss": { - "plugins": { - "autoprefixer": {} - } + "webpack-dev-server": "^3.11.0" } } diff --git a/frontend/src/index.html b/frontend/src/index.html index 9b8ca6e..285926e 100644 --- a/frontend/src/index.html +++ b/frontend/src/index.html @@ -50,20 +50,20 @@
- logout + logout
@@ -72,7 +72,7 @@ id="toggle-settings" class="icon" alt="toggle-settings" - src="static/settings.svg" + src="../static/settings.svg" /> @@ -80,13 +80,13 @@ class="full-screen-controllers" id="minimize" alt="minimize-application" - src="static/minimize.svg" + src="../static/minimize.svg" /> maximize-application diff --git a/frontend/src/index.ts b/frontend/src/index.ts index ee4881e..3b767a4 100644 --- a/frontend/src/index.ts +++ b/frontend/src/index.ts @@ -11,15 +11,12 @@ import { CharacterView } from './scripts/objects/character-view'; import { LampView } from './scripts/objects/lamp-view'; import { ProjectileView } from './scripts/objects/projectile-view'; import { PlanetView } from './scripts/objects/planet-view'; -import './styles/main.scss'; +import './main.scss'; import { LandingPageBackground } from './scripts/landing-page-background'; import { JoinFormHandler } from './scripts/join-form-handler'; import { handleFullScreen } from './scripts/handle-full-screen'; import { Game } from './scripts/game'; import { PlayerCharacterView } from './scripts/objects/player-character-view'; -import '../static/settings.svg'; -import '../static/minimize.svg'; -import '../static/maximize.svg'; import { handleInsights } from './scripts/handle-insights'; import { getInsightsFromRenderer } from './scripts/get-insights-from-renderer'; import { Renderer } from 'sdf-2d'; @@ -90,7 +87,6 @@ const toggleSettings = () => const applyServerContainerShadows = () => { const { scrollHeight, clientHeight, scrollTop } = serverContainer; - console.log(scrollHeight, clientHeight, scrollTop); if (scrollHeight > clientHeight) { serverContainer.className = 'scroll'; if (scrollTop === 0) { diff --git a/frontend/src/styles/main.scss b/frontend/src/main.scss similarity index 93% rename from frontend/src/styles/main.scss rename to frontend/src/main.scss index c5d7fc9..108e369 100644 --- a/frontend/src/styles/main.scss +++ b/frontend/src/main.scss @@ -1,8 +1,8 @@ -@import './vars.scss'; -@import './button.scss'; -@import './form.scss'; -@import './mixins.scss'; -@import './settings.scss'; +@import './styles/vars.scss'; +@import './styles/button.scss'; +@import './styles/form.scss'; +@import './styles/mixins.scss'; +@import './styles/settings.scss'; @import url('https://fonts.googleapis.com/css2?family=Comfortaa:wght@300&family=Open+Sans&display=swap'); @@ -148,13 +148,14 @@ body { &::-webkit-scrollbar-track, &::-webkit-scrollbar { background-color: transparent; - width: 2px; + width: 3px; } &::-webkit-scrollbar-thumb { background-color: $accent; border-radius: $border-radius; } + transition: box-shadow $animation-time; &.scroll { box-shadow: inset 0 -8px 8px -8px rgba(0, 0, 0, 0.4), inset 0 8px 8px -8px rgba(0, 0, 0, 0.4); diff --git a/frontend/src/styles/settings.scss b/frontend/src/styles/settings.scss index abb02b0..1dd5520 100644 --- a/frontend/src/styles/settings.scss +++ b/frontend/src/styles/settings.scss @@ -6,7 +6,6 @@ position: absolute; display: flex; justify-content: center; - top: 0; right: 0; } @@ -16,17 +15,17 @@ cursor: pointer; #toggle-settings { - @include square($large-icon); - @media (max-width: $breakpoint) { - @include square($small-icon); - } - animation: spin 32s linear infinite; @keyframes spin { 100% { transform: rotate(360deg); } } + + @include square($large-icon); + @media (max-width: $breakpoint) { + @include square($small-icon); + } } } @@ -59,10 +58,12 @@ opacity: 1; } - img { + img, + svg { cursor: pointer; transition: opacity $animation-time; margin-bottom: $small-padding; + margin-left: 0; @include square($large-icon); @media (max-width: $breakpoint) { @include square($small-icon); @@ -73,49 +74,49 @@ label { position: relative; - } - input[type='checkbox'] { - width: 0; - height: 0; - appearance: none; - cursor: pointer; - - &:not(:checked) + img { - opacity: 0.4; - } - - &:focus { - outline: none; - } - - &:after { - content: ' '; - background: white; - position: absolute; - - $height: 4px; - width: $height; - top: $height / 2; - - right: 0; - transform-origin: top right; - border-radius: 100px; + input[type='checkbox'] { + width: 0; height: 0; - transform: rotate(45deg) translateY(17%); - transition: height $animation-time; + appearance: none; + cursor: pointer; - @media (max-width: $breakpoint) { - $height: 2px; + &:not(:checked) + * { + opacity: 0.4; + } + + &:focus { + outline: none; + } + + &:after { + content: ''; + background: white; + position: absolute; + + $height: 4px; width: $height; top: $height / 2; - } - } - &:not(:checked):after { - height: $large-icon; - @media (max-width: $breakpoint) { - height: $small-icon; + right: 0; + transform-origin: top right; + border-radius: 100px; + height: 0; + transform: rotate(45deg) translateY(17%); + transition: height $animation-time; + + @media (max-width: $breakpoint) { + $height: 2px; + width: $height; + top: $height / 2; + } + } + + &:not(:checked):after { + height: $large-icon; + @media (max-width: $breakpoint) { + height: $small-icon; + } } } } diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index 235fc22..5d9cdae 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -7,8 +7,8 @@ "experimentalDecorators": true, "downlevelIteration": true, "moduleResolution": "node", + "skipLibCheck": true, "module": "commonjs", - "composite": true, "lib": ["dom", "es2017"] }, "include": ["src/**/*.ts", "src/*.ts"] diff --git a/frontend/webpack.config.js b/frontend/webpack.config.js index b314135..23196f2 100644 --- a/frontend/webpack.config.js +++ b/frontend/webpack.config.js @@ -1,28 +1,10 @@ -const path = require('path'); +const CleanWebpackPlugin = require('clean-webpack-plugin').CleanWebpackPlugin; const HtmlWebpackPlugin = require('html-webpack-plugin'); -const { CleanWebpackPlugin } = require('clean-webpack-plugin'); -const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin'); -const MiniCssExtractPlugin = require('mini-css-extract-plugin'); -const HtmlWebpackInlineSourcePlugin = require('html-webpack-inline-source-plugin'); -const Sass = require('sass'); -const TerserJSPlugin = require('terser-webpack-plugin'); -const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer'); +const ScssConfigWebpackPlugin = require('scss-config-webpack-plugin'); +const TsConfigWebpackPlugin = require('ts-config-webpack-plugin'); +const HtmlWebpackInlineSVGPlugin = require('html-webpack-inline-svg-plugin'); -const PATHS = { - entryPoint: path.resolve(__dirname, 'src/index.ts'), - bundles: path.resolve(__dirname, 'dist'), -}; - -module.exports = (env, argv) => ({ - entry: { - index: PATHS.entryPoint, - }, - target: 'web', - output: { - filename: '[name].js', - path: PATHS.bundles, - }, - devtool: argv.mode === 'development' ? 'source-map' : false, +module.exports = { devServer: { host: '0.0.0.0', disableHostCheck: true, @@ -30,94 +12,30 @@ module.exports = (env, argv) => ({ poll: true, }, }, - optimization: { - minimize: argv.mode !== 'development', - minimizer: [ - new TerserJSPlugin({ - sourceMap: false, - test: /\.js$/, - exclude: /node_modules/, - terserOptions: { - keep_classnames: true, - }, - }), - new OptimizeCSSAssetsPlugin({}), - ], - }, plugins: [ + // Cleans the dist folder before the build starts + new CleanWebpackPlugin(), + // Generate a base html file and injects all generated css and js files new HtmlWebpackPlugin({ - xhtml: true, template: './src/index.html', - minify: { - collapseWhitespace: true, - removeComments: true, - removeRedundantAttributes: true, - removeScriptTypeAttributes: true, - removeStyleLinkTypeAttributes: true, - useShortDoctype: true, - }, - inlineSource: '.(js|css)$', }), - new HtmlWebpackInlineSourcePlugin(), - new MiniCssExtractPlugin({ - filename: '[name].css', - chunkFilename: '[id].css', - }), - new CleanWebpackPlugin({ - protectWebpackAssets: false, - cleanAfterEveryBuildPatterns: ['*', '!index.html', '!static*'], + new HtmlWebpackInlineSVGPlugin({ + inlineAll: true, + svgoConfig: [ + { + removeViewBox: false, + }, + ], }), + // SCSS Configuration for .css .module.css and .scss .module.scss files + // see https://github.com/namics/webpack-config-plugins/tree/master/packages/scss-config-webpack-plugin/config + new ScssConfigWebpackPlugin(), + // Multi threading typescript loader configuration with caching for .ts and .tsx files + // see https://github.com/namics/webpack-config-plugins/tree/master/packages/ts-config-webpack-plugin/config + new TsConfigWebpackPlugin(), ], module: { rules: [ - { - test: /\.ico$/, - use: { - loader: 'file-loader', - query: { - outputPath: '/', - name: '[name].[ext]', - }, - }, - }, - { - test: /\.svg$/, - use: { - loader: 'file-loader', - query: { - outputPath: '/static', - name: '[name].[ext]', - }, - }, - }, - { - test: /\.scss$/, - use: [ - MiniCssExtractPlugin.loader, - 'css-loader', - 'postcss-loader', - { - loader: 'resolve-url-loader', - options: { - keepQuery: true, - }, - }, - { - loader: 'sass-loader', - options: { - sourceMap: true, - implementation: Sass, - }, - }, - ], - }, - { - test: /\.ts$/, - use: { - loader: 'ts-loader', - }, - exclude: /node_modules/, - }, { test: /\.js$/, enforce: 'pre', @@ -125,7 +43,4 @@ module.exports = (env, argv) => ({ }, ], }, - resolve: { - extensions: ['.ts', '.js'], - }, -}); +}; diff --git a/package.json b/package.json index faa4718..4c3b417 100644 --- a/package.json +++ b/package.json @@ -6,20 +6,17 @@ "frontend", "shared", "backend" - ], - "nohoist": [ - "**" ] }, "devDependencies": { "concurrently": "^5.3.0" }, "scripts": { - "build": "yarn workspace shared run build && yarn workspace decla.red-frontend run build && yarn workspace declared-server run build", + "build": "cd shared && npm run build && cd ../frontend && npm run build && cd ../backend && npm run build", "lint": "eslint './**/src/**/*.{js,ts,json}' --fix", "frontend": "yarn workspace decla.red-frontend start", "shared": "yarn workspace shared start", "backend": "yarn workspace declared-server start", - "start": "concurrently --kill-others-on-fail \"yarn frontend\" \"yarn shared\" \"yarn backend\"" + "start": "concurrently --kill-others-on-fail \"cd shared && npm start\" \"cd backend && npm start\" \"cd frontend && npm start\"" } } diff --git a/shared/package.json b/shared/package.json index 2334af1..a75cd34 100644 --- a/shared/package.json +++ b/shared/package.json @@ -29,6 +29,6 @@ "ts-loader": "^8.0.3", "typescript": "^4.0.3", "webpack": "^4.43.0", - "webpack-cli": "^3.3.11" + "webpack-cli": "^3.3.12" } } From 6694e353ad1119df11a9afb0ea2ad6fb42c77d4b Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Thu, 22 Oct 2020 16:58:10 +0200 Subject: [PATCH 024/101] Fix mismatching function names --- backend/package.json | 8 +++++--- frontend/package.json | 1 + frontend/webpack.config.js | 12 ++++++++++++ shared/webpack.config.js | 24 ++++++++++++------------ 4 files changed, 30 insertions(+), 15 deletions(-) diff --git a/backend/package.json b/backend/package.json index e43041c..df69177 100644 --- a/backend/package.json +++ b/backend/package.json @@ -6,7 +6,7 @@ "author": "András Schmelczer (https://schmelczer.dev/)", "main": "dist/main.js", "bin": { - "declared-server": "dist/main.js" + "declared-server": "./dist/main.js" }, "scripts": { "build": "npx webpack --mode production", @@ -39,16 +39,18 @@ "eslint-plugin-prettier": "^3.1.4", "eslint-plugin-unused-imports": "^0.1.3", "file-loader": "^6.1.0", + "html-webpack-plugin": "^4.5.0", "nodemon": "^2.0.4", "prettier": "^2.0.5", "raw-loader": "^4.0.1", "resolve-url-loader": "^3.1.1", "terser-webpack-plugin": "^2.3.5", + "ts-config-webpack-plugin": "^2.0.0", "ts-loader": "^8.0.3", "typescript": "^4.0.3", - "webpack": "^4.43.0", + "webpack": "^4.44.2", "webpack-cli": "^3.3.12", - "webpack-dev-server": "^3.10.3", + "webpack-dev-server": "^3.11.0", "webpack-node-externals": "^2.5.2" } } diff --git a/frontend/package.json b/frontend/package.json index cba13eb..d4434c2 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -40,6 +40,7 @@ "sdf-2d": "^0.6.0", "socket.io-client": "^2.3.1", "source-map-loader": "^1.1.1", + "terser-webpack-plugin": "^4.2.2", "ts-config-webpack-plugin": "^2.0.0", "typescript": "^4.0.3", "webpack": "^4.43.0", diff --git a/frontend/webpack.config.js b/frontend/webpack.config.js index 23196f2..642317d 100644 --- a/frontend/webpack.config.js +++ b/frontend/webpack.config.js @@ -3,6 +3,7 @@ const HtmlWebpackPlugin = require('html-webpack-plugin'); const ScssConfigWebpackPlugin = require('scss-config-webpack-plugin'); const TsConfigWebpackPlugin = require('ts-config-webpack-plugin'); const HtmlWebpackInlineSVGPlugin = require('html-webpack-inline-svg-plugin'); +const TerserJSPlugin = require('terser-webpack-plugin'); module.exports = { devServer: { @@ -34,6 +35,17 @@ module.exports = { // see https://github.com/namics/webpack-config-plugins/tree/master/packages/ts-config-webpack-plugin/config new TsConfigWebpackPlugin(), ], + optimization: { + minimizer: [ + new TerserJSPlugin({ + test: /\.js$/, + exclude: /node_modules/, + terserOptions: { + keep_classnames: true, + }, + }), + ], + }, module: { rules: [ { diff --git a/shared/webpack.config.js b/shared/webpack.config.js index 2eebc06..20fa930 100644 --- a/shared/webpack.config.js +++ b/shared/webpack.config.js @@ -1,4 +1,7 @@ const path = require('path'); +const CleanWebpackPlugin = require('clean-webpack-plugin').CleanWebpackPlugin; +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const TsConfigWebpackPlugin = require('ts-config-webpack-plugin'); const PATHS = { entryPoint: path.resolve(__dirname, 'src/main.ts'), @@ -27,18 +30,15 @@ module.exports = (env, argv) => ({ optimization: { minimize: false, }, - plugins: [], - module: { - rules: [ - { - test: /\.ts$/, - use: { - loader: 'ts-loader', - }, - exclude: /node_modules/, - }, - ], - }, + plugins: [ + // Cleans the dist folder before the build starts + new CleanWebpackPlugin(), + // Generate a base html file and injects all generated css and js files + new HtmlWebpackPlugin(), + // Multi threading typescript loader configuration with caching for .ts and .tsx files + // see https://github.com/namics/webpack-config-plugins/tree/master/packages/ts-config-webpack-plugin/config + new TsConfigWebpackPlugin(), + ], resolve: { extensions: ['.ts'], }, From dee72440bb2b44f1a3c7058cc8b753a19be5fe8e Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Thu, 22 Oct 2020 21:46:40 +0200 Subject: [PATCH 025/101] Fix docker build --- Dockerfile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index f4974ae..8235d03 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,10 +4,9 @@ RUN npm install -g npm@7 WORKDIR /app COPY . . -RUN npm install --legacy-peer-deps +RUN npm install RUN npm run build - FROM node:14.13.0-alpine3.10 WORKDIR /app @@ -16,7 +15,7 @@ ENV NODE_ENV=production COPY backend/package.json . RUN npm install --production -COPY --from=build backend/dist/main.js main.js +COPY --from=build /app/backend/dist/main.js main.js EXPOSE 3000 From dd21c20b3a703c30de2e189cc4fb8f42f0e5add1 Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Thu, 22 Oct 2020 21:48:13 +0200 Subject: [PATCH 026/101] Improve world creation --- backend/src/default-options.ts | 1 + backend/src/game-server.ts | 2 +- backend/src/map/create-world.ts | 108 +++++++++++++++----------------- backend/src/options.ts | 1 + shared/src/settings.ts | 10 ++- 5 files changed, 57 insertions(+), 65 deletions(-) diff --git a/backend/src/default-options.ts b/backend/src/default-options.ts index 4ce4c30..8ae4ab8 100644 --- a/backend/src/default-options.ts +++ b/backend/src/default-options.ts @@ -5,4 +5,5 @@ export const defaultOptions: Options = { name: 'Localhost', playerLimit: 16, seed: 51, + worldSize: 10000, }; diff --git a/backend/src/game-server.ts b/backend/src/game-server.ts index 991069b..71838de 100644 --- a/backend/src/game-server.ts +++ b/backend/src/game-server.ts @@ -26,7 +26,7 @@ export class GameServer { this.serverName = options.name; this.playerLimit = options.playerLimit; - createWorld(this.objects); + createWorld(this.objects, options.worldSize); this.objects.initialize(); io.on('connection', (socket: SocketIO.Socket) => { diff --git a/backend/src/map/create-world.ts b/backend/src/map/create-world.ts index f6c7001..7b0ee18 100644 --- a/backend/src/map/create-world.ts +++ b/backend/src/map/create-world.ts @@ -1,73 +1,65 @@ -import { vec2, vec3 } from 'gl-matrix'; -import { Random, settings, PlanetBase, hsl } from 'shared'; +import { vec2 } from 'gl-matrix'; +import { Random, PlanetBase, hsl, settings } from 'shared'; import { LampPhysical } from '../objects/lamp-physical'; + import { PlanetPhysical } from '../objects/planet-physical'; import { PhysicalContainer } from '../physics/containers/physical-container'; import { evaluateSdf } from '../physics/functions/evaluate-sdf'; import { Physical } from '../physics/physicals/physical'; -export const createWorld = (objectContainer: PhysicalContainer) => { +export const createWorld = (objectContainer: PhysicalContainer, worldRadius: number) => { const objects: Array = []; const lights: Array = []; - const worldSize = vec2.length( - vec2.fromValues( - settings.worldTopEdge - settings.worldBottomEdge, - settings.worldRightEdge - settings.worldLeftEdge, - ), - ); - - for (let i = 0; i < 15; i++) { - console.log('planet', i); - - let position: vec2; - - do { - position = vec2.fromValues( - Random.getRandomInRange(settings.worldLeftEdge, settings.worldRightEdge), - Random.getRandomInRange(settings.worldBottomEdge, settings.worldTopEdge), + for (let r = 0; r < worldRadius; r += settings.radiusSteps) { + const circumference = 2 * Math.PI * r; + const stepCount = circumference * settings.objectsOnCircleLength; + for (let rad = 0; rad < 2 * Math.PI; rad += (2 * Math.PI) / stepCount) { + const position = vec2.rotate( + vec2.create(), + vec2.fromValues(r, 0), + vec2.create(), + rad, ); - } while ( - evaluateSdf(position, objects) < 800 || - evaluateSdf(position, objects) > 2500 - ); - objects.push( - new PlanetPhysical( - PlanetBase.createPlanetVertices( - position, - Random.getRandomInRange(300, 800), - Random.getRandomInRange(300, 800), - Random.getRandomInRange(20, 40), - ), - ), - ); - } - - for (let i = 0; i < 15; i++) { - console.log('light', i); - let position: vec2; - do { - position = vec2.fromValues( - Random.getRandomInRange(settings.worldLeftEdge, settings.worldRightEdge), - Random.getRandomInRange(settings.worldBottomEdge, settings.worldTopEdge), - ); - } while ( - evaluateSdf(position, objects) < 200 || - lights.find((l) => l.distance(position) < 1500) - ); - lights.push( - new LampPhysical( - position, - hsl( - Random.getRandomInRange(0, 360), - Random.getRandomInRange(50, 100), - Random.getRandomInRange(25, 50), - ), - Random.getRandomInRange(0.5, 2), - ), - ); + if (Random.getRandom() > 0.5) { + if ( + evaluateSdf(position, objects) > 200 && + !lights.find((l) => l.distance(position) < 2500) + ) { + lights.push( + new LampPhysical( + position, + hsl( + (rad / (2 * Math.PI)) * 360, + Random.getRandomInRange(50, 100), + Random.getRandomInRange(40, 50), + ), + Random.getRandomInRange(0.35, 1), + ), + ); + } + } else { + if ( + evaluateSdf(position, objects) > 1400 && + !lights.find((l) => l.distance(position) < 1700) + ) { + objects.push( + new PlanetPhysical( + PlanetBase.createPlanetVertices( + position, + Random.getRandomInRange(300, 1600), + Random.getRandomInRange(300, 1600), + Random.getRandomInRange(20, 100), + ), + ), + ); + } + } + } } + console.log('Generated planet count', objects.length); + console.log('Generated light count', lights.length); [...objects, ...lights].forEach((o) => objectContainer.addObject(o)); }; diff --git a/backend/src/options.ts b/backend/src/options.ts index c5fc944..3b738a5 100644 --- a/backend/src/options.ts +++ b/backend/src/options.ts @@ -3,4 +3,5 @@ export interface Options { name: string; playerLimit: number; seed: number; + worldSize: number; } diff --git a/shared/src/settings.ts b/shared/src/settings.ts index 98aec09..e7f5edc 100644 --- a/shared/src/settings.ts +++ b/shared/src/settings.ts @@ -11,8 +11,10 @@ export const settings = { physicsMaxStep: 2, maxVelocityX: 1000, maxVelocityY: 1000, + radiusSteps: 500, + objectsOnCircleLength: 0.002, planetEdgeCount: 7, - takeControlTimeInSeconds: 10, + takeControlTimeInSeconds: 4, maxGravityDistance: 700, maxGravityQ: 180, planetControlThreshold: 0.2, @@ -27,13 +29,9 @@ export const settings = { projectileMaxBounceCount: 1, projectileTimeout: 3, projectileFadeSpeed: 20, - projectileStartOffset: 150, projectileCreationInterval: 0.1, playerColorIndexOffset: 3, - worldTopEdge: 3000, - worldRightEdge: 3000, - worldLeftEdge: -3000, - worldBottomEdge: -3000, + worldRadius: 10000, backgroundGradient: [rgb255(90, 38, 43), rgb255(43, 39, 73)], declaColor, declaPlanetColor, From af616042f3f41ff6b51b5ffdc555935f3422690e Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Thu, 22 Oct 2020 21:49:39 +0200 Subject: [PATCH 027/101] Fix build issues --- .gitignore | 1 + backend/webpack.config.js | 1 + frontend/webpack.config.js | 6 ++++++ shared/tsconfig.json | 1 + shared/webpack.config.js | 24 ++++++++++++------------ 5 files changed, 21 insertions(+), 12 deletions(-) diff --git a/.gitignore b/.gitignore index 6c971d6..082491d 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ node_modules .firebase yarm-error.log yarn.lock +package-lock.json diff --git a/backend/webpack.config.js b/backend/webpack.config.js index 90ebc97..7dfd8f0 100644 --- a/backend/webpack.config.js +++ b/backend/webpack.config.js @@ -13,6 +13,7 @@ module.exports = (env, argv) => ({ entry: { main: [PATHS.entryPoint], }, + externals: [ nodeExternals({ allowlist: [/(^shared)/], diff --git a/frontend/webpack.config.js b/frontend/webpack.config.js index 642317d..699beee 100644 --- a/frontend/webpack.config.js +++ b/frontend/webpack.config.js @@ -53,6 +53,12 @@ module.exports = { enforce: 'pre', use: ['source-map-loader'], }, + { + test: /\.svg$/, + use: { + loader: 'file-loader', + }, + }, ], }, }; diff --git a/shared/tsconfig.json b/shared/tsconfig.json index 46fe043..8f87854 100644 --- a/shared/tsconfig.json +++ b/shared/tsconfig.json @@ -11,6 +11,7 @@ "downlevelIteration": true, "moduleResolution": "node", "module": "commonjs", + "skipLibCheck": true, "composite": true, "lib": ["dom", "es2017"] }, diff --git a/shared/webpack.config.js b/shared/webpack.config.js index 20fa930..2eebc06 100644 --- a/shared/webpack.config.js +++ b/shared/webpack.config.js @@ -1,7 +1,4 @@ const path = require('path'); -const CleanWebpackPlugin = require('clean-webpack-plugin').CleanWebpackPlugin; -const HtmlWebpackPlugin = require('html-webpack-plugin'); -const TsConfigWebpackPlugin = require('ts-config-webpack-plugin'); const PATHS = { entryPoint: path.resolve(__dirname, 'src/main.ts'), @@ -30,15 +27,18 @@ module.exports = (env, argv) => ({ optimization: { minimize: false, }, - plugins: [ - // Cleans the dist folder before the build starts - new CleanWebpackPlugin(), - // Generate a base html file and injects all generated css and js files - new HtmlWebpackPlugin(), - // Multi threading typescript loader configuration with caching for .ts and .tsx files - // see https://github.com/namics/webpack-config-plugins/tree/master/packages/ts-config-webpack-plugin/config - new TsConfigWebpackPlugin(), - ], + plugins: [], + module: { + rules: [ + { + test: /\.ts$/, + use: { + loader: 'ts-loader', + }, + exclude: /node_modules/, + }, + ], + }, resolve: { extensions: ['.ts'], }, From 1d1bc6655c9051fb0ff05a279779e8a80e54d79b Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Thu, 22 Oct 2020 21:50:39 +0200 Subject: [PATCH 028/101] Improve gameplay and design --- .../src/objects/player-character-physical.ts | 26 +++------ backend/src/objects/projectile-physical.ts | 21 ++++++++ backend/src/physics/functions/evaluate-sdf.ts | 2 +- backend/src/physics/functions/move-circle.ts | 15 ++++-- backend/src/players/player.ts | 1 - frontend/src/index.html | 26 +++++++-- frontend/src/main.scss | 54 ++++++++++++++++--- frontend/src/scripts/game.ts | 5 +- frontend/src/scripts/objects/camera.ts | 5 +- frontend/src/scripts/objects/planet-view.ts | 33 +++++------- .../scripts/objects/player-character-view.ts | 15 ++---- frontend/src/styles/form.scss | 5 +- frontend/src/styles/settings.scss | 10 ++++ frontend/src/styles/vars.scss | 9 ++++ frontend/static/mask.svg | 10 ++++ 15 files changed, 163 insertions(+), 74 deletions(-) create mode 100644 frontend/static/mask.svg diff --git a/backend/src/objects/player-character-physical.ts b/backend/src/objects/player-character-physical.ts index 43955cd..47fe473 100644 --- a/backend/src/objects/player-character-physical.ts +++ b/backend/src/objects/player-character-physical.ts @@ -155,20 +155,13 @@ export class PlayerCharacterPhysical return; } - const start = vec2.clone(this.center); - const direction = vec2.subtract(vec2.create(), position, start); + const direction = vec2.subtract(vec2.create(), position, this.center); vec2.normalize(direction, direction); - vec2.add( - start, - start, - vec2.scale(vec2.create(), direction, settings.projectileStartOffset), - ); const velocity = vec2.scale(direction, direction, settings.projectileSpeed); - vec2.add(velocity, velocity, this.velocity); const strength = this.projectileStrength / 2; this.projectileStrength -= strength; const projectile = new ProjectilePhysical( - start, + vec2.clone(this.center), 20, this.colorIndex, strength, @@ -192,10 +185,6 @@ export class PlayerCharacterPhysical return this.head.center; } - public get velocity(): vec2 { - return this.head.velocity; - } - public distance(target: vec2): number { return ( Math.min( @@ -272,17 +261,18 @@ export class PlayerCharacterPhysical } else { const leftFootGravity = this.currentPlanet!.getForce(this.leftFoot.center); const rightFootGravity = this.currentPlanet!.getForce(this.rightFoot.center); - if (movementForce.y > settings.maxAcceleration / 4) { + + if (this.lastMovementWasRelative) { + vec2.rotate(movementForce, movementForce, vec2.create(), this.direction); + } + + if (vec2.dot(movementForce, actualGravity) < -vec2.length(movementForce) * 0.8) { vec2.scale(leftFootGravity, leftFootGravity, 0.35); vec2.scale(rightFootGravity, rightFootGravity, 0.35); } this.applyForce(this.leftFoot, leftFootGravity, deltaTime); this.applyForce(this.rightFoot, rightFootGravity, deltaTime); - if (this.lastMovementWasRelative) { - vec2.rotate(movementForce, movementForce, vec2.create(), this.direction); - } - const headGravity = this.currentPlanet!.getForce(this.head.center); if (vec2.length(headGravity) < vec2.length(actualGravity) / 2) { diff --git a/backend/src/objects/projectile-physical.ts b/backend/src/objects/projectile-physical.ts index e7d6886..bded869 100644 --- a/backend/src/objects/projectile-physical.ts +++ b/backend/src/objects/projectile-physical.ts @@ -16,6 +16,7 @@ import { ReactsToCollision } from '../physics/physicals/reacts-to-collision'; import { UpdateObjectMessage } from 'shared/lib/src/objects/update-object-message'; import { UpdateGameObjectMessage } from '../update-game-object-message'; import { PlayerCharacterPhysical } from './player-character-physical'; +import { moveCircle } from '../physics/functions/move-circle'; @serializesTo(ProjectileBase) export class ProjectilePhysical @@ -41,6 +42,26 @@ export class ProjectilePhysical ) { super(id(), center, radius, colorIndex, strength); this.object = new CirclePhysical(center, radius, this, container, 0.9); + + this.moveOutsideOfObject(); + } + + private moveOutsideOfObject() { + let wasCollision = true; + const delta = vec2.scale( + vec2.create(), + vec2.normalize(vec2.create(), this.velocity), + 10, + ); + while (wasCollision) { + const intersecting = this.container + .findIntersecting(this.boundingBox) + .filter((g) => g instanceof PlayerCharacterPhysical && g.team === this.team); + const { hitSurface } = moveCircle(this.object, delta, intersecting, true); + wasCollision = hitSurface; + } + vec2.add(this.center, this.center, delta); + vec2.add(this.center, this.center, delta); } public calculateUpdates(): UpdateObjectMessage { diff --git a/backend/src/physics/functions/evaluate-sdf.ts b/backend/src/physics/functions/evaluate-sdf.ts index 69d0d6d..16bc96c 100644 --- a/backend/src/physics/functions/evaluate-sdf.ts +++ b/backend/src/physics/functions/evaluate-sdf.ts @@ -4,4 +4,4 @@ import { PhysicalBase } from '../physicals/physical-base'; export const evaluateSdf = (target: vec2, objects: Array) => objects .filter((i) => i.canCollide) - .reduce((min, i) => (min = Math.min(min, i.distance(target))), 1000); + .reduce((min, i) => (min = Math.min(min, i.distance(target))), 1000000); diff --git a/backend/src/physics/functions/move-circle.ts b/backend/src/physics/functions/move-circle.ts index 9f80bd5..4500985 100644 --- a/backend/src/physics/functions/move-circle.ts +++ b/backend/src/physics/functions/move-circle.ts @@ -9,6 +9,7 @@ export const moveCircle = ( circle: CirclePhysical, delta: vec2, possibleIntersectors: Array, + ignoreCollision = false, ): { realDelta: vec2; hitSurface: boolean; @@ -38,12 +39,16 @@ export const moveCircle = ( (i) => i.distance(nextCircle.center) <= circle.radius, )!; - if (reactsToCollision(intersecting)) { - intersecting.onCollision(circle.gameObject); - } + if (ignoreCollision) { + circle.center = vec2.add(circle.center, circle.center, delta); + } else { + if (reactsToCollision(intersecting)) { + intersecting.onCollision(circle.gameObject); + } - if (reactsToCollision(circle)) { - circle.onCollision(intersecting.gameObject); + if (reactsToCollision(circle)) { + circle.onCollision(intersecting.gameObject); + } } const dx = diff --git a/backend/src/players/player.ts b/backend/src/players/player.ts index efafb49..9e9da6d 100644 --- a/backend/src/players/player.ts +++ b/backend/src/players/player.ts @@ -28,7 +28,6 @@ import { PhysicalContainer } from '../physics/containers/physical-container'; import { getBoundingBoxOfCircle } from '../physics/functions/get-bounding-box-of-circle'; import { isCircleIntersecting } from '../physics/functions/is-circle-intersecting'; import { PlayerCharacterPhysical } from '../objects/player-character-physical'; -import { Physical } from '../physics/physicals/physical'; import { freeTeam, requestTeam } from './player-team-service'; import { PlanetPhysical } from '../objects/planet-physical'; diff --git a/frontend/src/index.html b/frontend/src/index.html index 285926e..97a4d7e 100644 --- a/frontend/src/index.html +++ b/frontend/src/index.html @@ -50,25 +50,43 @@
- logout + logout
toggle-settings { const command = deserialize(serialized); if (command instanceof PlayerDiedCommand) { @@ -145,7 +145,6 @@ export class Game { //enableStopwatch: true, }, { - ambientLight: rgb(0.45, 0.4, 0.45), colorPalette: settings.palette, enableHighDpiRendering: true, lightCutoffDistance: settings.lightCutoffDistance, diff --git a/frontend/src/scripts/objects/camera.ts b/frontend/src/scripts/objects/camera.ts index 2e28612..27d932f 100644 --- a/frontend/src/scripts/objects/camera.ts +++ b/frontend/src/scripts/objects/camera.ts @@ -1,6 +1,6 @@ import { vec2 } from 'gl-matrix'; import { Renderer } from 'sdf-2d'; -import { calculateViewArea, GameObject, mixRgb, settings, UpdateMessage } from 'shared'; +import { calculateViewArea, GameObject, mixRgb, settings } from 'shared'; import { Game } from '../game'; import { ViewObject } from './view-object'; @@ -32,8 +32,7 @@ export class Camera extends GameObject implements ViewObject { ambientLight: mixRgb( settings.backgroundGradient[0], settings.backgroundGradient[1], - (this.center.x - settings.worldLeftEdge) / - (Math.abs(settings.worldLeftEdge) + Math.abs(settings.worldRightEdge)), + vec2.length(this.center) / settings.worldRadius, ), }); } diff --git a/frontend/src/scripts/objects/planet-view.ts b/frontend/src/scripts/objects/planet-view.ts index 316fc9f..b1c120b 100644 --- a/frontend/src/scripts/objects/planet-view.ts +++ b/frontend/src/scripts/objects/planet-view.ts @@ -1,13 +1,6 @@ import { vec2 } from 'gl-matrix'; -import { Drawable, Renderer } from 'sdf-2d'; -import { - CommandExecutors, - Id, - Random, - PlanetBase, - UpdateMessage, - settings, -} from 'shared'; +import { Renderer } from 'sdf-2d'; +import { CommandExecutors, Id, Random, PlanetBase } from 'shared'; import { RenderCommand } from '../commands/types/render'; import { PlanetShape } from '../shapes/planet-shape'; import { ViewObject } from './view-object'; @@ -32,18 +25,19 @@ export class PlanetView extends PlanetBase implements ViewObject { public step(deltaTimeInMilliseconds: number): void { this.shape.randomOffset += deltaTimeInMilliseconds / 4000; this.shape.colorMixQ = this.ownership; - let teamName = 'Neutral'; - if (this.ownership < 0.5 - settings.planetControlThreshold) { - teamName = 'Decla'; - } else if (this.ownership > 0.5 + settings.planetControlThreshold) { - teamName = 'Red'; - } - - this.ownershipProgess.innerText = `${teamName} ${Math.round( - (Math.abs(this.ownership - 0.5) / 0.5) * 100, - )}%`; } + private getGradient(): string { + const sideDecla = this.ownership < 0.5; + const sidePercent = (Math.abs(this.ownership - 0.5) / 0.5) * 100; + const color = sideDecla ? 'var(--bright-decla)' : 'var(--bright-red)'; + return `conic-gradient( + ${color} ${sidePercent}%, + ${color} ${sidePercent}%, + var(--bright-neutral) ${sidePercent}%, + var(--bright-neutral) 100% + )`; + } public beforeDestroy(): void { this.ownershipProgess.parentElement?.removeChild(this.ownershipProgess); } @@ -56,6 +50,7 @@ export class PlanetView extends PlanetBase implements ViewObject { const screenPosition = renderer.worldToDisplayCoordinates(this.center); this.ownershipProgess.style.left = screenPosition.x + 'px'; this.ownershipProgess.style.top = screenPosition.y + 'px'; + this.ownershipProgess.style.background = this.getGradient(); renderer.addDrawable(this.shape); } diff --git a/frontend/src/scripts/objects/player-character-view.ts b/frontend/src/scripts/objects/player-character-view.ts index 64aa55a..be6ca0c 100644 --- a/frontend/src/scripts/objects/player-character-view.ts +++ b/frontend/src/scripts/objects/player-character-view.ts @@ -1,13 +1,6 @@ import { vec2 } from 'gl-matrix'; import { Renderer } from 'sdf-2d'; -import { - Circle, - Id, - PlayerCharacterBase, - UpdateMessage, - CharacterTeam, - settings, -} from 'shared'; +import { Circle, Id, PlayerCharacterBase, CharacterTeam, settings } from 'shared'; import { OptionsHandler } from '../options-handler'; import { BlobShape } from '../shapes/blob-shape'; @@ -35,7 +28,7 @@ export class PlayerCharacterView extends PlayerCharacterBase implements ViewObje this.previousHealth = this.health; this.nameElement = document.createElement('div'); - this.nameElement.className = 'player-tag'; + this.nameElement.className = 'player-tag ' + this.team; this.nameElement.innerText = this.name; this.healthElement = document.createElement('div'); this.nameElement.appendChild(this.healthElement); @@ -47,7 +40,7 @@ export class PlayerCharacterView extends PlayerCharacterBase implements ViewObje public step(deltaTimeInMilliseconds: number): void { this.timeSinceLastNameElementUpdate += deltaTimeInMilliseconds; - this.healthElement.style.width = this.health + '%'; + this.healthElement.style.width = (50 * this.health) / settings.playerMaxHealth + 'px'; if (this.previousHealth > this.health) { this.previousHealth = this.health; if (OptionsHandler.options.vibrationEnabled) { @@ -89,7 +82,7 @@ export class PlayerCharacterView extends PlayerCharacterBase implements ViewObje const headFeetDelta = vec2.subtract(footAverage, this.head!.center, footAverage); vec2.normalize(headFeetDelta, headFeetDelta); - const textOffset = vec2.scale(headFeetDelta, headFeetDelta, this.head!.radius + 50); + const textOffset = vec2.scale(headFeetDelta, headFeetDelta, this.head!.radius + 60); return vec2.add(textOffset, this.head!.center, textOffset); } } diff --git a/frontend/src/styles/form.scss b/frontend/src/styles/form.scss index 2bf153f..cc8df56 100644 --- a/frontend/src/styles/form.scss +++ b/frontend/src/styles/form.scss @@ -96,7 +96,8 @@ form { padding: $small-padding; border: $border; cursor: pointer; - margin: $border-width-focused - $border-width $small-padding / 2; + margin: $border-width-focused - $border-width $border-width-focused - + $border-width + $small-padding / 2; } &:focus { @@ -107,7 +108,7 @@ form { &:checked + label { border-color: $accent; border-width: $border-width-focused; - margin-right: 0 $small-padding / 2; + margin: 0 $small-padding / 2; } } } diff --git a/frontend/src/styles/settings.scss b/frontend/src/styles/settings.scss index 1dd5520..d9d744b 100644 --- a/frontend/src/styles/settings.scss +++ b/frontend/src/styles/settings.scss @@ -8,14 +8,22 @@ justify-content: center; top: 0; right: 0; + font-size: 0; } #toggle-settings-container { padding: $medium-padding; + cursor: pointer; + padding: $medium-padding $medium-padding 0 $medium-padding; + @media (max-width: $breakpoint) { + padding: $medium-padding $medium-padding $medium-padding 0; + } + #toggle-settings { animation: spin 32s linear infinite; + @keyframes spin { 100% { transform: rotate(360deg); @@ -53,9 +61,11 @@ opacity: 0; transition: transform $animation-time, opacity $animation-time; + pointer-events: none; &.open { transform: none; opacity: 1; + pointer-events: inherit; } img, diff --git a/frontend/src/styles/vars.scss b/frontend/src/styles/vars.scss index 7c583fb..14affc2 100644 --- a/frontend/src/styles/vars.scss +++ b/frontend/src/styles/vars.scss @@ -13,3 +13,12 @@ $breakpoint: 700px; $height-breakpoint: 500px; $large-icon: 48px; $small-icon: 32px; +$bright-decla: #4069a5; +$bright-red: #d15652; +$bright-neutral: #88888877; + +:root { + --bright-decla: #{$bright-decla}; + --bright-red: #{$bright-red}; + --bright-neutral: #{$bright-neutral}; +} diff --git a/frontend/static/mask.svg b/frontend/static/mask.svg new file mode 100644 index 0000000..8c7ecbf --- /dev/null +++ b/frontend/static/mask.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file From 0058f40f1f0a9e4a443f6c84049cc763ae459162 Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Thu, 22 Oct 2020 22:11:41 +0200 Subject: [PATCH 029/101] Add og-image --- frontend/src/index.html | 14 ++++++++++++++ frontend/static/og-image.png | Bin 0 -> 320599 bytes frontend/webpack.config.js | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 frontend/static/og-image.png diff --git a/frontend/src/index.html b/frontend/src/index.html index 97a4d7e..54a67bd 100644 --- a/frontend/src/index.html +++ b/frontend/src/index.html @@ -9,6 +9,20 @@ /> + + + + + + + + diff --git a/frontend/static/og-image.png b/frontend/static/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..86fa9f9fec9f4a03202903211c7c174fef75f150 GIT binary patch literal 320599 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�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

Rb#M#+9%bM&~1GOW{1 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 lSsN;7Ze#DomgHA3(?W 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

;BfsPsL6#BUc*J3i%q{sf!L+Xg@zJQ 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 literal 0 HcmV?d00001 diff --git a/frontend/webpack.config.js b/frontend/webpack.config.js index 699beee..dd5536f 100644 --- a/frontend/webpack.config.js +++ b/frontend/webpack.config.js @@ -54,7 +54,7 @@ module.exports = { use: ['source-map-loader'], }, { - test: /\.svg$/, + test: /\.(svg|png)$/, use: { loader: 'file-loader', }, From 938e7f3c36bba873ccd81edd084733f8d155a374 Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Thu, 22 Oct 2020 22:22:05 +0200 Subject: [PATCH 030/101] Fix docker build --- Dockerfile | 19 ++----------------- backend/package.json | 2 +- 2 files changed, 3 insertions(+), 18 deletions(-) diff --git a/Dockerfile b/Dockerfile index 8235d03..e7c9b16 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,23 +1,8 @@ -FROM node:14.13.0-alpine3.10 as build -RUN npm install -g npm@7 - -WORKDIR /app -COPY . . - -RUN npm install -RUN npm run build - FROM node:14.13.0-alpine3.10 -WORKDIR /app - -ENV NODE_ENV=production -COPY backend/package.json . -RUN npm install --production - -COPY --from=build /app/backend/dist/main.js main.js +RUN npm i -g declared-server EXPOSE 3000 CMD ["--port=3000", "--name=Docker server", "--seed=500"] -ENTRYPOINT [ "node", "main.js" ] +ENTRYPOINT [ "declared-server" ] diff --git a/backend/package.json b/backend/package.json index df69177..14de072 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "declared-server", - "version": "0.0.4", + "version": "0.0.5", "description": "Game server for decla.red", "keywords": [], "author": "András Schmelczer (https://schmelczer.dev/)", From 4a520d52f8095319091dd188fe8498a8535f1f8e Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Thu, 22 Oct 2020 23:47:56 +0200 Subject: [PATCH 031/101] Update colors --- shared/src/settings.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/shared/src/settings.ts b/shared/src/settings.ts index e7f5edc..dcf37ce 100644 --- a/shared/src/settings.ts +++ b/shared/src/settings.ts @@ -1,10 +1,10 @@ -import { rgb } from './helper/rgb'; import { rgb255 } from './helper/rgb255'; -const declaColor = rgb255(181, 138, 255); -const redColor = rgb255(255, 138, 138); -const declaPlanetColor = rgb(0, 0, 3); -const redPlanetColor = rgb(3, 0, 0); +const q = 2.5; +const declaColor = rgb255(64 * q, 105 * q, 165 * q); +const redColor = rgb255(209 * q, 86 * q, 82 * q); +const declaPlanetColor = declaColor; +const redPlanetColor = redColor; export const settings = { lightCutoffDistance: 600, @@ -12,6 +12,7 @@ export const settings = { maxVelocityX: 1000, maxVelocityY: 1000, radiusSteps: 500, + worldRadius: 10000, objectsOnCircleLength: 0.002, planetEdgeCount: 7, takeControlTimeInSeconds: 4, @@ -31,7 +32,6 @@ export const settings = { projectileFadeSpeed: 20, projectileCreationInterval: 0.1, playerColorIndexOffset: 3, - worldRadius: 10000, backgroundGradient: [rgb255(90, 38, 43), rgb255(43, 39, 73)], declaColor, declaPlanetColor, From ffc89e5590bf1246ab39e672e936c419da73d17a Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Fri, 23 Oct 2020 13:23:29 +0200 Subject: [PATCH 032/101] Update DO config --- .do/apps.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.do/apps.yml b/.do/apps.yml index 3727b4b..40e8b75 100644 --- a/.do/apps.yml +++ b/.do/apps.yml @@ -9,7 +9,7 @@ services: http_port: 3000 instance_count: 1 instance_size_slug: basic-xxs - run_command: ' node main.js --name=Frankfurt --seed=102' + run_command: ' declared-server --name=Frankfurt --seed=102' name: decla-red-server routes: - path: / From 49c410d8ff52c9a3b641b00d4400f48a082e3178 Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Fri, 23 Oct 2020 15:16:52 +0200 Subject: [PATCH 033/101] Update build --- .devcontainer/Dockerfile | 2 +- .github/workflows/main.yaml | 2 +- backend/package.json | 3 ++- frontend/package.json | 3 +++ frontend/webpack.config.js | 13 ++++++++++++- package.json | 8 +------- 6 files changed, 20 insertions(+), 11 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 939ba3a..30d5a76 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -7,7 +7,7 @@ RUN apt update && export DEBIAN_FRONTEND=noninteractive \ RUN git lfs install -RUN npm i -g yarn concurrently +RUN npm i && npm run init ENV ZSH_CUSTOM /root/.oh-my-zsh/ RUN git clone https://github.com/reobin/typewritten.git $ZSH_CUSTOM/themes/typewritten diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index d3cddad..17aa5ee 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -16,7 +16,7 @@ jobs: lfs: true - name: Build project run: | - yarn && yarn run build + npm i && npm run init && npm run build - name: Deploy frontend uses: w9jds/firebase-action@master with: diff --git a/backend/package.json b/backend/package.json index 14de072..a70bc11 100644 --- a/backend/package.json +++ b/backend/package.json @@ -6,7 +6,7 @@ "author": "András Schmelczer (https://schmelczer.dev/)", "main": "dist/main.js", "bin": { - "declared-server": "./dist/main.js" + "declared-server": "dist/main.js" }, "scripts": { "build": "npx webpack --mode production", @@ -44,6 +44,7 @@ "prettier": "^2.0.5", "raw-loader": "^4.0.1", "resolve-url-loader": "^3.1.1", + "shared": "file:../shared", "terser-webpack-plugin": "^2.3.5", "ts-config-webpack-plugin": "^2.0.0", "ts-loader": "^8.0.3", diff --git a/frontend/package.json b/frontend/package.json index d4434c2..595ff56 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -38,8 +38,11 @@ "resolve-url-loader": "^3.1.1", "scss-config-webpack-plugin": "^2.0.0", "sdf-2d": "^0.6.0", + "shared": "file:../shared", "socket.io-client": "^2.3.1", "source-map-loader": "^1.1.1", + "style-ext-html-webpack-plugin": "^4.1.2", + "svg-url-loader": "^6.0.0", "terser-webpack-plugin": "^4.2.2", "ts-config-webpack-plugin": "^2.0.0", "typescript": "^4.0.3", diff --git a/frontend/webpack.config.js b/frontend/webpack.config.js index dd5536f..2c61699 100644 --- a/frontend/webpack.config.js +++ b/frontend/webpack.config.js @@ -4,6 +4,8 @@ const ScssConfigWebpackPlugin = require('scss-config-webpack-plugin'); const TsConfigWebpackPlugin = require('ts-config-webpack-plugin'); const HtmlWebpackInlineSVGPlugin = require('html-webpack-inline-svg-plugin'); const TerserJSPlugin = require('terser-webpack-plugin'); +//const FaviconsWebpackPlugin = require('favicons-webpack-plugin'); +//const StyleExtHtmlWebpackPlugin = require('style-ext-html-webpack-plugin'); module.exports = { devServer: { @@ -28,6 +30,8 @@ module.exports = { }, ], }), + //new StyleExtHtmlWebpackPlugin('main.css'), + //new FaviconsWebpackPlugin('static/logo.svg'), // SCSS Configuration for .css .module.css and .scss .module.scss files // see https://github.com/namics/webpack-config-plugins/tree/master/packages/scss-config-webpack-plugin/config new ScssConfigWebpackPlugin(), @@ -54,7 +58,14 @@ module.exports = { use: ['source-map-loader'], }, { - test: /\.(svg|png)$/, + test: /\.svg/, + use: { + loader: 'svg-url-loader', + options: {}, + }, + }, + { + test: /\.(png)$/, use: { loader: 'file-loader', }, diff --git a/package.json b/package.json index 4c3b417..deaa1cd 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,6 @@ { "name": "root", "private": true, - "workspaces": { - "packages": [ - "frontend", - "shared", - "backend" - ] - }, "devDependencies": { "concurrently": "^5.3.0" }, @@ -15,6 +8,7 @@ "build": "cd shared && npm run build && cd ../frontend && npm run build && cd ../backend && npm run build", "lint": "eslint './**/src/**/*.{js,ts,json}' --fix", "frontend": "yarn workspace decla.red-frontend start", + "init": "cd shared && npm install && cd ../frontend && npm install && cd ../backend && npm install", "shared": "yarn workspace shared start", "backend": "yarn workspace declared-server start", "start": "concurrently --kill-others-on-fail \"cd shared && npm start\" \"cd backend && npm start\" \"cd frontend && npm start\"" From 23fa7646d603f94cea1315d4cd4a0bdb29c57266 Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Fri, 23 Oct 2020 15:19:04 +0200 Subject: [PATCH 034/101] Update gameplay --- backend/src/players/player.ts | 37 ++++++++++++- frontend/src/main.scss | 24 +++++++-- frontend/src/scripts/game.ts | 53 ++++++++++++++++++- frontend/src/scripts/objects/planet-view.ts | 14 +++-- frontend/src/scripts/shapes/blob-shape.ts | 4 +- frontend/src/scripts/shapes/planet-shape.ts | 4 +- frontend/static/chevron.svg | 4 ++ .../src/commands/types/update-game-state.ts | 37 +++++++++++++ .../commands/types/update-planet-ownership.ts | 17 ------ shared/src/main.ts | 4 +- 10 files changed, 165 insertions(+), 33 deletions(-) create mode 100644 frontend/static/chevron.svg create mode 100644 shared/src/commands/types/update-game-state.ts delete mode 100644 shared/src/commands/types/update-planet-ownership.ts diff --git a/backend/src/players/player.ts b/backend/src/players/player.ts index 9e9da6d..7ced660 100644 --- a/backend/src/players/player.ts +++ b/backend/src/players/player.ts @@ -17,10 +17,11 @@ import { Circle, PlayerInformation, CharacterTeam, - UpdatePlanetOwnershipCommand, + UpdateGameState, GameObject, Command, UpdateObjectMessage, + OtherPlayerDirection, } from 'shared'; import { getTimeInMilliseconds } from '../helper/get-time-in-milliseconds'; import { BoundingBox } from '../physics/bounding-boxes/bounding-box'; @@ -189,14 +190,46 @@ export class Player extends CommandReceiver { ); this.sendToPlayer( - new UpdatePlanetOwnershipCommand( + new UpdateGameState( PlanetPhysical.declaPlanetCount, PlanetPhysical.redPlanetCount, PlanetPhysical.neutralPlanetCount, + this.getOtherPlayers(), ), ); } + private getOtherPlayers(): Array { + if (!this.character) { + return []; + } + + const viewArea = calculateViewArea(this.center, this.aspectRatio, 0.9); + const bb = new BoundingBox(); + bb.topLeft = viewArea.topLeft; + bb.size = viewArea.size; + + const playersInViewArea = this.objects + .findIntersecting(bb) + .map((o) => o.gameObject) + .filter((g) => g instanceof PlayerCharacterPhysical); + + const otherPlayers = this.players.filter( + (p) => playersInViewArea.indexOf(p.character!) < 0, + ); + + return otherPlayers.map( + (p) => + new OtherPlayerDirection( + vec2.normalize( + vec2.create(), + vec2.subtract(vec2.create(), p.center, this.character!.center), + ), + p.team, + ), + ); + } + private sendToPlayer(command: Command) { this.socket.emit(TransportEvents.ServerToPlayer, serialize(command)); } diff --git a/frontend/src/main.scss b/frontend/src/main.scss index e99d743..ca5a121 100644 --- a/frontend/src/main.scss +++ b/frontend/src/main.scss @@ -145,7 +145,24 @@ body { @include square(50px); border-radius: 1000px; - mask: url('../static/mask.svg'); + mask-image: url('../static/mask.svg'); + } + + .other-player-arrow { + @include square($large-icon); + @media (max-width: $breakpoint) { + @include square($small-icon); + } + + mask-image: url('../static/chevron.svg'); + mask-size: contain; + + &.decla { + background-color: $bright-decla; + } + &.red { + background-color: $bright-red; + } } .planet-progress { @@ -165,8 +182,10 @@ body { height: $height; } + border-radius: 100px; + overflow: hidden; + div:nth-child(1) { - border-radius: 100px 0 0 100px; background: $bright-decla; } @@ -175,7 +194,6 @@ body { } div:nth-child(3) { - border-radius: 0 100px 100px 0; background: $bright-red; } } diff --git a/frontend/src/scripts/game.ts b/frontend/src/scripts/game.ts index fc0f794..b5f52bc 100644 --- a/frontend/src/scripts/game.ts +++ b/frontend/src/scripts/game.ts @@ -18,7 +18,8 @@ import { SetAspectRatioActionCommand, PlayerInformation, PlayerDiedCommand, - UpdatePlanetOwnershipCommand, + UpdateGameState, + clamp, } from 'shared'; import io from 'socket.io-client'; import { KeyboardListener } from './commands/generators/keyboard-listener'; @@ -54,6 +55,7 @@ export class Game { progressBar.appendChild(this.redPlanetCountElement); } + private arrowElements: Array = []; private async setupCommunication(serverUrl: string): Promise { this.socket = io(serverUrl, { reconnectionDelayMax: 10000, @@ -74,7 +76,7 @@ export class Game { navigator.vibrate(150); } this.overlay.appendChild(this.announcmentText); - } else if (command instanceof UpdatePlanetOwnershipCommand) { + } else if (command instanceof UpdateGameState) { const all = command.declaCount + command.redCount + command.neutralCount; this.declaPlanetCountElement.style.width = (command.declaCount / all) * 100 + '%'; this.neutralPlanetCountElement.style.width = @@ -90,6 +92,53 @@ export class Game { this.overlay.appendChild(this.announcmentText); this.announcmentText.innerText = 'Red team won 🎉'; } + + this.arrowElements + .splice(command.otherPlayerDirections.length, this.arrowElements.length) + .forEach((e) => e.parentElement?.removeChild(e)); + + for ( + let i = this.arrowElements.length; + i < command.otherPlayerDirections.length; + i++ + ) { + const element = document.createElement('div'); + this.arrowElements.push(element); + this.overlay.appendChild(element); + } + + this.arrowElements.forEach((e, i) => { + const direction = command.otherPlayerDirections[i].direction; + const team = command.otherPlayerDirections[i].team; + const angle = Math.atan2(direction.y, direction.x); + e.className = 'other-player-arrow ' + team; + + const { width, height } = this.overlay.getBoundingClientRect(); + const aspectRatio = width / height; + const directionRatio = direction.x / direction.y; + + let deltaX: number, deltaY: number; + if (aspectRatio < Math.abs(directionRatio)) { + deltaX = (width / 2) * Math.sign(direction.x); + deltaY = deltaX / directionRatio; + } else { + deltaY = (height / 2) * Math.sign(direction.y); + deltaX = deltaY * directionRatio; + } + + const delta = vec2.fromValues(deltaX, deltaY); + const center = vec2.fromValues(width / 2, height / 2); + const p = vec2.add(center, center, delta); + const arrowPadding = 16; + vec2.set( + p, + clamp(p.x, arrowPadding, width - 3 * arrowPadding), + clamp(height - p.y, arrowPadding, height - 3 * arrowPadding), + ); + e.style.transform = `translateX(${p.x}px) translateY(${p.y}px) rotate(${ + -angle + Math.PI / 2 + }rad) translateX(-50%) translateY(-50%)`; + }); } else this.gameObjects.sendCommand(command); }); diff --git a/frontend/src/scripts/objects/planet-view.ts b/frontend/src/scripts/objects/planet-view.ts index b1c120b..d3281c0 100644 --- a/frontend/src/scripts/objects/planet-view.ts +++ b/frontend/src/scripts/objects/planet-view.ts @@ -30,12 +30,18 @@ export class PlanetView extends PlanetBase implements ViewObject { private getGradient(): string { const sideDecla = this.ownership < 0.5; const sidePercent = (Math.abs(this.ownership - 0.5) / 0.5) * 100; - const color = sideDecla ? 'var(--bright-decla)' : 'var(--bright-red)'; - return `conic-gradient( - ${color} ${sidePercent}%, - ${color} ${sidePercent}%, + return sideDecla + ? `conic-gradient( + var(--bright-decla) ${sidePercent}%, + var(--bright-decla) ${sidePercent}%, var(--bright-neutral) ${sidePercent}%, var(--bright-neutral) 100% + )` + : `conic-gradient( + var(--bright-neutral) 0%, + var(--bright-neutral) ${100 - sidePercent}%, + var(--bright-red) ${100 - sidePercent}%, + var(--bright-red) 100% )`; } public beforeDestroy(): void { diff --git a/frontend/src/scripts/shapes/blob-shape.ts b/frontend/src/scripts/shapes/blob-shape.ts index f79f87f..5d0f793 100644 --- a/frontend/src/scripts/shapes/blob-shape.ts +++ b/frontend/src/scripts/shapes/blob-shape.ts @@ -15,8 +15,8 @@ export class BlobShape extends Drawable { float blobSmoothMin(float a, float b) { - const float k = 300.0; - float res = exp2(-k * a) + exp2(-k * b); + const highp float k = 300.0; + highp float res = exp2(-k * a) + exp2(-k * b); return -log2(res) / k; } diff --git a/frontend/src/scripts/shapes/planet-shape.ts b/frontend/src/scripts/shapes/planet-shape.ts index e637e29..b28e75d 100644 --- a/frontend/src/scripts/shapes/planet-shape.ts +++ b/frontend/src/scripts/shapes/planet-shape.ts @@ -52,7 +52,9 @@ export class PlanetShape extends PolygonFactory(settings.planetEdgeCount, 0) { vec2 center = planetCenters[j]; float l = planetLengths[j]; float randomOffset = planetRandoms[j]; - vec2 targetTangent = normalize(target - center); + vec2 targetCenterDelta = target - center; + float targetDistance = length(targetCenterDelta); + vec2 targetTangent = targetCenterDelta / clamp(targetDistance, 0.01, 1000.0); vec2 noisyTarget = target - ( targetTangent * planetTerrain(vec2( l * abs(atan(targetTangent.y, targetTangent.x)), diff --git a/frontend/static/chevron.svg b/frontend/static/chevron.svg new file mode 100644 index 0000000..0178fd9 --- /dev/null +++ b/frontend/static/chevron.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/shared/src/commands/types/update-game-state.ts b/shared/src/commands/types/update-game-state.ts new file mode 100644 index 0000000..f9d231e --- /dev/null +++ b/shared/src/commands/types/update-game-state.ts @@ -0,0 +1,37 @@ +import { vec2 } from 'gl-matrix'; +import { CharacterTeam } from '../../objects/types/character-team'; +import { serializable } from '../../transport/serialization/serializable'; +import { Command } from '../command'; + +@serializable +export class OtherPlayerDirection { + public constructor( + public readonly direction: vec2, + public readonly team: CharacterTeam, + ) {} + + public toArray(): Array { + return [this.direction, this.team]; + } +} + +@serializable +export class UpdateGameState extends Command { + public constructor( + public readonly declaCount: number, + public readonly redCount: number, + public readonly neutralCount: number, + public readonly otherPlayerDirections: Array, + ) { + super(); + } + + public toArray(): Array { + return [ + this.declaCount, + this.redCount, + this.neutralCount, + this.otherPlayerDirections, + ]; + } +} diff --git a/shared/src/commands/types/update-planet-ownership.ts b/shared/src/commands/types/update-planet-ownership.ts deleted file mode 100644 index e2b3c1c..0000000 --- a/shared/src/commands/types/update-planet-ownership.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { serializable } from '../../transport/serialization/serializable'; -import { Command } from '../command'; - -@serializable -export class UpdatePlanetOwnershipCommand extends Command { - public constructor( - public readonly declaCount: number, - public readonly redCount: number, - public readonly neutralCount: number, - ) { - super(); - } - - public toArray(): Array { - return [this.declaCount, this.redCount, this.neutralCount]; - } -} diff --git a/shared/src/main.ts b/shared/src/main.ts index 81235b1..bcb12f8 100644 --- a/shared/src/main.ts +++ b/shared/src/main.ts @@ -7,9 +7,10 @@ export * from './commands/types/move-action'; export * from './commands/types/primary-action'; export * from './commands/types/player-died'; export * from './commands/types/update-objects'; -export * from './commands/types/update-planet-ownership'; +export * from './commands/types/update-game-state'; export * from './commands/types/secondary-action'; export * from './commands/command-receiver'; +export * from './commands/types/update-game-state'; export * from './commands/command-executors'; export * from './commands/command-generator'; export * from './commands/broadcast-commands'; @@ -45,7 +46,6 @@ export * from './objects/types/player-character-base'; export * from './objects/types/lamp-base'; export * from './objects/types/planet-base'; export * from './objects/types/projectile-base'; -export * from './objects/update-message'; export * from './objects/update-object-message'; export * from './settings'; export * from './transport/transport-events'; From 8b49b44ebf462abd2fce0fb17e6dda47fe84466e Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Fri, 23 Oct 2020 18:06:56 +0200 Subject: [PATCH 035/101] Add touch joystick movement --- frontend/package.json | 2 +- frontend/src/main.scss | 29 ++++- .../generators/touch-joystick-listener.ts | 108 ++++++++++++++++++ .../commands/generators/touch-listener.ts | 80 ------------- frontend/src/scripts/game.ts | 16 +-- frontend/webpack.config.js | 19 ++- shared/src/helper/last.ts | 2 +- 7 files changed, 161 insertions(+), 95 deletions(-) create mode 100644 frontend/src/scripts/commands/generators/touch-joystick-listener.ts delete mode 100644 frontend/src/scripts/commands/generators/touch-listener.ts diff --git a/frontend/package.json b/frontend/package.json index 595ff56..6951198 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -30,6 +30,7 @@ "eslint-plugin-unused-imports": "^0.1.3", "firebase": "^7.22.0", "gl-matrix": "^3.3.0", + "html-webpack-inline-source-plugin": "^1.0.0-beta.2", "html-webpack-inline-svg-plugin": "^2.3.0", "html-webpack-plugin": "^4.5.0", "image-config-webpack-plugin": "^2.0.0", @@ -41,7 +42,6 @@ "shared": "file:../shared", "socket.io-client": "^2.3.1", "source-map-loader": "^1.1.1", - "style-ext-html-webpack-plugin": "^4.1.2", "svg-url-loader": "^6.0.0", "terser-webpack-plugin": "^4.2.2", "ts-config-webpack-plugin": "^2.0.0", diff --git a/frontend/src/main.scss b/frontend/src/main.scss index ca5a121..1dcf3ef 100644 --- a/frontend/src/main.scss +++ b/frontend/src/main.scss @@ -83,18 +83,25 @@ body { width: 100%; position: absolute; top: 0; + left: 0; pointer-events: none; user-select: none; overflow: hidden; + & > * { + display: inline-block; + position: absolute; + top: 0; + left: 0; + } + h2 { margin: $large-padding 0; } .player-tag { - position: absolute; transform: translateX(-50%) translateY(-50%) rotate(-15deg); transition: left 200ms, top 200ms; border-radius: 1000px; @@ -139,7 +146,6 @@ body { } .ownership { - position: absolute; font-size: 0; transform: translateX(-50%) translateY(-50%); @@ -165,6 +171,25 @@ body { } } + .joystick { + @include square($large-icon * 1.3); + background-color: white; + box-shadow: inset 0 0 8px 3px rgba(0, 0, 0, 0.33); + opacity: 0.35; + border-radius: 1000px; + + div { + position: absolute; + top: 50%; + left: 50%; + background-color: #444; + box-shadow: 0 0 8px 3px rgba(0, 0, 0, 0.33); + + @include square($small-icon); + border-radius: 1000px; + } + } + .planet-progress { position: absolute; top: $small-padding; diff --git a/frontend/src/scripts/commands/generators/touch-joystick-listener.ts b/frontend/src/scripts/commands/generators/touch-joystick-listener.ts new file mode 100644 index 0000000..0887190 --- /dev/null +++ b/frontend/src/scripts/commands/generators/touch-joystick-listener.ts @@ -0,0 +1,108 @@ +import { vec2 } from 'gl-matrix'; +import { + CommandGenerator, + SecondaryActionCommand, + TernaryActionCommand, + MoveActionCommand, + last, +} from 'shared'; +import { Game } from '../../game'; +import { OptionsHandler } from '../../options-handler'; + +export class TouchJoystickListener extends CommandGenerator { + private joystick: HTMLElement; + private joystickButton: HTMLElement; + + private isJoystickActive = false; + private touchStartPosition!: vec2; + + constructor( + target: HTMLElement, + private overlay: HTMLElement, + private readonly game: Game, + ) { + super(); + + this.joystick = document.createElement('div'); + this.joystick.className = 'joystick'; + this.joystickButton = document.createElement('div'); + this.joystick.appendChild(this.joystickButton); + + target.addEventListener('touchstart', (event: TouchEvent) => { + event.preventDefault(); + if (this.isJoystickActive) { + const center = vec2.fromValues( + last(event.touches)!.clientX, + last(event.touches)!.clientY, + ); + this.sendCommandToSubcribers( + new SecondaryActionCommand(this.game.displayToWorldCoordinates(center)), + ); + } + }); + + target.addEventListener('touchmove', (event: TouchEvent) => { + event.preventDefault(); + + if (!this.isJoystickActive) { + this.isJoystickActive = true; + this.overlay.appendChild(this.joystick); + this.touchStartPosition = vec2.fromValues( + event.touches[0].clientX, + event.touches[0].clientY, + ); + this.joystickButton.style.transform = `translateX(-50%) translateY(-50%)`; + this.joystick.style.transform = `translateX(${this.touchStartPosition.x}px) translateY(${this.touchStartPosition.y}px) translateX(-50%) translateY(-50%)`; + } + + const touchPosition = vec2.fromValues( + event.touches[0].clientX, + event.touches[0].clientY, + ); + + const movement = vec2.subtract( + vec2.create(), + touchPosition, + this.touchStartPosition, + ); + + vec2.scale(movement, movement, 1 / 3); + const length = vec2.length(movement); + const maxLength = 20; + vec2.scale(movement, movement, Math.min(1, maxLength / length)); + this.joystickButton.style.transform = `translateX(${movement.x}px) translateY(${movement.y}px) translateX(-50%) translateY(-50%)`; + + vec2.set(movement, movement.x, -movement.y); + if (vec2.squaredLength(movement) > 0) { + vec2.normalize(movement, movement); + + this.sendCommandToSubcribers( + new MoveActionCommand(movement, OptionsHandler.options.relativeMovementEnabled), + ); + } + }); + + target.addEventListener('touchend', (event: TouchEvent) => { + event.preventDefault(); + + if (!this.isJoystickActive) { + const center = vec2.fromValues( + event.changedTouches[0].clientX, + event.changedTouches[0].clientY, + ); + this.sendCommandToSubcribers( + new SecondaryActionCommand(this.game.displayToWorldCoordinates(center)), + ); + } else if (event.touches.length === 0) { + this.isJoystickActive = false; + this.joystick.parentElement?.removeChild(this.joystick); + this.sendCommandToSubcribers( + new MoveActionCommand( + vec2.create(), + OptionsHandler.options.relativeMovementEnabled, + ), + ); + } + }); + } +} diff --git a/frontend/src/scripts/commands/generators/touch-listener.ts b/frontend/src/scripts/commands/generators/touch-listener.ts deleted file mode 100644 index 45bc024..0000000 --- a/frontend/src/scripts/commands/generators/touch-listener.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { vec2 } from 'gl-matrix'; -import { - CommandGenerator, - PrimaryActionCommand, - SecondaryActionCommand, - TernaryActionCommand, - MoveActionCommand, -} from 'shared'; -import { Game } from '../../game'; -import { OptionsHandler } from '../../options-handler'; - -export class TouchListener extends CommandGenerator { - private previousPosition = vec2.create(); - - constructor(target: HTMLElement, private readonly game: Game) { - super(); - - target.addEventListener('touchstart', (event: TouchEvent) => { - event.preventDefault(); - - const touchCount = event.touches.length; - const position = this.positionFromEvent(event); - this.previousPosition = position; - - if (touchCount == 1) { - this.sendCommandToSubcribers(new PrimaryActionCommand(position)); - } else if (touchCount == 2) { - this.sendCommandToSubcribers(new SecondaryActionCommand(position)); - } else { - this.sendCommandToSubcribers(new TernaryActionCommand(position)); - } - }); - - target.addEventListener('touchmove', (event: TouchEvent) => { - event.preventDefault(); - - const position = this.positionFromEvent(event, true); - const movement = vec2.subtract(vec2.create(), position, this.previousPosition); - - if (vec2.squaredLength(movement) > 0) { - vec2.normalize(movement, movement); - this.sendCommandToSubcribers( - new MoveActionCommand(movement, OptionsHandler.options.relativeMovementEnabled), - ); - } - - this.previousPosition = position; - }); - - target.addEventListener('touchend', (event: TouchEvent) => { - event.preventDefault(); - this.sendCommandToSubcribers( - new MoveActionCommand( - vec2.create(), - OptionsHandler.options.relativeMovementEnabled, - ), - ); - }); - } - - private positionFromEvent(event: TouchEvent, invert = false): vec2 { - const touches = Array.prototype.slice.call(event.touches); - const center = touches.reduce( - (center: vec2, touch: Touch) => - vec2.add( - center, - center, - vec2.fromValues( - touch.clientX * (invert ? -1 : 1), - touch.clientY * (invert ? -1 : 1), - ), - ), - vec2.create(), - ); - - return this.game.displayToWorldCoordinates( - vec2.scale(center, center, 1 / event.touches.length), - ); - } -} diff --git a/frontend/src/scripts/game.ts b/frontend/src/scripts/game.ts index b5f52bc..2e2da55 100644 --- a/frontend/src/scripts/game.ts +++ b/frontend/src/scripts/game.ts @@ -24,7 +24,7 @@ import { import io from 'socket.io-client'; import { KeyboardListener } from './commands/generators/keyboard-listener'; import { MouseListener } from './commands/generators/mouse-listener'; -import { TouchListener } from './commands/generators/touch-listener'; +import { TouchJoystickListener } from './commands/generators/touch-joystick-listener'; import { CommandReceiverSocket } from './commands/receivers/command-receiver-socket'; import { PlayerDecision } from './join-form-handler'; import { GameObjectContainer } from './objects/game-object-container'; @@ -129,15 +129,15 @@ export class Game { const delta = vec2.fromValues(deltaX, deltaY); const center = vec2.fromValues(width / 2, height / 2); const p = vec2.add(center, center, delta); - const arrowPadding = 16; + const arrowPadding = 24; vec2.set( p, - clamp(p.x, arrowPadding, width - 3 * arrowPadding), - clamp(height - p.y, arrowPadding, height - 3 * arrowPadding), + clamp(p.x, arrowPadding, width - arrowPadding), + clamp(height - p.y, arrowPadding, height - arrowPadding), ); - e.style.transform = `translateX(${p.x}px) translateY(${p.y}px) rotate(${ - -angle + Math.PI / 2 - }rad) translateX(-50%) translateY(-50%)`; + e.style.transform = `translateX(${p.x}px) translateY(${ + p.y + }px) translateX(-50%) translateY(-50%) rotate(${-angle + Math.PI / 2}rad) `; }); } else this.gameObjects.sendCommand(command); }); @@ -154,7 +154,7 @@ export class Game { [ new KeyboardListener(document.body), new MouseListener(this.canvas, this), - new TouchListener(this.canvas, this), + new TouchJoystickListener(this.canvas, this.overlay, this), ], [this.gameObjects, new CommandReceiverSocket(this.socket)], ); diff --git a/frontend/webpack.config.js b/frontend/webpack.config.js index 2c61699..4713038 100644 --- a/frontend/webpack.config.js +++ b/frontend/webpack.config.js @@ -4,8 +4,8 @@ const ScssConfigWebpackPlugin = require('scss-config-webpack-plugin'); const TsConfigWebpackPlugin = require('ts-config-webpack-plugin'); const HtmlWebpackInlineSVGPlugin = require('html-webpack-inline-svg-plugin'); const TerserJSPlugin = require('terser-webpack-plugin'); +const HtmlWebpackInlineSourcePlugin = require('html-webpack-inline-source-plugin'); //const FaviconsWebpackPlugin = require('favicons-webpack-plugin'); -//const StyleExtHtmlWebpackPlugin = require('style-ext-html-webpack-plugin'); module.exports = { devServer: { @@ -18,10 +18,14 @@ module.exports = { plugins: [ // Cleans the dist folder before the build starts new CleanWebpackPlugin(), + new ScssConfigWebpackPlugin(), + // Generate a base html file and injects all generated css and js files new HtmlWebpackPlugin({ template: './src/index.html', + inlineSource: '.(css)$', }), + new HtmlWebpackInlineSourcePlugin(HtmlWebpackPlugin), new HtmlWebpackInlineSVGPlugin({ inlineAll: true, svgoConfig: [ @@ -30,11 +34,10 @@ module.exports = { }, ], }), - //new StyleExtHtmlWebpackPlugin('main.css'), //new FaviconsWebpackPlugin('static/logo.svg'), // SCSS Configuration for .css .module.css and .scss .module.scss files // see https://github.com/namics/webpack-config-plugins/tree/master/packages/scss-config-webpack-plugin/config - new ScssConfigWebpackPlugin(), + // Multi threading typescript loader configuration with caching for .ts and .tsx files // see https://github.com/namics/webpack-config-plugins/tree/master/packages/ts-config-webpack-plugin/config new TsConfigWebpackPlugin(), @@ -57,6 +60,16 @@ module.exports = { enforce: 'pre', use: ['source-map-loader'], }, + { + test: /\.css$/, + use: [ + { + loader: 'style-loader', + options: { injectType: 'singletonStyleTag' }, + }, + 'css-loader', + ], + }, { test: /\.svg/, use: { diff --git a/shared/src/helper/last.ts b/shared/src/helper/last.ts index 5c319b0..39a5c1f 100644 --- a/shared/src/helper/last.ts +++ b/shared/src/helper/last.ts @@ -1,3 +1,3 @@ -export function last(a: Array): T | null { +export function last(a: ArrayLike): T | null { return a.length > 0 ? a[a.length - 1] : null; } From c74b2f14a03925a9e9dfcd99c9e58e562506f578 Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Fri, 23 Oct 2020 18:35:18 +0200 Subject: [PATCH 036/101] Optimize css --- frontend/package.json | 11 +++++++- frontend/src/main.scss | 10 +++---- .../src/styles/{mixins.scss => _mixins.scss} | 0 frontend/src/styles/{vars.scss => _vars.scss} | 0 frontend/src/styles/button.scss | 2 +- frontend/src/styles/form.scss | 7 ++--- frontend/src/styles/settings.scss | 4 +-- frontend/webpack.config.js | 27 ++++++++++--------- 8 files changed, 37 insertions(+), 24 deletions(-) rename frontend/src/styles/{mixins.scss => _mixins.scss} (100%) rename frontend/src/styles/{vars.scss => _vars.scss} (100%) diff --git a/frontend/package.json b/frontend/package.json index 6951198..47265f9 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -16,12 +16,18 @@ "browserslist": [ "defaults" ], + "postcss": { + "plugins": { + "autoprefixer": {} + } + }, "devDependencies": { "@types/socket.io-client": "^1.4.34", "@typescript-eslint/eslint-plugin": "^3.9.1", "@typescript-eslint/parser": "^3.9.1", "clean-webpack-plugin": "^3.0.0", "common-config-webpack-plugin": "^2.0.1", + "css-loader": "^1.0.1", "eslint": "^7.2.0", "eslint-config-prettier": "^6.11.0", "eslint-plugin-import": "^2.21.2", @@ -34,10 +40,13 @@ "html-webpack-inline-svg-plugin": "^2.3.0", "html-webpack-plugin": "^4.5.0", "image-config-webpack-plugin": "^2.0.0", + "mini-css-extract-plugin": "^0.9.0", + "postcss-loader": "^3.0.0", "prettier": "^2.0.5", "resize-observer-polyfill": "^1.5.1", "resolve-url-loader": "^3.1.1", - "scss-config-webpack-plugin": "^2.0.0", + "sass": "^1.27.0", + "sass-loader": "^8.0.2", "sdf-2d": "^0.6.0", "shared": "file:../shared", "socket.io-client": "^2.3.1", diff --git a/frontend/src/main.scss b/frontend/src/main.scss index 1dcf3ef..67b923f 100644 --- a/frontend/src/main.scss +++ b/frontend/src/main.scss @@ -1,8 +1,8 @@ -@import './styles/vars.scss'; -@import './styles/button.scss'; -@import './styles/form.scss'; -@import './styles/mixins.scss'; -@import './styles/settings.scss'; +@use 'styles/vars' as *; +@use 'styles/button'; +@use 'styles/form'; +@use 'styles/mixins' as *; +@use 'styles/settings'; @import url('https://fonts.googleapis.com/css2?family=Comfortaa:wght@300&family=Open+Sans&display=swap'); diff --git a/frontend/src/styles/mixins.scss b/frontend/src/styles/_mixins.scss similarity index 100% rename from frontend/src/styles/mixins.scss rename to frontend/src/styles/_mixins.scss diff --git a/frontend/src/styles/vars.scss b/frontend/src/styles/_vars.scss similarity index 100% rename from frontend/src/styles/vars.scss rename to frontend/src/styles/_vars.scss diff --git a/frontend/src/styles/button.scss b/frontend/src/styles/button.scss index faad3bc..7214047 100644 --- a/frontend/src/styles/button.scss +++ b/frontend/src/styles/button.scss @@ -1,4 +1,4 @@ -@import './vars.scss'; +@use './vars.scss' as *; button { border: none; diff --git a/frontend/src/styles/form.scss b/frontend/src/styles/form.scss index cc8df56..785e448 100644 --- a/frontend/src/styles/form.scss +++ b/frontend/src/styles/form.scss @@ -1,5 +1,5 @@ -@import './vars.scss'; -@import './mixins.scss'; +@use 'vars' as *; +@use 'mixins' as *; form { @include background; @@ -38,7 +38,7 @@ form { position: relative; padding: 15px 0 0; margin-top: 10px; - margin: 10px 0 $small-padding 0; + margin: 10px $small-padding / 2 $small-padding $small-padding / 2; input { font-family: inherit; @@ -48,6 +48,7 @@ form { padding: 10px 0 0px 0; background: transparent; margin-bottom: $border-width-focused - $border-width; + width: 100%; &::placeholder { color: transparent; diff --git a/frontend/src/styles/settings.scss b/frontend/src/styles/settings.scss index d9d744b..91d1eb6 100644 --- a/frontend/src/styles/settings.scss +++ b/frontend/src/styles/settings.scss @@ -1,5 +1,5 @@ -@import './vars.scss'; -@import './mixins.scss'; +@use 'vars' as *; +@use 'mixins' as *; #toggle-settings-container, #settings-container { diff --git a/frontend/webpack.config.js b/frontend/webpack.config.js index 4713038..f2bccb1 100644 --- a/frontend/webpack.config.js +++ b/frontend/webpack.config.js @@ -1,10 +1,12 @@ const CleanWebpackPlugin = require('clean-webpack-plugin').CleanWebpackPlugin; const HtmlWebpackPlugin = require('html-webpack-plugin'); -const ScssConfigWebpackPlugin = require('scss-config-webpack-plugin'); const TsConfigWebpackPlugin = require('ts-config-webpack-plugin'); const HtmlWebpackInlineSVGPlugin = require('html-webpack-inline-svg-plugin'); +const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const TerserJSPlugin = require('terser-webpack-plugin'); const HtmlWebpackInlineSourcePlugin = require('html-webpack-inline-source-plugin'); +const Sass = require('sass'); + //const FaviconsWebpackPlugin = require('favicons-webpack-plugin'); module.exports = { @@ -18,9 +20,7 @@ module.exports = { plugins: [ // Cleans the dist folder before the build starts new CleanWebpackPlugin(), - new ScssConfigWebpackPlugin(), - - // Generate a base html file and injects all generated css and js files + new MiniCssExtractPlugin(), new HtmlWebpackPlugin({ template: './src/index.html', inlineSource: '.(css)$', @@ -34,10 +34,8 @@ module.exports = { }, ], }), - //new FaviconsWebpackPlugin('static/logo.svg'), - // SCSS Configuration for .css .module.css and .scss .module.scss files - // see https://github.com/namics/webpack-config-plugins/tree/master/packages/scss-config-webpack-plugin/config + //new FaviconsWebpackPlugin('static/logo.svg'), // Multi threading typescript loader configuration with caching for .ts and .tsx files // see https://github.com/namics/webpack-config-plugins/tree/master/packages/ts-config-webpack-plugin/config new TsConfigWebpackPlugin(), @@ -61,13 +59,18 @@ module.exports = { use: ['source-map-loader'], }, { - test: /\.css$/, + test: /\.scss$/i, use: [ - { - loader: 'style-loader', - options: { injectType: 'singletonStyleTag' }, - }, + MiniCssExtractPlugin.loader, 'css-loader', + 'postcss-loader', + { + loader: 'sass-loader', + options: { + sourceMap: true, + implementation: Sass, + }, + }, ], }, { From 1cd8f5fbe66d7e636e21a3295c1d40206e444354 Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Fri, 23 Oct 2020 22:10:39 +0200 Subject: [PATCH 037/101] Add KD stats and joystick deadzone --- .../src/objects/player-character-physical.ts | 20 +++++++++-- backend/src/objects/projectile-physical.ts | 5 +++ backend/src/players/player.ts | 21 +++++++++--- frontend/src/main.scss | 33 +++++++++++-------- .../generators/touch-joystick-listener.ts | 16 ++++++--- frontend/src/scripts/game.ts | 17 +++++----- .../scripts/objects/game-object-container.ts | 3 ++ .../scripts/objects/player-character-view.ts | 32 ++++++++++++++---- frontend/src/styles/settings.scss | 4 +-- .../objects/types/player-character-base.ts | 16 +++++++-- 10 files changed, 123 insertions(+), 44 deletions(-) diff --git a/backend/src/objects/player-character-physical.ts b/backend/src/objects/player-character-physical.ts index 47fe473..87301fe 100644 --- a/backend/src/objects/player-character-physical.ts +++ b/backend/src/objects/player-character-physical.ts @@ -95,12 +95,14 @@ export class PlayerCharacterPhysical constructor( name: string, + killCount: number, + deathCount: number, public readonly colorIndex: number, team: CharacterTeam, private readonly container: PhysicalContainer, startPosition: vec2, ) { - super(id(), name, colorIndex, team, settings.playerMaxHealth); + super(id(), name, killCount, deathCount, colorIndex, team, settings.playerMaxHealth); this.head = new CirclePhysical( vec2.add(vec2.create(), startPosition, PlayerCharacterPhysical.headOffset), @@ -133,7 +135,13 @@ export class PlayerCharacterPhysical } public calculateUpdates(): UpdateObjectMessage { - return new UpdateGameObjectMessage(this, ['head', 'leftFoot', 'rightFoot', 'health']); + return new UpdateGameObjectMessage(this, [ + 'head', + 'leftFoot', + 'rightFoot', + 'health', + 'killCount', + ]); } public handleMovementAction(c: MoveActionCommand) { @@ -141,11 +149,16 @@ export class PlayerCharacterPhysical } public onCollision(other: GameObject) { - if (other instanceof ProjectilePhysical && other.team !== this.team) { + if ( + other instanceof ProjectilePhysical && + other.team !== this.team && + other.isAlive + ) { other.destroy(); this.health -= other.strength; if (this.health <= 0) { this.destroy(); + other.originator.killCount++; } } } @@ -167,6 +180,7 @@ export class PlayerCharacterPhysical strength, this.team, velocity, + this, this.container, ); this.container.addObject(projectile); diff --git a/backend/src/objects/projectile-physical.ts b/backend/src/objects/projectile-physical.ts index bded869..6a9662c 100644 --- a/backend/src/objects/projectile-physical.ts +++ b/backend/src/objects/projectile-physical.ts @@ -38,6 +38,7 @@ export class ProjectilePhysical public strength: number, public team: CharacterTeam, private velocity: vec2, + public readonly originator: PlayerCharacterPhysical, readonly container: PhysicalContainer, ) { super(id(), center, radius, colorIndex, strength); @@ -46,6 +47,10 @@ export class ProjectilePhysical this.moveOutsideOfObject(); } + public get isAlive(): boolean { + return !this.isDestroyed; + } + private moveOutsideOfObject() { let wasCollision = true; const delta = vec2.scale( diff --git a/backend/src/players/player.ts b/backend/src/players/player.ts index 7ced660..cdc53fa 100644 --- a/backend/src/players/player.ts +++ b/backend/src/players/player.ts @@ -37,6 +37,9 @@ export class Player extends CommandReceiver { private aspectRatio: number = 16 / 9; private isActive = true; + private sumKills = 0; + private sumDeaths = 0; + private objectsPreviouslyInViewArea: Array = []; private pingTime?: number; @@ -64,17 +67,20 @@ export class Player extends CommandReceiver { }; private findEmptyPositionForPlayer(): vec2 { - let possibleCenter = this.players.find((p) => p.team === this.team)?.center; + let possibleCenter = this.players.find( + (p) => p.character?.isAlive && p.team === this.team, + )?.center; + if (!possibleCenter) { possibleCenter = vec2.create(); } - let rotation = Math.atan2(possibleCenter.y, possibleCenter.x); - let radius = vec2.length(possibleCenter); + let rotation = 0; + let radius = 0; for (;;) { const playerPosition = vec2.fromValues( - radius * Math.cos(rotation), - radius * Math.sin(rotation), + radius * Math.cos(rotation) + possibleCenter.x, + radius * Math.sin(rotation) + possibleCenter.y, ); const playerBoundingCircle = new Circle( @@ -121,6 +127,8 @@ export class Player extends CommandReceiver { private createCharacter() { this.character = new PlayerCharacterPhysical( this.playerInfo.name.slice(0, 20), + this.sumKills, + this.sumDeaths, this.colorIndex, this.team, this.objects, @@ -143,6 +151,9 @@ export class Player extends CommandReceiver { this.center = this.character?.center; if (!this.character.isAlive) { + this.sumDeaths++; + this.sumKills = this.character.killCount; + this.socket.emit( TransportEvents.ServerToPlayer, serialize(new PlayerDiedCommand(settings.playerDiedTimeout)), diff --git a/frontend/src/main.scss b/frontend/src/main.scss index 67b923f..008d497 100644 --- a/frontend/src/main.scss +++ b/frontend/src/main.scss @@ -10,7 +10,7 @@ margin: 0; box-sizing: border-box; color: white; - font-family: 'Open Sans', sans-serif; + font-family: 'Open Sans', 'Segoe UI Emoji', sans-serif; &::selection { color: white; @@ -43,10 +43,6 @@ h1 { } } -h2 { - font-size: 4rem; -} - .red { color: $red; &::selection { @@ -97,10 +93,6 @@ body { left: 0; } - h2 { - margin: $large-padding 0; - } - .player-tag { transform: translateX(-50%) translateY(-50%) rotate(-15deg); transition: left 200ms, top 200ms; @@ -108,8 +100,7 @@ body { &.decla { color: $bright-decla; - - div { + div:first-child { background-color: $bright-decla; &:before { background-color: $bright-decla; @@ -120,7 +111,7 @@ body { &.red { color: $bright-red; - div { + div:first-child { background-color: $bright-red; &:before { background-color: $bright-red; @@ -129,7 +120,7 @@ body { } } - div { + div:first-child { position: relative; height: 5px; border-radius: 1000px; @@ -143,6 +134,11 @@ body { border-radius: 1000px; } } + + div:not(:first-child) { + letter-spacing: 2px; + font-size: 0.8em; + } } .ownership { @@ -190,6 +186,17 @@ body { } } + .announcement { + top: 50%; + left: 50%; + transform: translateX(-50%) translateY(-50%); + font-size: 3rem; + @include background; + z-index: 1000; + padding: $medium-padding; + border-radius: 16px; + } + .planet-progress { position: absolute; top: $small-padding; diff --git a/frontend/src/scripts/commands/generators/touch-joystick-listener.ts b/frontend/src/scripts/commands/generators/touch-joystick-listener.ts index 0887190..00ee238 100644 --- a/frontend/src/scripts/commands/generators/touch-joystick-listener.ts +++ b/frontend/src/scripts/commands/generators/touch-joystick-listener.ts @@ -73,11 +73,19 @@ export class TouchJoystickListener extends CommandGenerator { this.joystickButton.style.transform = `translateX(${movement.x}px) translateY(${movement.y}px) translateX(-50%) translateY(-50%)`; vec2.set(movement, movement.x, -movement.y); - if (vec2.squaredLength(movement) > 0) { - vec2.normalize(movement, movement); - + if (length > 10) { this.sendCommandToSubcribers( - new MoveActionCommand(movement, OptionsHandler.options.relativeMovementEnabled), + new MoveActionCommand( + vec2.normalize(movement, movement), + OptionsHandler.options.relativeMovementEnabled, + ), + ); + } else { + this.sendCommandToSubcribers( + new MoveActionCommand( + vec2.create(), + OptionsHandler.options.relativeMovementEnabled, + ), ); } }); diff --git a/frontend/src/scripts/game.ts b/frontend/src/scripts/game.ts index 2e2da55..e11db3f 100644 --- a/frontend/src/scripts/game.ts +++ b/frontend/src/scripts/game.ts @@ -41,12 +41,14 @@ export class Game { private declaPlanetCountElement = document.createElement('div'); private redPlanetCountElement = document.createElement('div'); private neutralPlanetCountElement = document.createElement('div'); + private announcementText = document.createElement('h2'); constructor( private readonly playerDecision: PlayerDecision, private readonly canvas: HTMLCanvasElement, private readonly overlay: HTMLElement, ) { + this.announcementText.className = 'announcement'; const progressBar = document.createElement('div'); progressBar.className = 'planet-progress'; overlay.appendChild(progressBar); @@ -75,7 +77,7 @@ export class Game { if (OptionsHandler.options.vibrationEnabled) { navigator.vibrate(150); } - this.overlay.appendChild(this.announcmentText); + this.overlay.appendChild(this.announcementText); } else if (command instanceof UpdateGameState) { const all = command.declaCount + command.redCount + command.neutralCount; this.declaPlanetCountElement.style.width = (command.declaCount / all) * 100 + '%'; @@ -84,13 +86,13 @@ export class Game { this.redPlanetCountElement.style.width = (command.redCount / all) * 100 + '%'; if (command.declaCount > all * 0.5) { - this.overlay.appendChild(this.announcmentText); - this.announcmentText.innerText = 'Decla team won 🎉'; + this.overlay.appendChild(this.announcementText); + this.announcementText.innerText = 'Decla team won 🎉'; } if (command.redCount > all * 0.5) { - this.overlay.appendChild(this.announcmentText); - this.announcmentText.innerText = 'Red team won 🎉'; + this.overlay.appendChild(this.announcementText); + this.announcementText.innerText = 'Red team won 🎉'; } this.arrowElements @@ -233,7 +235,6 @@ export class Game { this.isActive = false; } - private announcmentText = document.createElement('h2'); private gameLoop( renderer: Renderer, currentTime: DOMHighResTimeStamp, @@ -242,9 +243,9 @@ export class Game { this.renderer = renderer; if ((this.deadTimeout -= deltaTime / 1000) > 0) { - this.announcmentText.innerText = `Respawning in ${Math.floor(this.deadTimeout)} …`; + this.announcementText.innerText = `Reviving in ${Math.floor(this.deadTimeout)}…`; } else { - this.announcmentText.parentElement?.removeChild(this.announcmentText); + this.announcementText.parentElement?.removeChild(this.announcementText); } this.gameObjects.stepObjects(deltaTime); diff --git a/frontend/src/scripts/objects/game-object-container.ts b/frontend/src/scripts/objects/game-object-container.ts index f21b1e8..cd076f5 100644 --- a/frontend/src/scripts/objects/game-object-container.ts +++ b/frontend/src/scripts/objects/game-object-container.ts @@ -21,6 +21,9 @@ export class GameObjectContainer extends CommandReceiver { protected commandExecutors: CommandExecutors = { [CreatePlayerCommand.type]: (c: CreatePlayerCommand) => { + if (this.camera) { + this.deleteObject(this.camera.id); + } this.player = c.character as PlayerCharacterView; this.camera = new Camera(this.game); this.addObject(this.player); diff --git a/frontend/src/scripts/objects/player-character-view.ts b/frontend/src/scripts/objects/player-character-view.ts index be6ca0c..977cd55 100644 --- a/frontend/src/scripts/objects/player-character-view.ts +++ b/frontend/src/scripts/objects/player-character-view.ts @@ -8,14 +8,17 @@ import { ViewObject } from './view-object'; export class PlayerCharacterView extends PlayerCharacterBase implements ViewObject { private shape: BlobShape; - private nameElement: HTMLElement; - private healthElement: HTMLElement; + private nameElement: HTMLElement = document.createElement('div'); + private statsElement: HTMLElement = document.createElement('div'); + private healthElement: HTMLElement = document.createElement('div'); private timeSinceLastNameElementUpdate = 0; private previousHealth; constructor( id: Id, name: string, + killCount: number, + deathCount: number, colorIndex: number, team: CharacterTeam, health: number, @@ -23,15 +26,25 @@ export class PlayerCharacterView extends PlayerCharacterBase implements ViewObje leftFoot?: Circle, rightFoot?: Circle, ) { - super(id, name, colorIndex, team, health, head, leftFoot, rightFoot); + super( + id, + name, + killCount, + deathCount, + colorIndex, + team, + health, + head, + leftFoot, + rightFoot, + ); this.shape = new BlobShape(colorIndex); this.previousHealth = this.health; - this.nameElement = document.createElement('div'); this.nameElement.className = 'player-tag ' + this.team; this.nameElement.innerText = this.name; - this.healthElement = document.createElement('div'); this.nameElement.appendChild(this.healthElement); + this.nameElement.appendChild(this.statsElement); } public get position(): vec2 { @@ -41,10 +54,11 @@ export class PlayerCharacterView extends PlayerCharacterBase implements ViewObje public step(deltaTimeInMilliseconds: number): void { this.timeSinceLastNameElementUpdate += deltaTimeInMilliseconds; this.healthElement.style.width = (50 * this.health) / settings.playerMaxHealth + 'px'; + this.statsElement.innerText = this.getStatsText(); if (this.previousHealth > this.health) { this.previousHealth = this.health; if (OptionsHandler.options.vibrationEnabled) { - navigator.vibrate(50); + navigator.vibrate(75); } } this.previousHealth = this.health; @@ -72,6 +86,10 @@ export class PlayerCharacterView extends PlayerCharacterBase implements ViewObje renderer.addDrawable(this.shape); } + private getStatsText(): string { + return `${this.killCount}⚔/${this.deathCount}☠`; + } + private calculateTextPosition(): vec2 { const footAverage = vec2.add( vec2.create(), @@ -82,7 +100,7 @@ export class PlayerCharacterView extends PlayerCharacterBase implements ViewObje const headFeetDelta = vec2.subtract(footAverage, this.head!.center, footAverage); vec2.normalize(headFeetDelta, headFeetDelta); - const textOffset = vec2.scale(headFeetDelta, headFeetDelta, this.head!.radius + 60); + const textOffset = vec2.scale(headFeetDelta, headFeetDelta, this.head!.radius + 80); return vec2.add(textOffset, this.head!.center, textOffset); } } diff --git a/frontend/src/styles/settings.scss b/frontend/src/styles/settings.scss index 91d1eb6..839bbf4 100644 --- a/frontend/src/styles/settings.scss +++ b/frontend/src/styles/settings.scss @@ -43,6 +43,7 @@ top: 0; right: $medium-padding + $small-icon + $small-padding; } + pointer-events: none; overflow: hidden; } @@ -61,11 +62,10 @@ opacity: 0; transition: transform $animation-time, opacity $animation-time; - pointer-events: none; &.open { transform: none; opacity: 1; - pointer-events: inherit; + pointer-events: all; } img, diff --git a/shared/src/objects/types/player-character-base.ts b/shared/src/objects/types/player-character-base.ts index ec65fac..eb713da 100644 --- a/shared/src/objects/types/player-character-base.ts +++ b/shared/src/objects/types/player-character-base.ts @@ -9,6 +9,8 @@ export class PlayerCharacterBase extends CharacterBase { constructor( id: Id, public name: string, + public killCount: number, + public deathCount: number, colorIndex: number, team: CharacterTeam, health: number, @@ -20,7 +22,17 @@ export class PlayerCharacterBase extends CharacterBase { } public toArray(): Array { - const { id, name, colorIndex, team, health, head, leftFoot, rightFoot } = this; - return [id, name, colorIndex, team, health, head, leftFoot, rightFoot]; + return [ + this.id, + this.name, + this.killCount, + this.deathCount, + this.colorIndex, + this.team, + this.health, + this.head, + this.leftFoot, + this.rightFoot, + ]; } } From b55e927a348e52246d0ec81b390ec661d71f25bc Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Sat, 24 Oct 2020 10:01:54 +0200 Subject: [PATCH 038/101] Add player container --- backend/src/game-server.ts | 27 ++--- backend/src/helper/delta-time-calculator.ts | 8 +- .../src/objects/player-character-physical.ts | 4 +- backend/src/objects/projectile-physical.ts | 5 +- .../src/physics/physicals/physical-base.ts | 1 + backend/src/players/player-container.ts | 49 +++++++++ backend/src/players/player-team-service.ts | 22 ---- backend/src/players/player.ts | 100 ++++++++---------- .../src/scripts/objects/character-view.ts | 14 ++- .../scripts/objects/player-character-view.ts | 16 +-- .../src/scripts/objects/projectile-view.ts | 14 ++- shared/src/objects/types/character-base.ts | 5 +- shared/src/objects/types/character-team.ts | 1 + .../objects/types/player-character-base.ts | 4 +- shared/src/objects/types/projectile-base.ts | 5 +- shared/src/settings.ts | 17 ++- 16 files changed, 159 insertions(+), 133 deletions(-) create mode 100644 backend/src/players/player-container.ts delete mode 100644 backend/src/players/player-team-service.ts diff --git a/backend/src/game-server.ts b/backend/src/game-server.ts index 71838de..1aae894 100644 --- a/backend/src/game-server.ts +++ b/backend/src/game-server.ts @@ -1,5 +1,4 @@ import { PhysicalContainer } from './physics/containers/physical-container'; -import { Player } from './players/player'; import ioserver from 'socket.io'; import { TransportEvents, @@ -11,18 +10,22 @@ import { import { createWorld } from './map/create-world'; import { DeltaTimeCalculator } from './helper/delta-time-calculator'; import { Options } from './options'; +import { PlayerContainer } from './players/player-container'; const playerCountSubscribedRoom = 'playerCountUpdates'; export class GameServer { private objects = new PhysicalContainer(); - private players: Array = []; + private players: PlayerContainer; private deltaTimes: Array = []; private deltaTimeCalculator = new DeltaTimeCalculator(); private serverName: string; private playerLimit: number; + constructor(private readonly io: ioserver.Server, options: Options) { + this.players = new PlayerContainer(this.objects); + this.serverName = options.name; this.playerLimit = options.playerLimit; @@ -31,8 +34,7 @@ export class GameServer { io.on('connection', (socket: SocketIO.Socket) => { socket.on(TransportEvents.PlayerJoining, (playerInfo: PlayerInformation) => { - const player = new Player(playerInfo, this.players, this.objects, socket); - this.players.push(player); + const player = this.players.createPlayer(playerInfo, socket); socket.on(TransportEvents.PlayerToServer, (json: string) => { const command = deserialize(json); player.sendCommand(command); @@ -42,7 +44,7 @@ export class GameServer { socket.on('disconnect', () => { player.destroy(); - this.players = this.players.filter((p) => p !== player); + this.players.deletePlayer(player); this.sendPlayerCountUpdate(); }); }); @@ -56,7 +58,7 @@ export class GameServer { public sendPlayerCountUpdate() { this.io .to(playerCountSubscribedRoom) - .emit(TransportEvents.PlayerCountUpdate, this.players.length); + .emit(TransportEvents.PlayerCountUpdate, this.players.count); } public start() { @@ -64,8 +66,7 @@ export class GameServer { } private handlePhysics() { - const delta = this.deltaTimeCalculator.getNextDeltaTimeInMilliseconds(); - this.deltaTimes.push(delta); + const delta = this.deltaTimeCalculator.getNextDeltaTimeInSeconds(); const framesBetweenDeltaTimeCalculation = 1000; if (this.deltaTimes.length > framesBetweenDeltaTimeCalculation) { @@ -79,15 +80,15 @@ export class GameServer { `Memory used: ${(process.memoryUsage().rss / 1024 / 1024).toFixed(2)} MB`, ); this.deltaTimes = []; - console.log(this.players.map((p) => p.latency)); } - this.objects.stepObjects(delta / 1000); - this.players.forEach((p) => p.step(delta / 1000)); + this.objects.stepObjects(delta); + this.players.step(delta); - const physicsDelta = this.deltaTimeCalculator.getDeltaTimeInMilliseconds(); + const physicsDelta = this.deltaTimeCalculator.getDeltaTimeInSeconds() * 1000; this.deltaTimes.push(physicsDelta); const sleepTime = settings.targetPhysicsDeltaTimeInMilliseconds - physicsDelta; + if (sleepTime >= settings.minPhysicsSleepTime) { setTimeout(this.handlePhysics.bind(this), sleepTime); } else { @@ -98,7 +99,7 @@ export class GameServer { public get serverInfo(): ServerInformation { return { serverName: this.serverName, - playerCount: this.players.length, + playerCount: this.players.count, playerLimit: this.playerLimit, }; } diff --git a/backend/src/helper/delta-time-calculator.ts b/backend/src/helper/delta-time-calculator.ts index d52526c..cd1f38a 100644 --- a/backend/src/helper/delta-time-calculator.ts +++ b/backend/src/helper/delta-time-calculator.ts @@ -1,20 +1,20 @@ export class DeltaTimeCalculator { private previousTime: [number, number] = process.hrtime(); - public getNextDeltaTimeInMilliseconds(): number { + public getNextDeltaTimeInSeconds(): number { const deltaTime = process.hrtime(this.previousTime); this.previousTime = process.hrtime(); const [seconds, nanoSeconds] = deltaTime; - return seconds * 1000 + nanoSeconds / 1000 / 1000; + return seconds * 1000 + nanoSeconds / 1000 / 1000 / 1000; } - public getDeltaTimeInMilliseconds(): number { + public getDeltaTimeInSeconds(): number { const deltaTime = process.hrtime(this.previousTime); const [seconds, nanoSeconds] = deltaTime; - return seconds * 1000 + nanoSeconds / 1000 / 1000; + return seconds * 1000 + nanoSeconds / 1000 / 1000 / 1000; } } diff --git a/backend/src/objects/player-character-physical.ts b/backend/src/objects/player-character-physical.ts index 87301fe..7703920 100644 --- a/backend/src/objects/player-character-physical.ts +++ b/backend/src/objects/player-character-physical.ts @@ -97,12 +97,11 @@ export class PlayerCharacterPhysical name: string, killCount: number, deathCount: number, - public readonly colorIndex: number, team: CharacterTeam, private readonly container: PhysicalContainer, startPosition: vec2, ) { - super(id(), name, killCount, deathCount, colorIndex, team, settings.playerMaxHealth); + super(id(), name, killCount, deathCount, team, settings.playerMaxHealth); this.head = new CirclePhysical( vec2.add(vec2.create(), startPosition, PlayerCharacterPhysical.headOffset), @@ -176,7 +175,6 @@ export class PlayerCharacterPhysical const projectile = new ProjectilePhysical( vec2.clone(this.center), 20, - this.colorIndex, strength, this.team, velocity, diff --git a/backend/src/objects/projectile-physical.ts b/backend/src/objects/projectile-physical.ts index 6a9662c..95b160d 100644 --- a/backend/src/objects/projectile-physical.ts +++ b/backend/src/objects/projectile-physical.ts @@ -34,14 +34,13 @@ export class ProjectilePhysical constructor( center: vec2, radius: number, - colorIndex: number, public strength: number, - public team: CharacterTeam, + team: CharacterTeam, private velocity: vec2, public readonly originator: PlayerCharacterPhysical, readonly container: PhysicalContainer, ) { - super(id(), center, radius, colorIndex, strength); + super(id(), center, radius, team, strength); this.object = new CirclePhysical(center, radius, this, container, 0.9); this.moveOutsideOfObject(); diff --git a/backend/src/physics/physicals/physical-base.ts b/backend/src/physics/physicals/physical-base.ts index 3f923b6..66b0018 100644 --- a/backend/src/physics/physicals/physical-base.ts +++ b/backend/src/physics/physicals/physical-base.ts @@ -9,4 +9,5 @@ export interface PhysicalBase { readonly gameObject: GameObject; distance(target: vec2): number; + step(deltaTimeInMilliseconds: number): void; } diff --git a/backend/src/players/player-container.ts b/backend/src/players/player-container.ts new file mode 100644 index 0000000..2f8dbdd --- /dev/null +++ b/backend/src/players/player-container.ts @@ -0,0 +1,49 @@ +import { CharacterTeam, PlayerInformation, Random } from 'shared'; +import { PhysicalContainer } from '../physics/containers/physical-container'; +import { Player } from './player'; + +export class PlayerContainer { + private _players: Array = []; + + constructor(private readonly objects: PhysicalContainer) {} + + public createPlayer(playerInfo: PlayerInformation, socket: SocketIO.Socket): Player { + const player = new Player( + playerInfo, + this, + this.objects, + socket, + this.getTeamOfNextPlayer(), + ); + this._players.push(player); + + return player; + } + + public get players(): Array { + return this._players; + } + + public get count(): number { + return this.players.length; + } + + public step(deltaTimeInSeconds: number) { + this.players.forEach((p) => p.step(deltaTimeInSeconds)); + } + + private getTeamOfNextPlayer(): CharacterTeam { + const declaCount = this._players.filter((p) => p.team === CharacterTeam.decla).length; + const redCount = this._players.filter((p) => p.team === CharacterTeam.red).length; + + if ((declaCount === redCount && Random.getRandom() >= 0.5) || declaCount < redCount) { + return CharacterTeam.decla; + } else { + return CharacterTeam.red; + } + } + + public deletePlayer(player: Player) { + this._players = this._players.filter((p) => p !== player); + } +} diff --git a/backend/src/players/player-team-service.ts b/backend/src/players/player-team-service.ts deleted file mode 100644 index 39d1ce3..0000000 --- a/backend/src/players/player-team-service.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { CharacterTeam, Random } from 'shared'; - -let declaCount = 0; -let redCount = 0; - -export const requestTeam = (): { team: CharacterTeam; colorIndex: number } => { - if ((declaCount === redCount && Random.getRandom() > 0.5) || declaCount < redCount) { - declaCount++; - return { team: CharacterTeam.decla, colorIndex: 0 }; - } else { - redCount++; - return { team: CharacterTeam.red, colorIndex: 1 }; - } -}; - -export const freeTeam = (team: CharacterTeam) => { - if (team === CharacterTeam.decla) { - declaCount--; - } else { - redCount--; - } -}; diff --git a/backend/src/players/player.ts b/backend/src/players/player.ts index cdc53fa..86eaab7 100644 --- a/backend/src/players/player.ts +++ b/backend/src/players/player.ts @@ -29,8 +29,8 @@ import { PhysicalContainer } from '../physics/containers/physical-container'; import { getBoundingBoxOfCircle } from '../physics/functions/get-bounding-box-of-circle'; import { isCircleIntersecting } from '../physics/functions/is-circle-intersecting'; import { PlayerCharacterPhysical } from '../objects/player-character-physical'; -import { freeTeam, requestTeam } from './player-team-service'; import { PlanetPhysical } from '../objects/planet-physical'; +import { PlayerContainer } from './player-container'; export class Player extends CommandReceiver { private character?: PlayerCharacterPhysical | null; @@ -66,52 +66,15 @@ export class Player extends CommandReceiver { }, }; - private findEmptyPositionForPlayer(): vec2 { - let possibleCenter = this.players.find( - (p) => p.character?.isAlive && p.team === this.team, - )?.center; - - if (!possibleCenter) { - possibleCenter = vec2.create(); - } - - let rotation = 0; - let radius = 0; - for (;;) { - const playerPosition = vec2.fromValues( - radius * Math.cos(rotation) + possibleCenter.x, - radius * Math.sin(rotation) + possibleCenter.y, - ); - - const playerBoundingCircle = new Circle( - playerPosition, - PlayerCharacterPhysical.boundRadius, - ); - - const playerBoundingBox = getBoundingBoxOfCircle(playerBoundingCircle); - const possibleIntersectors = this.objects.findIntersecting(playerBoundingBox); - if (!isCircleIntersecting(playerBoundingCircle, possibleIntersectors)) { - return playerPosition; - } - - rotation += Math.PI / 8; - radius += 30; - } - } - - public readonly team: CharacterTeam; - private colorIndex: number; - constructor( private readonly playerInfo: PlayerInformation, - private readonly players: Array, - private readonly objects: PhysicalContainer, + private readonly playerContainer: PlayerContainer, + private readonly objectContainer: PhysicalContainer, private readonly socket: SocketIO.Socket, + public readonly team: CharacterTeam, ) { super(); - const { team, colorIndex } = requestTeam(); this.team = team; - this.colorIndex = colorIndex; this.createCharacter(); @@ -129,13 +92,12 @@ export class Player extends CommandReceiver { this.playerInfo.name.slice(0, 20), this.sumKills, this.sumDeaths, - this.colorIndex, this.team, - this.objects, + this.objectContainer, this.findEmptyPositionForPlayer(), ); - this.objects.addObject(this.character); + this.objectContainer.addObject(this.character); this.objectsPreviouslyInViewArea.push(this.character); this.socket.emit( @@ -146,7 +108,7 @@ export class Player extends CommandReceiver { private center: vec2 = vec2.create(); private timeUntilRespawn = 0; - public step(deltaTime: number) { + public step(deltaTimeInSeconds: number) { if (this.character) { this.center = this.character?.center; @@ -161,7 +123,7 @@ export class Player extends CommandReceiver { this.character = null; this.timeUntilRespawn = settings.playerDiedTimeout; } - } else if ((this.timeUntilRespawn -= deltaTime) < 0) { + } else if ((this.timeUntilRespawn -= deltaTimeInSeconds) < 0) { this.createCharacter(); } @@ -171,7 +133,7 @@ export class Player extends CommandReceiver { bb.size = viewArea.size; const objectsInViewArea = Array.from( - new Set(this.objects.findIntersecting(bb).map((o) => o.gameObject)), + new Set(this.objectContainer.findIntersecting(bb).map((o) => o.gameObject)), ); const newlyIntersecting = objectsInViewArea.filter( @@ -210,6 +172,41 @@ export class Player extends CommandReceiver { ); } + private findEmptyPositionForPlayer(): vec2 { + let possibleCenter = this.playerContainer.players.find( + (p) => p.character?.isAlive && p.team === this.team, + )?.center; + + if (!possibleCenter) { + possibleCenter = vec2.create(); + } + + let rotation = 0; + let radius = 0; + for (;;) { + const playerPosition = vec2.fromValues( + radius * Math.cos(rotation) + possibleCenter.x, + radius * Math.sin(rotation) + possibleCenter.y, + ); + + const playerBoundingCircle = new Circle( + playerPosition, + PlayerCharacterPhysical.boundRadius, + ); + + const playerBoundingBox = getBoundingBoxOfCircle(playerBoundingCircle); + const possibleIntersectors = this.objectContainer.findIntersecting( + playerBoundingBox, + ); + if (!isCircleIntersecting(playerBoundingCircle, possibleIntersectors)) { + return playerPosition; + } + + rotation += Math.PI / 8; + radius += 30; + } + } + private getOtherPlayers(): Array { if (!this.character) { return []; @@ -220,12 +217,12 @@ export class Player extends CommandReceiver { bb.topLeft = viewArea.topLeft; bb.size = viewArea.size; - const playersInViewArea = this.objects + const playersInViewArea = this.objectContainer .findIntersecting(bb) .map((o) => o.gameObject) .filter((g) => g instanceof PlayerCharacterPhysical); - const otherPlayers = this.players.filter( + const otherPlayers = this.playerContainer.players.filter( (p) => playersInViewArea.indexOf(p.character!) < 0, ); @@ -247,10 +244,7 @@ export class Player extends CommandReceiver { public destroy() { this.isActive = false; - freeTeam(this.team); - if (this.character) { - this.character.destroy(); - } + this.character?.destroy(); } } diff --git a/frontend/src/scripts/objects/character-view.ts b/frontend/src/scripts/objects/character-view.ts index 3e88c5c..d065f2d 100644 --- a/frontend/src/scripts/objects/character-view.ts +++ b/frontend/src/scripts/objects/character-view.ts @@ -1,6 +1,13 @@ import { vec2 } from 'gl-matrix'; import { Renderer } from 'sdf-2d'; -import { CharacterBase, CharacterTeam, Circle, Id, UpdateMessage } from 'shared'; +import { + CharacterBase, + CharacterTeam, + Circle, + Id, + settings, + UpdateMessage, +} from 'shared'; import { BlobShape } from '../shapes/blob-shape'; import { ViewObject } from './view-object'; @@ -10,15 +17,14 @@ export class CharacterView extends CharacterBase implements ViewObject { constructor( id: Id, - colorIndex: number, team: CharacterTeam, health: number, head?: Circle, leftFoot?: Circle, rightFoot?: Circle, ) { - super(id, colorIndex, team, health, head, leftFoot, rightFoot); - this.shape = new BlobShape(colorIndex); + super(id, team, health, head, leftFoot, rightFoot); + this.shape = new BlobShape(settings.colorIndices[team]); } public get position(): vec2 { diff --git a/frontend/src/scripts/objects/player-character-view.ts b/frontend/src/scripts/objects/player-character-view.ts index 977cd55..732fa6e 100644 --- a/frontend/src/scripts/objects/player-character-view.ts +++ b/frontend/src/scripts/objects/player-character-view.ts @@ -19,26 +19,14 @@ export class PlayerCharacterView extends PlayerCharacterBase implements ViewObje name: string, killCount: number, deathCount: number, - colorIndex: number, team: CharacterTeam, health: number, head?: Circle, leftFoot?: Circle, rightFoot?: Circle, ) { - super( - id, - name, - killCount, - deathCount, - colorIndex, - team, - health, - head, - leftFoot, - rightFoot, - ); - this.shape = new BlobShape(colorIndex); + super(id, name, killCount, deathCount, team, health, head, leftFoot, rightFoot); + this.shape = new BlobShape(settings.colorIndices[team]); this.previousHealth = this.health; this.nameElement.className = 'player-tag ' + this.team; diff --git a/frontend/src/scripts/objects/projectile-view.ts b/frontend/src/scripts/objects/projectile-view.ts index 9717e36..04e481f 100644 --- a/frontend/src/scripts/objects/projectile-view.ts +++ b/frontend/src/scripts/objects/projectile-view.ts @@ -1,6 +1,6 @@ import { vec2 } from 'gl-matrix'; import { CircleLight, ColorfulCircle, Renderer } from 'sdf-2d'; -import { Id, ProjectileBase, settings, UpdateMessage } from 'shared'; +import { CharacterTeam, Id, ProjectileBase, settings, UpdateMessage } from 'shared'; import { ViewObject } from './view-object'; export class ProjectileView extends ProjectileBase implements ViewObject { @@ -11,12 +11,16 @@ export class ProjectileView extends ProjectileBase implements ViewObject { id: Id, center: vec2, radius: number, - colorIndex: number, + team: CharacterTeam, strength: number, ) { - super(id, center, radius, colorIndex, strength); - this.circle = new ColorfulCircle(center, radius / 2, colorIndex); - this.light = new CircleLight(center, settings.palette[colorIndex], 0); + super(id, center, radius, team, strength); + this.circle = new ColorfulCircle(center, radius / 2, settings.colorIndices[team]); + this.light = new CircleLight( + center, + settings.paletteDim[settings.colorIndices[team]], + 0, + ); } public step(deltaTimeInMilliseconds: number): void { diff --git a/shared/src/objects/types/character-base.ts b/shared/src/objects/types/character-base.ts index 7e8b981..d785d22 100644 --- a/shared/src/objects/types/character-base.ts +++ b/shared/src/objects/types/character-base.ts @@ -8,7 +8,6 @@ import { CharacterTeam } from './character-team'; export class CharacterBase extends GameObject { constructor( id: Id, - public colorIndex: number, public team: CharacterTeam, public health: number, public head?: Circle, @@ -19,7 +18,7 @@ export class CharacterBase extends GameObject { } public toArray(): Array { - const { id, colorIndex, team, health, head, leftFoot, rightFoot } = this; - return [id, colorIndex, team, health, head, leftFoot, rightFoot]; + const { id, team, health, head, leftFoot, rightFoot } = this; + return [id, team, health, head, leftFoot, rightFoot]; } } diff --git a/shared/src/objects/types/character-team.ts b/shared/src/objects/types/character-team.ts index 000a78b..8550036 100644 --- a/shared/src/objects/types/character-team.ts +++ b/shared/src/objects/types/character-team.ts @@ -1,4 +1,5 @@ export enum CharacterTeam { decla = 'decla', + neutral = 'neutral', red = 'red', } diff --git a/shared/src/objects/types/player-character-base.ts b/shared/src/objects/types/player-character-base.ts index eb713da..889c0dc 100644 --- a/shared/src/objects/types/player-character-base.ts +++ b/shared/src/objects/types/player-character-base.ts @@ -11,14 +11,13 @@ export class PlayerCharacterBase extends CharacterBase { public name: string, public killCount: number, public deathCount: number, - colorIndex: number, team: CharacterTeam, health: number, head?: Circle, leftFoot?: Circle, rightFoot?: Circle, ) { - super(id, colorIndex, team, health, head, leftFoot, rightFoot); + super(id, team, health, head, leftFoot, rightFoot); } public toArray(): Array { @@ -27,7 +26,6 @@ export class PlayerCharacterBase extends CharacterBase { this.name, this.killCount, this.deathCount, - this.colorIndex, this.team, this.health, this.head, diff --git a/shared/src/objects/types/projectile-base.ts b/shared/src/objects/types/projectile-base.ts index ab51e75..89d27db 100644 --- a/shared/src/objects/types/projectile-base.ts +++ b/shared/src/objects/types/projectile-base.ts @@ -2,6 +2,7 @@ import { vec2 } from 'gl-matrix'; import { Id } from '../../transport/identity'; import { serializable } from '../../transport/serialization/serializable'; import { GameObject } from '../game-object'; +import { CharacterTeam } from './character-team'; @serializable export class ProjectileBase extends GameObject { @@ -9,13 +10,13 @@ export class ProjectileBase extends GameObject { id: Id, public center: vec2, public radius: number, - public colorIndex: number, + public team: CharacterTeam, public strength: number, ) { super(id); } public toArray(): Array { - return [this.id, this.center, this.radius, this.colorIndex, this.strength]; + return [this.id, this.center, this.radius, this.team, this.strength]; } } diff --git a/shared/src/settings.ts b/shared/src/settings.ts index dcf37ce..a6bb3d8 100644 --- a/shared/src/settings.ts +++ b/shared/src/settings.ts @@ -1,8 +1,13 @@ import { rgb255 } from './helper/rgb255'; +import { CharacterTeam } from './objects/types/character-team'; const q = 2.5; +const qDim = 1.5; const declaColor = rgb255(64 * q, 105 * q, 165 * q); +const neutralColor = rgb255(82 * q, 165 * q, 64 * q); const redColor = rgb255(209 * q, 86 * q, 82 * q); +const declaColorDim = rgb255(64 * qDim, 105 * qDim, 165 * qDim); +const redColorDim = rgb255(209 * qDim, 8 * qDim, 82 * qDim); const declaPlanetColor = declaColor; const redPlanetColor = redColor; @@ -32,14 +37,18 @@ export const settings = { projectileFadeSpeed: 20, projectileCreationInterval: 0.1, playerColorIndexOffset: 3, - backgroundGradient: [rgb255(90, 38, 43), rgb255(43, 39, 73)], + backgroundGradient: [rgb255(90, 38, 43), rgb255(0, 0, 0), rgb255(43, 39, 73)], declaColor, declaPlanetColor, redColor, redPlanetColor, - declaIndex: 0, - redIndex: 1, - palette: [declaColor, redColor], + colorIndices: { + [CharacterTeam.decla]: 0, + [CharacterTeam.neutral]: 1, + [CharacterTeam.red]: 2, + }, + palette: [declaColor, neutralColor, redColor], + paletteDim: [declaColorDim, neutralColor, redColorDim], targetPhysicsDeltaTimeInMilliseconds: 20, minPhysicsSleepTime: 4, velocityAttenuation: 0.25, From f6f54483dbdae593d08d8880273f4fee87f82cbb Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Sat, 24 Oct 2020 11:02:44 +0200 Subject: [PATCH 039/101] Add spinner and fix og-image --- frontend/src/index.html | 4 ++++ frontend/src/index.ts | 22 +++++++++++++++------- frontend/src/main.scss | 20 +++++++++++++++++++- frontend/src/scripts/helper/hide.ts | 7 +++++++ frontend/src/scripts/helper/show.ts | 7 +++++++ frontend/src/styles/_vars.scss | 2 -- frontend/src/styles/form.scss | 2 +- frontend/static/spinner.svg | 6 ++++++ frontend/webpack.config.js | 9 ++++++--- 9 files changed, 65 insertions(+), 14 deletions(-) create mode 100644 frontend/src/scripts/helper/hide.ts create mode 100644 frontend/src/scripts/helper/show.ts create mode 100644 frontend/static/spinner.svg diff --git a/frontend/src/index.html b/frontend/src/index.html index 54a67bd..7492db1 100644 --- a/frontend/src/index.html +++ b/frontend/src/index.html @@ -120,5 +120,9 @@ alt="maximize-application" src="../static/maximize.svg" /> + +

+ waiting +
diff --git a/frontend/src/index.ts b/frontend/src/index.ts index 3b767a4..c0c2a8d 100644 --- a/frontend/src/index.ts +++ b/frontend/src/index.ts @@ -12,6 +12,7 @@ import { LampView } from './scripts/objects/lamp-view'; import { ProjectileView } from './scripts/objects/projectile-view'; import { PlanetView } from './scripts/objects/planet-view'; import './main.scss'; +import '../static/og-image.png'; import { LandingPageBackground } from './scripts/landing-page-background'; import { JoinFormHandler } from './scripts/join-form-handler'; import { handleFullScreen } from './scripts/handle-full-screen'; @@ -22,6 +23,8 @@ import { getInsightsFromRenderer } from './scripts/get-insights-from-renderer'; import { Renderer } from 'sdf-2d'; import ResizeObserver from 'resize-observer-polyfill'; import { OptionsHandler } from './scripts/options-handler'; +import { hide } from './scripts/helper/hide'; +import { show } from './scripts/helper/show'; glMatrix.setMatrixArrayType(Array); @@ -48,6 +51,7 @@ const enableRelativeMovement = document.querySelector( ) as HTMLInputElement; const enableSounds = document.querySelector('#enable-sounds') as HTMLInputElement; const enableVibration = document.querySelector('#enable-vibration') as HTMLInputElement; +const spinner = document.querySelector('#spinner-container') as HTMLElement; let isInGame = false; @@ -123,27 +127,31 @@ const main = async () => { startInsights(() => (isInGame ? game.renderer : backgroundRenderer)); for (;;) { - landingUI.style.visibility = 'inherit'; - logoutButton.style.visibility = 'hidden'; + show(spinner); + hide(logoutButton); + show(landingUI, true, 'flex'); const background = new LandingPageBackground(canvas); const joinHandler = new JoinFormHandler(joinGameForm, serverContainer); backgroundRenderer = await background.renderer; + hide(spinner); const playerDecision = await joinHandler.getPlayerDecision(); if (!history.state) { history.pushState(true, ''); } - landingUI.style.visibility = 'hidden'; - + hide(landingUI, true); + show(spinner); background.destroy(); - - logoutButton.style.visibility = 'inherit'; game = new Game(playerDecision, canvas, overlay); + const gameOver = game.start(); + await game.started; isInGame = true; - await game.start(); + hide(spinner); + show(logoutButton); + await gameOver; isInGame = false; } } catch (e) { diff --git a/frontend/src/main.scss b/frontend/src/main.scss index 008d497..ffc2012 100644 --- a/frontend/src/main.scss +++ b/frontend/src/main.scss @@ -44,7 +44,7 @@ h1 { } .red { - color: $red; + color: $accent; &::selection { color: $accent; background-color: white; @@ -62,6 +62,24 @@ canvas { body { overflow: hidden; + #spinner-container { + width: 100%; + height: 100%; + position: absolute; + display: flex; + justify-content: center; + align-items: center; + top: 0; + + @include background; + #spinner { + @include square(20vmax); + @media (max-width: $breakpoint) { + @include square(20vmax); + } + } + } + #landing-ui { width: 100%; height: 100%; diff --git a/frontend/src/scripts/helper/hide.ts b/frontend/src/scripts/helper/hide.ts new file mode 100644 index 0000000..8283913 --- /dev/null +++ b/frontend/src/scripts/helper/hide.ts @@ -0,0 +1,7 @@ +export const hide = (e: HTMLElement, useDisplay = false) => { + if (useDisplay) { + e.style.display = 'none'; + } else { + e.style.visibility = 'hidden'; + } +}; diff --git a/frontend/src/scripts/helper/show.ts b/frontend/src/scripts/helper/show.ts new file mode 100644 index 0000000..cb43718 --- /dev/null +++ b/frontend/src/scripts/helper/show.ts @@ -0,0 +1,7 @@ +export const show = (e: HTMLElement, useDisplay = false, normalDisplayValue?: string) => { + if (useDisplay) { + e.style.display = normalDisplayValue!; + } else { + e.style.visibility = 'inherit'; + } +}; diff --git a/frontend/src/styles/_vars.scss b/frontend/src/styles/_vars.scss index 14affc2..dc4cd7b 100644 --- a/frontend/src/styles/_vars.scss +++ b/frontend/src/styles/_vars.scss @@ -1,5 +1,3 @@ -$gray: #ccc; -$red: #b33951; $accent: #b33951; $border-width: 1.5px; $border-width-focused: 3px; diff --git a/frontend/src/styles/form.scss b/frontend/src/styles/form.scss index 785e448..175e13d 100644 --- a/frontend/src/styles/form.scss +++ b/frontend/src/styles/form.scss @@ -66,7 +66,7 @@ form { top: 0; display: block; transition: $animation-time; - color: $gray; + color: $bright-neutral; font-size: 1.1rem; } diff --git a/frontend/static/spinner.svg b/frontend/static/spinner.svg new file mode 100644 index 0000000..5d0cc38 --- /dev/null +++ b/frontend/static/spinner.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/frontend/webpack.config.js b/frontend/webpack.config.js index f2bccb1..d6b7efa 100644 --- a/frontend/webpack.config.js +++ b/frontend/webpack.config.js @@ -18,7 +18,6 @@ module.exports = { }, }, plugins: [ - // Cleans the dist folder before the build starts new CleanWebpackPlugin(), new MiniCssExtractPlugin(), new HtmlWebpackPlugin({ @@ -74,16 +73,20 @@ module.exports = { ], }, { - test: /\.svg/, + test: /\.svg$/, use: { loader: 'svg-url-loader', options: {}, }, }, { - test: /\.(png)$/, + test: /\.png$/, use: { loader: 'file-loader', + query: { + outputPath: '/', + name: '[name].[ext]', + }, }, }, ], From d79900e3ea91d048a0af1d8aa450abb3127a5ba4 Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Sat, 24 Oct 2020 13:26:03 +0200 Subject: [PATCH 040/101] Add sounds --- frontend/src/custom.d.ts | 4 +++ frontend/src/index.html | 5 +++ frontend/src/index.ts | 10 ++++-- frontend/src/scripts/options-handler.ts | 27 +++++++++++++++ frontend/src/scripts/sound-handler.ts | 44 ++++++++++++++++++++++++ frontend/static/ambient.mp3 | Bin 0 -> 8001897 bytes frontend/static/click.mp3 | Bin 0 -> 25748 bytes frontend/static/hit.mp3 | Bin 0 -> 5607 bytes frontend/static/music.svg | 7 ++++ frontend/static/shoot.mp3 | Bin 0 -> 19141 bytes frontend/webpack.config.js | 12 ++++++- 11 files changed, 106 insertions(+), 3 deletions(-) create mode 100644 frontend/src/custom.d.ts create mode 100644 frontend/src/scripts/sound-handler.ts create mode 100644 frontend/static/ambient.mp3 create mode 100644 frontend/static/click.mp3 create mode 100644 frontend/static/hit.mp3 create mode 100644 frontend/static/music.svg create mode 100644 frontend/static/shoot.mp3 diff --git a/frontend/src/custom.d.ts b/frontend/src/custom.d.ts new file mode 100644 index 0000000..3f6ebdd --- /dev/null +++ b/frontend/src/custom.d.ts @@ -0,0 +1,4 @@ +declare module '*.mp3' { + const content: string; + export default content; +} diff --git a/frontend/src/index.html b/frontend/src/index.html index 7492db1..81e35e0 100644 --- a/frontend/src/index.html +++ b/frontend/src/index.html @@ -89,6 +89,11 @@ /> + + Renderer | undefined) => { ); }; -const toggleSettings = () => - (settings.className = settings.className === 'open' ? '' : 'open'); +const toggleSettings = () => { + settings.className = settings.className === 'open' ? '' : 'open'; + SoundHandler.play(Sounds.click); +}; const applyServerContainerShadows = () => { const { scrollHeight, clientHeight, scrollTop } = serverContainer; @@ -104,6 +108,7 @@ const applyServerContainerShadows = () => { const main = async () => { try { let game: Game; + SoundHandler.initialize(); handleFullScreen(minimize, maximize); toggleSettingsButton.addEventListener('click', toggleSettings); @@ -115,6 +120,7 @@ const main = async () => { relativeMovementEnabled: enableRelativeMovement, soundsEnabled: enableSounds, vibrationEnabled: enableVibration, + musicEnabled: enableMusic, }); logoutButton.addEventListener('click', () => { diff --git a/frontend/src/scripts/options-handler.ts b/frontend/src/scripts/options-handler.ts index 1806322..b67b50e 100644 --- a/frontend/src/scripts/options-handler.ts +++ b/frontend/src/scripts/options-handler.ts @@ -1,7 +1,10 @@ +import { SoundHandler, Sounds } from './sound-handler'; + interface Options { vibrationEnabled: boolean; soundsEnabled: boolean; relativeMovementEnabled: boolean; + musicEnabled: boolean; } export abstract class OptionsHandler { @@ -10,6 +13,7 @@ export abstract class OptionsHandler { vibrationEnabled: true, soundsEnabled: true, relativeMovementEnabled: false, + musicEnabled: true, }; public static initialize( @@ -23,6 +27,14 @@ export abstract class OptionsHandler { ...this._options, ...stored, }; + + if (this._options.musicEnabled) { + const firstClickListener = () => { + document.removeEventListener('click', firstClickListener); + SoundHandler.playAmbient(); + }; + document.addEventListener('click', firstClickListener); + } } for (const k in inputElements) { @@ -30,6 +42,21 @@ export abstract class OptionsHandler { element.checked = OptionsHandler._options[k as keyof Options]; element.addEventListener('change', function () { OptionsHandler._options[k as keyof Options] = this.checked; + if (!this.checked && k === 'soundsEnabled') { + OptionsHandler._options.musicEnabled = false; + inputElements.musicEnabled.checked = false; + SoundHandler.stopAmbient(); + } + + if (k === 'musicEnabled') { + this.checked ? SoundHandler.playAmbient() : SoundHandler.stopAmbient(); + } + + if (this.checked && k === 'vibrationEnabled') { + navigator.vibrate(100); + } + + SoundHandler.play(Sounds.click); OptionsHandler.save(); }); } diff --git a/frontend/src/scripts/sound-handler.ts b/frontend/src/scripts/sound-handler.ts new file mode 100644 index 0000000..97112ac --- /dev/null +++ b/frontend/src/scripts/sound-handler.ts @@ -0,0 +1,44 @@ +import hitSound from '../../static/hit.mp3'; +import shootSound from '../../static/shoot.mp3'; +import clickSound from '../../static/click.mp3'; +import ambientSound from '../../static/ambient.mp3'; +import { OptionsHandler } from './options-handler'; + +export enum Sounds { + hit = 'hit', + shoot = 'shoot', + click = 'click', + ambient = 'ambient', +} + +export abstract class SoundHandler { + private static sounds: { [key in Sounds]: HTMLAudioElement }; + + public static initialize() { + this.sounds = { + [Sounds.hit]: new Audio(hitSound), + [Sounds.shoot]: new Audio(shootSound), + [Sounds.click]: new Audio(clickSound), + [Sounds.ambient]: new Audio(ambientSound), + }; + this.sounds.ambient.volume = 0.5; + } + + public static play(sound: Sounds) { + if (OptionsHandler.options.soundsEnabled) { + if (this.sounds[sound].currentTime > 0) { + (this.sounds[sound].cloneNode() as HTMLAudioElement).play(); + } else { + this.sounds[sound].play(); + } + } + } + + public static playAmbient() { + this.sounds.ambient.play(); + } + + public static stopAmbient() { + this.sounds.ambient.pause(); + } +} diff --git a/frontend/static/ambient.mp3 b/frontend/static/ambient.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..218cc967b3710f83ffb0e3094c95b59fc14197a3 GIT binary patch literal 8001897 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
tE|=q<;y|Bj1dunH$*GZFsRTREjn)7d%-6L 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 @(t($;tv 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
  • SVUCPh5^$f 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

      $U4 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 PWKls#Ah2rpKiv72RW26Rnye2@JJkzc3CnPk9 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 c?7-(M1y)JOa-Pho<6;?>a?DQVx=uNE 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ɬ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

      $T)hl_4kIc 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�MrbsCr5^pJy^r=I#VnU}D0 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%0D)I`ySahCd#j7th7qKd?sxC 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

      O52 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

  • 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�&hUMUwc)W}iK>N{p+r# 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

    1#$Qf(lF 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 =)9zTIinU@n)|FjFi4>-a;Mx#-gdp-10U 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

    s6NPVOC*q~Z$&m^@wyJV%HD7n@P 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%0Dg(V=N4Xt*07- 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

    $U2*6$kJqF?Tns}tIe~_(-Zyk zNc+UJ+pCne4o<40DP<@rz-1vZk-PrLcw1}gn>L%z4;#14`EU@8)}&<8SL?EO8<5M> zAT24^J`M@o%gazO&HT-!O(5%s50~4o=w6^qUryguN3;d0>}?cIqnQ!_2$KjWln}+F zy;|l^kAbKQ`Uqyywc`=B=<3ocKozEF8-c>;N^^j*;Fm-4oCg8bmNiqT%23p zASd;$Oj;0Al!EB|dC~sPO-d|*4^lgE_jh;Q6kpJZo^VAJm~89sSK7hw0fFPcXURE_ zM1QTQ5M-_0@S)$&o&aCw?fBmvApqKpP(hkXSu#Pl6N@3L za=85@W@aiu=B|Dq@tSVoEI>O{x2|v4O?B#9m{`s> zw-y~=^j6fH(zo-(Pl8s`k8LR}v<1O<-Uf{H_{ZFDFo!0V#NsL7193lmOHVJHv$yhB zp(ek7eUAJgTrY-v##=To+V!9z{9tJL_;&oa)rSM|)z_Esv%^ofp90S=^_}3Wq4%0e zPnd*T`32erbCeS8htthKiWau7QgKG?qMlBA6%gzI!v+1;h_-V0*Q{206h)AIqM~#6aVxT#JkAVk1M|cB zZ5K)EAKmV=-nr%XY@AnT#;S6Xs$2K<>_b+M^mn_z+`8Kz9fiL7dVPNJ?syAZ3m2V) zc*;FY=b%&8)xCgz97-%sCtBtNSp46b;FvcEpsURV`PGPOvs3m46sIq|* zm0I-Ns~VJ(ywmIVE<~{ue-Lp!a~kug$HK9Yd2zJ8QiKm~E?{Xwfb+DLv&N@4;10S38j48^maj+tO^G&PBEHw-)*5`C+cy(fxzp&P9{lrM~LQ zjH@FzyU4*VXT=4E_of>Jh#hINjX&JU;zjPFYH~i&I>)c^`&3sC5qs#vdX|sOJ-t`$ zbOF+g`$v!%L<~=g zY?817(|c^#NDT4)dp{E=)AT^+(jLwR&4Be*I%aW3iAd5nx9}6AK-C%$4hpyuQ6A~k z-@H`arBRC3-jh<_Iop`IaN6GOxb=e=esfgSgk-S#_sn|_92`j1B;Nbi-RP!~X#Y{F#vt)^S93XUK%%}84KRPOC(@8DpS|C(=8U)C5kYlUx-G_z z(C}Y=e<}WMl+u07>#D_wcw&egdN;n&4PqA=5rL6r*uocC%oKLTCXI?>quEmgkZ2Te z8)D#{=ACa;PzU-OX=%j=nZoP5FG49v+sUCD-)TMT;-g^VnNi@Zd^H-M+~Q(7yo0XE z0Y}KAiiCvkiHbzfq)*Q<#M`Hr{E5D&H!E&MzWc%t`@Yt9&_4I`qC-$CUP=LZnPQxJ zThLXwxJ633y_~I)R;ok_5f^#KMQut&is?fyu6sFQtKXkIhG#7sa>r6gcJ*t}t4qE0%`L6i@&51X>e2fxPt62iIfLcoCUbyl0QLcy+Gw@i)o264Ve$eW zIv_#o-Fvco=pn=@?{j5X>Dk1MzfMk;{U|)Xn(PwbgeH~z6{h&ebwA!j|llA+6`bmb4O|VS2sP&6ct$()< zthUA=FUKPihNf?%zu#56JB=o}6>t>uKj>d;pZI7hyP8(Uo7r8i>Fz=HYvx)srZ(S5 zRQ)-4R;FmAwRi0P#iulDxui~)n~-_T*ow+Tg=19F%|>|8uaqM7mh6?1tyD^!?A4ye zhOME;@7GHLoJk1($aY|!+ctJSF!2) zQ__lkEk5y{?i(%IIg6j!vc+Uqp{jtPqvE2&$GTarurB3@jRlE#$iU_^RU7XQCmz z1b6win0PD%#zlSo3F-O!g{qTd*YMu=+;B0|ngrF)%f+fb3h{Qf{dny^=*TSxbc)s8mF?gjtKQ{g6j*x#6rtAYpPZsf0}t2yn23rt6upLwPA z4e@azcMSReL<9<1*Q%w(AWASnHkUM`;ev9Z=4!8CAdPdOvkHzZA? z-U)g{8(cu4Ja&B1<^6EL(VV6-Q;!TO^HAMqzE-1_eNWWXDd@WjbC>ZucK3;td%kPL zpw(>LYdET@NwQH%6;W>*;4GO@)HJd5>9Ub0sK&nD$MW9Szw`3$a#!Qo6I;2IA`imH z-PHzO8cp3NJMaH1l}za$8k6noQmAIJGX!#&+kA|IZ&1!UJ}qXdQ-iPS4Et(yJm{vvyZq$U^(V7FkG8{)0Yk|aH9n+jRjo6ZBx}c zEfK>3q}puQgKCO@+NHL)t%*abcVTR|!QPkr{}T$fd4~AvmfM5sK*w5+U$vqUbz}2d-eupKSTH5O{X${gdb3rXhw)de26%t=s)vw&1oV_d)2h2Kg7<)=wl-{Axt)LWB1r)SvGE7%T9a zknGP5fBaVwKx{D*F*$<~ry@+%ffQj24Rd%?F(mjS&$US*>^RC1#SD>GqHakeDnJX}45lH=J;JSOE6+)hk+Q*lPkl_vo@PMFx=pYW&>iWsGo>8xWC zbk-;p28ZZ%zEqp@>g;=0_#jMSip$B)OI{zBzx|%3dC>m4ZKF${`1?}gTc!H_E^Co* z^V4oKPM9bhs=l`#{L0*Jdar4N%M+oe)0<6+hd!NRl&1IG(0ct^uzNUZFb?fL5e9r? z3Fi@+yB<+pm^lb4{z8)urhvVH(M6cSq6a-;iY=q)Q{}IE9!?U$=}I-?MqDJc;=4*c zT0QH)$OIk+q5%~w6adBLK^^7=7SA2P0CCY!pUDyv2m)r2{+Wc|q+UXaZGpL5e2Z>I z@7tAR$p@9pYP=oSg$E=9$t#8C!A#HrGhN^)PN;jC<%C8GUApx1wOjumIU{l8~I8XlPxjm!dpyi8nb7}yzzRAm9Rv0)IO@&Wx=^c)b&JzV#Cu|hl+ zP}uIofB0cC0k`)1R`Wj9HA(aHGdJ^Oclo_{7DcRHv#w1lMb}pn7sXjB&h^&qu9_Ln zfi}$=`z24?Ua{prQTxr^-Ige;^-y`X#k*~&dOz37NNvw`2bKs+@SRLS zwF8FKJCxf&tNRhDV;~|TC7gHd zU)363^1kjdKH3Czh2I4EA!YETq|@c(dvH){Mt484{f}6|9eN4tX9vqXU){$aO}S?u z-R8Bv+4gMztnke5UbrY9j2>sWQO6&u&Atz9wlfv*9Lq0s7fU|yzX4e7LjZ9iDMYFH z%*7egjcs|sxY9AO@66ha1iXel>_kX6m~&#GJ--w2dw(S!4GNSK&kI&m4?sD}lYtlq zolMf`@g6SXl>x>!ocu|6bB}kM4Jw{`jn$*ngpCRfxZc+*sU5v^#~iOqi&%k#LY+R+ z&E0iFvGCt&NK7ZtY}b0uN;%6+W@SW;)4ozBTPjskCGw1&EO4}UOWbN33V2GC?7D?R zeIX@3OJc?)m9s+6vy*iw8AqDP`gNPES{D@*+ONGeOK$ZEKhXVMx1E;4)A`E1=^0wV z0t=CcLH$X_YDsDns5$6R96J0i-rJl$is~#uY=Ye$k4swQC$%3L$EG*}7zISU6j4#z z5vMLoNPey@2J)AAfb_|LhV=qYurO>dj%rHex)>!PNi=(SPG@e!Ru86tZ}ulmoD{oe zIkh8#P0dG()2SB_P`FD!5)dLR?{eK#bp4{(&iyUdf?xHnsr_kDNyOl;7H_|ef8yey za;i6PKV21ED>{nt-R9olx%D|mJH$Jv#7IiU+eWlgs|%TSL^tzsF>n8=-LG7$_>;?i zxUQ$U_lF1@FO%`>{HIrE5mwIOifoKm^Fkkrj0ZQzV{{VhP&1~Zo6q|1?;7p>*Hi#3 z-!1qzAtd@Mbpr$u`j{_aADMx0NRQx=2X=g@x2_ioQCGR@876`g12EXLXt+4w0BeJ* zp@oqG3%aD2K{4}10*@VL7!2YY@Kj2E1ad6Nd3bl%+M3SfjM7oTX(eb?#I%+_2#e30 z1MDzwmQL#l8}wz<-%5R1gtzrar^DH_>PVw{n)~Vq?gpeIcw>5cXYoVTDEui4|L*Sb z*%z{Uv8S6NR=X6h2B&$Wgv6Cf8Qt&5oNRk6Df4P8M`xPlNB*AxE2B#ui&Ish@_YJ8g6T7tLg-Vg`QwFD-)$kQ4Eg8y z|3N|VYe(`B8r8$JWbJ#ruVoyn@4&`T0Pylm(cP_C`{$9&*<4+z@hMuiS6r)Q6-eFT z0Nae%w=TQs!B1px3qkE681i*cJN!^2ov*KXMggX?D%j)+jhD2 z%oufOH_KBi&c~?k>m_vN--L>%5 zzIJ4g)DbjEmnM6mWvAplazT7cf-6Z_2|kk*C?x0V_L>*@R0$F#1F zmMy#%C~?>dO=*I;Q+9^xmHNI>)U`jExVReNZu{Q)`PBB8*Mew)Z1?5snuEOI2iGl! zl>x39J=)7o&(7U{{?vN$?LugKrCA4RKv;35!J%Lo?x98QRn9}Ba)NALsC;d?>f-9E z0Y-b<$2#*I>l8Y;k#7^093UM?o#nU~eLmV_7)pB3#U1fn_LNr?j7V5UVkQqgH-rM# z1_BaTn1W*QUgid%6$JkWV{aK2Wx%!VPQU=e&^4q(Hw>L3-QCU1fV4DHibK~R-QA6J zs32X^AdLb75`rLNU~PQv8-@b&+j`Y|h)v z9q2j4M72B$CnDU)Bz`n93ku*PLB|sk3`RNOEnu_3z7e$Kz0uj~jzsW^(7;rzskBqo zvH0==$^=SI3S~kDn=;XGals;nfnXpSVN2)M{CfUD$9=L57A!z%(1(YJ6*1;~!>`== zRF2K^b!b-WJ?an2C6dUo9J1Fxsku1)_CA&M=M|^E`Lt%W+uER?rOi_#MwCcL|K||5 zR~7!O7Oa z2!Qtoe1L`nhu|-R&%r)(TPfWEU>_eobsbtyCxFW^BpDf{Vn8ec04H-m<0GOJwK=c( z0pyX;POoey=Hn6M5(nZt$ksMNo%BnBga++1{jb+s775om#{p@R*<9b&Jxm8M82864 z|BAw$#9rKZ?QOd3tsQEU&(-mXx9pu{7tpO8YMM{6tWqS^aLwLknrx@vI0S~szPm1aQUV5i~ClpbHy+RGZDCH*S{|Ml97{R9E|2jn*39lw_g>ZZ2;vjoVU$8j{XUq zlHYgHZdiw#`nU3pc})^#NYk)yp|kN815?ddrz);-?=Xg)FAN4AJdQWuz-X(a{mj5L zgmf`B^dPU*^B!(BkG*vuHjAQz&*br6bDq{3e+swJ$>|z({u}h;M|uOFaUdSax9v~u zcmFyIo}!(tKL+CZK5n_o`QK^z2iP&5Kn@xk>BYT{-*~mBH?K%Ig#AGhSdlql_IuKz^8)l3ruU!U&WFD(2&irO6b@<2|Lp{2=j% zv#}HVa7DpVanhVpLo{yWP!=y1pss{MQ4zx^IwfKfr47Lz_~R{gfl2`bOf0XncuM4h zJ+-9OBOjS^j&t+>VLb>#O|gy$5{)RA1$-}ozL0MpX!=v8 zM0k};s9(IhJN&QEl3PdRa7ky$pGJSl{PR(_jX$ejQ>Q!S#5aT;yXXtY+ESm)O7%YY zVgG5Rqe|kZQr>^upw3~BAT)iRIII;L zH=OT+#8l_-lt81xBm7q@6?o)QNGp*j7Bl2s53XSf-&qkKDt4j$A>=52JFy`L5=p$H z$OY#Eq(ubh!}X(ikwkDkz+?v=`9U-(2F;`= zvV0W2O==X^#Kit%-8y4(Z>S)fae}kOY_a z1-^gqV{lF-$Eq@MhC?w)Sl5c$lx4#sBSp zcCYG3IJTkYchGNz7P`M1@k$&%?ttZL_Z9zY+MQZdhZ;o4vmY}Bi6vC5MV$*f_rUX( zQI5QWMXKrmY7k%u0euALfH^IQa%O=PvFQ~iW)W2x!;&n#E3E3PM#0ihHZZ&US;R_4 z(?+kV_D%H`i0AY__I`Ek zM0#C2=T{Jk$`2nqLv1zB%Zui{wy3vn)zV{4QfwJBW)yWBxe{)$@W92KKX&G-V>gYW ztC`f{1(c=Y89Po}^H#^#u3uQwrK6+g$%uyu?n-@}cc&|`v`hbaEb#cV(!ztU-G6RY z-#K^x4DH{iIeAOv{km16XumE5-Lih?&A*~xW(Gjq`OHBP3~X zr|IjhFGXnCGIe#2WhhaSCPn%;kV#Osx#X(byLFku2C6FreteyNc_`YyV;BMzs*k zTx#$P?|7fbWHiQ)+(|219h0wZhS4j`L1_B!B?{|mAGqs->8Df0csBCXySP6l+E%d4 z?uJoEeL3Y)s=JL3Zq~PWDnM=$#|L*U;COQrJg-Kh+AHqH=sC4iWLwpIrYj^E?7f!j z6n)@wE{q;Xx7rnR{^I+%$oWOkouLfzEei(4O2V#hO}>|n9_DY`pWsaH=|_Prltc^d zwhyEaF_1vdAn(mskI&2m%K#lm#X)0m<_I}BezKahba#r#bts6GXQ-dZXGxwhV1$pz zXKLlqa_q%2C44^J6m*YiEfs#GlB;S>2%hJuMiI*2=XFL8>|hYs$I__!r|Lj_DjCl= zVv5PF6uVTMuICjKs$2^XMwZU zXgTSd(q$byT2LF75P$m1MO3r__0(c_xcrRJKk);a5 zkUY4{@5n@H?N#`Nx-79*D!t#?)x+EIg@>E5TELGo-+{9jQ}bL%7=zh^f1FZJOgG+yi$@P3Cm0`lp> z@d)VFBzY@7gudaID|E{`!RN2}cyMhjHNSJpP$TowM-bU1Iv7HKQ*=e$SgbQ*p%fji zv{dk>VDCp|n4_V;^=KE`{Y6K}8QGJ2AIz`cy1f#9!|L9VWRVP?yBp?U>QA}fK@-N* zsTh^tG{usR7w;}g?)6g>M>4!N@yk+An*cCdR1H%a1dL|3&uFrfOLI&!DRB&bLCv8C zzS7UQ*g~Gu+d85m*+BzDQJ_MktEJu#u~Hg9cf{1gR2J0{Nt_^J^KuQ6$S4T9y*&Ss>w{ z{Id|CRwWN!0*zkmdu67EN3{{6o%U5IA0LBPcU{s(MvPLkJCMiz=H2C_`|iQld7>)~ z(lj9O+WUd~Dr_p@Yi%#f)e421CyHF2HznKgE4NxUCo~!7q}1EPzHNV)=E=Ie?0Ph( z8Jq$Cyw~5RF&1Rk*C9W;Qu>g)aB&jt;-HYQbZ@2Llc$kOP@0-q2H_V4zo%T|H~&9r z3cyk@DD_OFf;z*6LHll6^ODqp98}zBHjXS`2D%U(-<3y5w3{+-2lq%cibOZ%zQ+&7 z;^W2Q4MYn}a{$B#Iv~0_O3?$hP+cGpxk_ytwPjqnODeh&ZhgH^ito$20ZbMvS>0I+ zW~OwmvWyN`@Igr`f#l5U%5wcGF?pY}CJvgn$W;6@X?ABp8->i6)6jz5;TVzt zWFKR4cL;~Oii&eb;xN>!N5%MphCK6B#4fC1^r3fcx!3tUs^&1a*A*(cF~%C?m}Bk6 zsCSM=O-c`Mwhx@;WCg0Z6RN|-xcAd&Dl9wvi-VklqHC(xUOVc%*8ej7z@^uN?TK>D za@%1*sow9@Tqw#smuj~Nj@t>!H`?*cHAf`nk^-;bl8zg>2!K8uvLl$wKcJm|jefO8 zE23}1G!dtpKz%dmI0j+!MRrG*%tA#ZRbU z`!m+X{Z4PAV4iquGUMkF8^|vWw>6iMob_2AN#T8uEk2m;ZgIcKv$c1lZxE~=adeQYkyW_@ZBq;?rW9o*JSIVY%~ zjP9w7>1#!G6Aj^qIvv`df4&-d@$liM=VZ{^*|~35EGE77UyoPkLGRWkqp;z*4bZa0 z@zP?-GT)4~fIR%9$!RM+dfK?W#2v%jkUksOqt5K@fC z`GZIESj#=5sI)w_k`rp)fIv*<@=TYC;u-!H()cdvnJYy$Vtfa9M;)GKAeP0frZrY( z(Nj|M@$hn@*~Qb8eQt|sR@kvl=ccx|#ta{A!-_|D%yFfl->J_s$*kPeS+KrE?eldU zKajmEe&No&i?5sVIvVMgjNeKmFe!;+Ax~b0eqUR5D}DR}W1Z7qI{qd+ocESAQ&P9l zi7UU)FWz1M4KPHZ!E3?FQuRNb!vEV7`Cop6o?J%{*0K)77h^6gt218azJ8YvCz%#4Y?AH6=4aQ8$ zP6$Ox|1o5i=R68yCf1ZH*X%T#n_mg(aacleVj=S$^*M!_x}1@ z3KmEP1A_6X2$xfrhzqg9NrW;cG;2UG-ZG?}$tTAI^pb5DC{Jnv;vl8csCcUHEc*uV ziCx8vLygIWfsBC=gr095Qbg<$rGXU{^J2kR%y+o!d|5(R7G8M*0w}(8mzUTTN*xsy zsmO|AMREqRg{I%pQHjqq5XW83X@Qq$__u=9AbTCM@}VuG=*hf@g^enWBj-xmi2Xr^ zIlt)&Y>UY~WOe3L_fbx>NTBSsYiypPzecn$P@PH+5w5d#dF1+g6*1qF z!$Q~L=QnBxrVI%$yY@^|D(g9p7S^+tR=x>dqvzk}CuMU4e8iuRHc?}{blteA|8)^2 zy>Y+PpD0Vo+nl?GV5OUL+jqq>9oOX?f7aHHsd)bUls5+PT(85ODolo>qC3y#%73fb zXHK?0u2}!i?{&wzZ>B6(lGTcLZS<$_1QW<(NjAE4kxK9htI27)@{7Z7BGbPHEeC(8 z=ryhN34}O8b+V^ENG>FtM%J%NBrSrA4xSjD%8{aq z80$IV&$RI5o#G%#?M2MHUMT5+K@F1(d6;rb7es4yw*Gy}bgeChb*hv9+$oH=-Kr1M zu1buzQ83qumSVSlD7!j~e?gK-AD)%|yIrC_q1ALhYt=t_Xp()Ool4+nr9*)Vvr!tF zRzU6;;ij*xKMJZlq3)I0e9vzpnChVJnd9zhwR|h8^)_Gkv|iCJzdf}=n2c|CAHI12 z`PRX==_6I=aNeIi{aF|TdKdR+PW@Nxu1=$U>au0fkEOuP_f=B&HedXiI{&i_cy~KW zW~xuKjDKIWb0wWzEgZb{*XjT-mRkY3o{@kR^b%{vQw~*;V9T|QVR#aZhYksFolx{= zc#5qAs#=2wvCD}RKywDBz(T8<<6$~Q`69G7eh@ixf@T*rVX8-a2TK*MXQ*s}XxxaB zXq;W}mC>6^zdxtZmn*Yt&y0(O=Mz%P|M*C$nTqC&qW+K*#HN=sXzNHSJ0@<5Pq&r^ zPZR385GFSna@C(-zg$aBG8ax;Ic$W5?!DL+V{u<-)13EkU}XG!-hOg-|6L5fs@=Ue zw)J%1?P=<~uC8moJ^K6iyk{!^2Y^ys6UjHkj7%G56FJv4m$4n-6Jb*lM|MR% z6(@}qL#9TgBY6}#k(Ejb3X#-oEFm9#^K4>a0(mq05AM?!o2%5ZBNv9K#?I>A8CCrw_(+;5+JR(l%t`b&Iv{_|q>{`LW_R=u*VdusH=1!Ai~(-%@HzNsUhxIR&Ebk!PT? z(=;e%9}TwC6A_n6F^^3fa>zGr9BLdhyL)$gFxVCnx*t{MscD?hcPy86741TU=L+*p z-FI)5Sn_lWa9gn?>tHpGEeQ*l+73RO{P4-2I4FjZoQZYt^LR{1;G=he4Kp78uU^-* zFg~#C3I8^8mFVt$os-jlmaK*cMo^@4Wm_bT^EP%ciakD8d)4r6V+Xb<4nsyyze%ts zEj#%&FI0(pLBuiF1Wf5Q0F26uPm3#k85__YLD8aclwAHi9?FNav7u(_FUuYARVQL) znfw9UL1W+3SJyVv8Vj-pY1<4iaqZilm(=2a?apOaKySxR_vyJi z<8CSdr9<>UF$KdN$y&De00b%0gMEqj0ww~)YX``P*N7!@ija#CFU--=6I~Fx4ge#u z_}GeDP@xjV9&1`vv~zZPQ~eiT)91krf~95nK6vaD#7taP`C657I!9kO-$36KE=-Js zg%^^UtFG)eP-Qt8i(0ps)UABAIJ)+)T15VmBB>C#c2Q=?X!L$BBbRlv8N-lUFt?vw zW0UCD*1M2Jf&Us7=8O(Y*my6gaAB{O6iiAbcGr6;_9}Kt=B!`tM!op0jdfaogZgZ` zhpv>TW!7HgF4cg=lNZ-gpNtgoJ1b#?rO_}dtjx5Th_Ie4t33>cHPEFqN|~nKS)LZY zaMUGKG@XVc9G~X9iSq8tBnF}{OIFkcnerP291%*awQp6}g<;dp44_gR63RtdRj)Q6 zm?a;ps55zhIhsNNdVGRMvB;erAEvH~frsi$kSDQiwXXF9Mpv$*l}FLL$Gp_OvbwH% z@&a{%2b%M*E3-%&uJPMrB1(_$0W$o7d5?;FYqUOXR~kO)MLL|F3Y0-@3pP4#0zVh! z^p7_hD1CYTO)s}EOw7SKFtC34o3bVwQ@7XY-v?ZMr&s51v5PhZ=nuD>@IQ8Uxy@;8 zx;8*Rz)*5+iFb4rm5f|>4_&G7jZ8(&$=N@QiHaNnDj*0OQ7wew`#fYn-mOUMDmnpZ z$4B5vmktDlG?EmY0K4;IN=iT?rdmkGZcz^EP z^xk{m8iSGX+-$(4h6^osS?AP#5u$(1wktRvMFI7wJf+RRBD4S)hzq2iv3XOV6Z@^@HM8 zHfb%+SiE)p7XLPPwza%Fy&0EofB)U)L(R8_zNfP@O>!j;?S0ILn8Njvt>WV!lTRPq zSlE}Oic9g9%^k$VbWf_wPlbJayvq0;%dQGQl?!pDOic$m%4-C*WTO?V)PoXJLuvw? zIj}wGLmqY6$V1d0(x@SG^sI8VCRQ7@h{r{}+l6@xJtQpML*)`3lJ3Z(C?Q-RL^-SH z2%wamOcZDqLkh&U6L4}azSJ^>14^NqK5uw#ss91XqK7jr!ZFiRPFu}exgM{0{2h|V zPN(in_$A+zZoTq73VkEK^{|tqAy2htyKBxMoTY)cVtK1RCy0`r6CMxq#iT~Z!owqR z$%%*3?1o7c>KbSmJW{@FFt2U_N{4oQSt&E+v#!J$za}YFL*!IWhtP^dOJpcJBH@iA zSt;xMF4Q!}BHAPoBII4-mMoEg&0Aff&{S1m;SfTNe?GoG`^^GsQq*_=@|(S75*bXDkQ5 zbchP}#6FwnAt(|@3V=qKNMs9uYv{~rKmlk;gH8`mn}XNvk2T%fnzpO8sBsS_s%)hs zjwouJQrPob&Yj%v#aqs)w%4W*P)$a8YX1$f(3W;5W*2RC3|$KLHWT+Yous!r70cA5 zyq7|;FYQ~0TVxh)P}z*VpYEYLqPgA~czJL5Yb|-}Gw&uB%PNI%sc%i*vNx+W>2VH) z7oFUQ`{K|r^T%s{9zA-kUEK+oWKbN?0F@5CCAS>SfOgCa(~t)fso6Z}8T}wVUXm+r_tpl9*PT@DGOkUE4$t^rR+pjv!=+GtgTnYu5-)#wQ~!Lp z*ROrLziU#G>(nA%ov=Rq^0%+X(%vVAAH8J&37JV|q-3ixeIJup!_Tw(n1AN~O1Bv( zyviF7oS1}w%GTTmh9TYD4B>zKAa}}(G1l(YxHu|yW6f4Vy(twNwnmtvTtZ_!nHtoa}AQklpL+<4P1%K10O?|1SMILtHHA>!nZ z0W$P;bN%k^mGgJRaZs^X&|`m&ANQO!fQM!*J((Siv?8RV5f_b#eX?zjaYWtP$I%9- z1`mwr3@0qx_rKnHewI3`{ExN#J;*-Nt}~f=bqOt z_xim{)^%ssw`V@im3+N6S=ezN|vZcW?b}$NVFG7otQQI7CcZ*up^6NBj&;@-9lAT zKmgcqIy`?M0xk^Lf$)G$VyZUo=3K-BO&|4O5FjpKObbdJcpn841$a=XIT|jr^k67L z{9Adm9NMT0vf`8TrJ%xEZDSHACbJ_shQPh@XDd|e#S z4v$HaIbDAxTe`6-Lf3f4^delFV?GpgB^HCvn#m!20C0Y4Y+z@-RN1`zpggV1lI@zO zqeiV*ze?R;mWZv-bTYz#g%-Fwcm;U1v5X2O9TPs2cbU?!8P;hfMt#$!vpnWb=YDFqZy9k4B}<1&@EbC}WeO9z;;^r+J|rIvei{9* zJtI(u-)WGXX&P+9GZFmRU?I};im1>P7lU&)5<>z>M5UX6C&9q z9-P{uCoD_hWON%EuzWIF(L<6Xc`m7LhE}>qaNkE`m?>u{Xb)8r9rjWs26#bKm8lRXd>VPrA zOI_k*Ts-O9(^}kL*f3hDIr)jQKuoZkU>+Tv9mcqh%dCOh8HBMth|D#BH z$s#-`-dD1}CQW4!`081M@+KdjkQUvBK~DGOq&%KkW7&!q;ni?4Q-9?f!8HVGNZ8! zq#+R?Fl%HXUTggzS1K}3`P{=7POjj}X;d3G=0XS$W+JqJPcS%&5@jnnsz$3Y5lX2Q zMpDC^p{8(7uXA2cE0D%h@FccgsBbCS5GbylFxk-rYezmwp{fS%hh{@M(c$-uTs~JP zAC=$apk-$*C_e|~n2$x=6)`z+HYE}g2DCs*HJ^U|lf$9C>SLz&!LNv9-P>$~D7!*L zSEUK{a=b;2>ZU^OISHf40Ijvg{%!m6Chg%l_J;xT9I#Q(wc99*Ic>DsGx<*IE^uVIK#ZI z{5%Is9=0Eaw9bR4GC+ulK}Okk%z4GemJwCLfh**AfS_?D+RTi1z)CZY`008Q#UFU8 zx;{&lY4ePnmuvpc+&W2o0k0Q7n|Uyb+wSd3-&8rF(zDnAD0BNSK3x{%`UZGBBV~xK z29WAm6z!~5%bg+~>%8mqPMba$+^hn|k%CD&GAiyA3J!aydi&GL3#t%Db5emm zT3_dw;75W=EFS@cMi)fF z#YTajvr=E(p*1>2HS4|_r|6{J5-sMMVJd8e%hA0d%`w*eEqdyU<^u;0 z@4V{324~sq{(-TpRpt8)Wk#Uw@8Tujw3uyYhafI=j;j3QdroifE(e|;`hKn@K*89t z9pfSBrv&u^E58qtd32~pa0R%E^!<_A447?H^avsS^eTvHNLQXjYf-v)0;I%@Ur0EH z+I5T6*h%HZsX8+ta%TW&z%Vg!v?g|nMH8S>X{2O!{Aih}T^YeZMQq=ZW{aea#hGRT zF3eJ1=#DA;UdtXH8z)LM=b3x6N~*i{K}N>4Sv!ul$5`D=#?aZ5F-IE|DqY@Trrp~m ze>@zgKkN9A`u>q>e5aq=@4q#=ukS9e|9p7vaO16G;s-f?@k06y@ABG}oLmE`giOX& zPKnKSu%ul|Yyb8)E|=ZL*}&{4#u-*Gtq&aAW>U7yif6d*y^9k``eRa6&u9qIvVnlG z=cve*v3~QZha1(9ct;jgK0jpbH3#OG0E9!y8RetNB{A?BMM^=?O8clKVi1g{A;6^x zlBdKVs!6qBw}G@Olz0sI^i&wnv)hD>(n+(bxGqXX;0|qm*=a&e-Bg!WHes~cBSsRg z`_0z1c67;fDmwhDg>KuU;-9w)G=EwLP&J#lAz5bFQOcB~-M#n0wlVUAde%;q}0`A4 z*3^{KgRAK)Y@@cX=Z975|EE*Ak@4rNz_}%;QB6#x~JeN-Vjb!l}%xKrOksd7WMHfo+T7 zh(fhpgBqd*AV~KtscjIKDv=TYl@8Zb_4RWbvxnfu64QMSJkwPdl<(}0*KD?pqr;56 zcQD_n22uGk2)16krR9`>c5i2cBU3r0Jq##ef5VAIIYe~dLQad@xAuJu; zAE#&i44(;X451lFbwm}!4J&;Oj-nr%%)VbO<_9j0b;>Tmb^8)Oa zML-hsAg0I|La03(vNMUuL`LObQD|f9iXZQG9g>@qG$Lr>-V5^#wL4b3wLT;#CH)&8 zM5H@b{}4WDR;!xC>1g*=oX^UumuehMFA663z9w`{SAG7H0Jsn3V`^t#iF0OX;4gmMcpc*RA>RTr^=y#k~TV@x|)=O8nZ;*GU{eT}-vtC{r6&;CDt*%eO74_A@MofFB^QP2{ zpZ+Gv6pQ=#nEy}o;xXy~c}SSclrn*Pou6Cjw}4(m!z)|ZB$b7qYK@d1(3tQAG6eZC zh^PgGoarRjmw)lNF>Lwz)q?UN&qsom4d}YvX67f^gVwQ{5D%8!?!?~hk|L8kK?@7B zc?9SEO9#B$bc;b^S>Kp+*eRm_@`{s#yH_fJC^OM<9uu^Nfs~=mdkXSR5l$%;CJbC8 z2$KFGH-p%>f|5%{Ik$}oGoGe6F}!zW_%t$-iXv@Bnvxm_RN}WZq^v%ZiJEy27`LPA z+ZT?~HA!PN$=>FEYpE(m4<0drozL=n=HQto^wp?Vy1E(k2B@?;F2s9rF^0ud!0Dfd2oe2Y;IMC7L<2`T&39G20iINyS zt?1w|2_+j7OqHGr#jdC=;GCj(gVUM+a(olRz=>1K)%rf|Vb6W^^^2A`8XcB6o)<7{ zQ`SAKY8HR2E&5e*0@`>!J$b%klQfSclD;~YwJ;yWS`4+-oyZmS6?P(I` z70nxwrjt8!Z+Txn;Q$F%(rZ#$*Rf4E@zrxUp$kq?9j8M<&fjBb^7&Lx{6D!}me_ z&F?2$n_J8dx*GTGGvVBd!hbt+DFF2GpV7HD)|Z2+;dw%!-uR31d{1Wjs5OaPek?`& zylpN|q~Q@D31oN)hyYLz)RIn`3G zJtPX~T^!FXHAZS)&-F~3IqmQ~tpXk$C}EP`4SRRH#|uGg18)+Un>{`mJrA!J%|X;+a=Xi`F|fD{#WDhkNG@kO9nGAeKdVn zhJ?-X(cFlzEF6It}_TK*N$;mI}*N%KS6f_^Nw5u>a7P~3p zaea%+)AFzN?!F|$eNuo(B!vx+&vxd9M7Xs59GhkLX85*pb=mjiU<}?;OW+S=>Ks4->I-`{XkZO>h&Og8 zLf4T)WFX>Dn3EpylC&_7Tpy1mZ=M#FMiB|+qJgE6QEBno!(-%`x=M5kYhL zA!hFG6z3;T7AzGVJXn#$17gVX$Pnc4;EjaN09-_Ba0kgBQ7GaHZbj;0$D!CQ6btsm zsPqAnTg9E}R+J%TfY-L-=yNq$NAhEob44=gaxPS%`QlzWSNda2)r>TjJZP8t@~+g# zQ5H>_BF$MpKXJ>&qc_>f515j5wm$3UM2Es(k+1~tve)Z071ZjBY=V9V)h)~KSvB2ie;Tv?Dzq$YKg zteze@9uMXN#LF4Ii!B33%R*v#2P1QZV*4E|FpO4)9vzqJw3}0f^`>o^fl;C#tV;S} z2Qd%v-5*RPFJoE7D>{ig><^jEXf+X7@cCPxpCXb_cf93x0uj{LCgLcTdhJ`!=r-A4c)P zt`1%qA2Na`hy88ebU-^J4_vKf4oC z)%+_8+%dP-2Vpa1xlPQ)S>o-PLW+WY+HK_Y*)fc^wRGlIl5Fvdw|X%;T#&>@M?>mw zz&ph*Vj9pY({sLbi#f98U0Dq$^C6E%`95s#k z{nXj*C4mr{GvX;KINBXWNC-#q01{DmflpDk_$@y1iUKC-t1@YhQbJt9_oPJNO3_Gq z)8lOFyfs1z5*P7+0iZhr=cT%h0kv_*9n>(e5yZ-6OPsf-omb7f6n)ovf3Y?%)10k{ zc2xN|RMMh5Jr`NIP5q`?uL= z)o$$0YK8eC^r!4+%dEwgy6&jQuU3@yzW{%(6Y-Gdu=Hhw;@wVzRTv@4kcKdEXM@j9&ps43>+4gnL@UF~RY)}&j~-G@(hM%& zsPg>bg77Vrak&zvJo<1s9EO;BfE(W771ZcG! zUZoIp&*iJd(0`O2%As((%M}H^?HELie%mWmH&Dqq76@dVNbXlW>ihcaL8!NN^Q-Of zPX!;ABw|Jj=kCw;tv1)0DI}ep`~`je{k(bU`TvX$|DVTF{?j6!K^@yFn_`{2>gBg8aVXJ@ij2zOU$V1AUUGabf*MV@pVm0sOVhA}A0SOyI5 zvzA&VP(%R-e4+=+?kCuHOH(akX6(AU+FwRR z{f7U)=masq&^2@;?a(3M(BXizl*rI6tsu(KHFP+1r=YZ;#Lyw#El8&z21;$dzXxZZ zbJqWV);fFdho3c%=E-~A_jSLn*E?U_?9!qgQ*wJ1uqt}_=nHnFd`hcPsYBNU{7G&b z;;sh*-*rxh!Zoqm0MX)UG;^j%Wg=f1j0-cF;^~k5fL02H31Qh1DPtzYU}_;}p{-O{ zS~N$<1Q$bYz-4sSkU=(H0PHU{lUQ$87ib|=DZl@>`D*4tIzKVt8K%|-K!r96c#*#t z*+A(^8JP`ey2vFtf6R}4^j|2D%zuJLtvKPBR&2hVLMxuUa`Rwa)gpNQg6q+26}!$& z+uzy9_#v#jAm-96?wJ(QL`hjZ6{5ZQS8pNdrD7^zkCZ1ge7%I0_`|PC?2pKLFz@4o z8t;-Hi+MTBOL@azV{6;4{;ia)`c*!fQrrs&9(!NypJ@}AYE|~8k7|0f#z)GBUwkpq z{ruMPjpOc)g?>-g*PCIHEBOMpTPY-S?`aqJ0BN0O&gP8!V@c#Fap3qf*LW66WHb55 zb1NNd5Qdr%BLItM0-K}tR>4Gg9KiCWD2DYIbDwUjlyORE)=xOeBEP-%>--jN2aGm% zPU5Agvqa(ykk>JJUh7jw!&wER@5i`R_f`_Oy{O1xVPFdpg)IEqTn@?y%F{EAQEW>?c>P?44av-!op9R;GC1A?F5#S z;C9D$*W52=KE9ngUzl2}#nx_{E^h;e(=@M~@>u2#>wLf5k`qj=ybApO_Pg0%3g14q zQPt-1X#hQwDvWA<4d$f8nMGpfnyFlLg3T`I!XiMFnNThxtYSe_s#_%20WSwkoiRpT z!mu1z;2=uCODnyOu3ENsPYn<3g(~ zLQgA1&m*LYA|=R{w4WN1SDq?dH#@kae{o_8)h$#VrS|lF=kz5|TVmw?vwQG9k@RYh z$R8!!h9xzo!e)-6#fT;&U6Eskh}N!cE0wU-?p~RsLYogwjEfyF+7xGq55L1^KYnOE zTOZ9jeDLR@H{adtHDkTGWV1|9`TQ3XFNXUH#6O%be_h{daevH>WgGtAgu?$vLi}$( zz(2tN&tggbe3j5DK?&}?;-IrbQEL+L7jPhBGv6w3EoJ&-NNCO;Io{Zk|jq)$VYz%K^rG==1BRl@6z>`Chb9Aez9gfl>DHKUvxn# z1V98|+k(P@@i7uiJnUK@iY*!DqMXC5>9RS6&LRqwU_4Q0p?i%iAWBx}Y=K;ox~O8< z%HlaKJEkivoO_*O8q6RXGMQw?Y55<}sQ9xS63rIWNxfq8V|`@7@ox2jedyKQ>cegv zCASUfosF$Zrs)MSemXVK$|Y&JBt9V=Hf+;CZi1!=B^?kzZFG+@;jvus!a*Ds2t!DjsL?2Kh%6M|? z|J@W}amWB?r#L6u&J$+~S1AXMiz1o1Kq!oqevmj-(sTH?_3!hi2+SCJ4_FbXLoE=B zvBc*Rz~Twn!V9a%5NK3*Xg?P-duVhTF&UA#Ki*nB$W4x7>WyN=`p?uP2^HNQnU?Y) zEgBCt?H?y2pZmaHPzm(B2Tc^cW0CK4J>!!~car6m7sr2tTRJ*5MDB_cOsIIme!}*8 zkU7*E1P$qlR7`uQ-y;+KRW3{VMhAkge*dy@Cb4>KLc)1|h;w(JHgp#R!)?A;?#zrl zv6w6A6_ATx-_gcpO)0MWv>9X%^fkQ-Xm}Ke7`GY>9C}0$&Jk6H;P2Im=sy4T`dZ<- z?zTn>{PmI&4UxwtWp3mOl`(yw+z(r?fT=<#lLK$Dej%A5x&*OgAytuHM47N?`?I}4 zVnR|FK!t!3#E@3Y46#xtB@!s%xaJsc=1J$6!%ZZ!_wxrl7t?F!OM1II)EjMTSh>=m zMVVa4<6}}OO`x%Nv7GquWgjs8*;6S&CfZ%GQf-+X`H=`Pn5vnvDfd0CWr~mV(>^6Z zvNOk8kF^bI{rkC&bg2^MF~luv1rAL!Z+;Al-OD5x;pMv2s~=58sq!=J7iV9o{(V_S&IBx1m5v_5|?VnpmJw)fNE1Z{*3$)oRHpnu~eA#p)Q99jYLD`hw+~jZ@pv}-L-7`J z(`Ekl>AUJ%YOZoi2!<_eN1ZTR9X-WI2ERosCClSxEmOJ$9NA!IX&3GPN{?p@mF>jo&|DHO#w(XzD zH7SrQMIMvcP<(1QDXex~#yzrp5|^*vqsh%@ORZnzoyvK`$%U?>-s;+VY(e6!l;|VY zhKXeMw!_g8DntAc+lU$V)}kmv4tNd`Z?zL;Op-V8oTWVB?1 z$X0RBwCIVD61(l)?je-`!%OTq0C2rWhrzTviUlyk3#;xD22FJ36Tybfh<@Ve@zw!& zlp$;QF`GmVS`;95hel8YG4Cf|mMc2YL)eT2GcN!SX$pe#9#+bz}pcvG`-Dmi-lFG>NB9a%NBD%cOcN z8AvN+Fd2=G#>s;SNOElY5vI5XBX*~k5|6l1;=C1%o|sVS8Nlf11Q(+(4OHtw;^q1# zo+w_75eMhrqOURK73^o1}W@u=%2_cr6qXkNpSR!s<8A2KkaV@mO+D2tKn>N0)}{E(ztO?_wzVJq?U&aCAX!0 zgS=a=p#axLKO)HanK<6z1GkJHws2E^!hvRmmE1gDNr44B+xsLFJ2R`Z zL|etlh{0?!7hc}WPX9;@%52i*{;t$lcFyX&xOx9~`S0tmR|oFP3XuuUeM=`=Z(clkZKfg3 zXZrRmD%?)kQKIHHRR8h+esLPO4+i3TLZ4A)p3Icsv36uI_*g%LR~)#R9Peph3E`$?z8jZ@ITK;N6DdMsb@I#cC-4 zsW7s4bMiLhcZwolBD=*r)`-Z1)h}n3)g|F`whnDDM=rT)#6aB-^HlTMWNBIMv!9_X zWxahw{Uu(ryaU4|8dH2?(N_U~#;jgCOPV>T%~bf6;YS=lbVz*lv2O6_Q@qny6HI5s z_E*(r?B`6w=%{m#&p|pJa?v-LPtA>Aj|Bbxvntx~vHWYpd#m9cm*b?14DXANERsrK zQ7&VA#DilS22d)KeTAs#V6j^2rYIprF@S?pmO!O}5fBc4NFq)(#V9HV1){j{N&d#H zLkNLgA?xbc)I7P9vF)mA zwSA4bsSC)J6yz7eX3HB;X>}(LDf?^>NAXZ*42Pl6-cWpz}zWc_AfR@o`o|Wb7xJhxzH9k43iZJ-+S+T-q*v zesYbwV^aV?yz%9jRWho9<2GB8$D7)DM5V(jPS#J&zi zB~#iVAylHCrcnI*F9#!fQ0{j9+8p=NdNUOuwqZ^X0vU~d;6$}(9C7t~UL@Csc7aBN z4F3WVagsMnwSX}fD%dw4u3K&%-2?lTYrTth<`+og*>fIbQ_qy+aQZ#y`f(~__lWl& zh---ufkVxD6RH+`PTR^Nk(GJOo3`{3vFJMz+ty%+UnmZART zi)?y>)x+pi8lnAZNoR6vXsa^ZT$-*}KtP{JZhWxM-+lk}(Q+TYKZ^ZsV;3bs3Cm4DPtwB9kSLI+-dQv6@AOMq2Z zYg{!wrg8{AT*{|ot%@F$e~1x|4BGvagMr~~4Ismk>K@Z*L)J2htR2FXk^$=>F=ZhR zN~|G|2_Q09YY9^z43-w}(u7A!`ZuF^Pm9p{NY`mJ$3A|FwJ>oa^ECW)Pgd;;%8l+w*WG!Dd%rOO9q!!cHBEb z3lL3i;QF$WfEvp0fl1nX{p}UT?X4F^VWx1t?N=V3+xSus#E)%dR$AjUy(9&Fr+c!= z&U0~0Zw~iL2^FvA7d&h$j+??(uliUIEeJ2a>Af@a7eo-=&69|%VKD2hLYN^pcQ#&; zDmJn39t?2_)G>Kzh1y84M`h|A)g6?JN&{<2vd8q7F z3SdTfT0q2BS7s5rVd&2Ygx9b7Hio4NEL4h&7278A4BxYGa4l8Gdx_?qTQ6KwW;&d|3cyUP8(+6olzIlO2CgF0#4L-O)yWp9z&kHA7U6k-IYF+2ADI-B7d#K zd#(6z_F`(1=2z0<4o8WpFuS=Kn$za;;?48@oL%oQPbMl#+Y650&}bU<+037`U#03; zUYe}2zNj&jNL_M0yf&b%(>8ylaNsNdJnU$RbpDf*)t_=7w@bxo3xS)T!`0V(KR|}I zwLHK3l|tlDn#u&y70rRH8fD7tIGbMD$S`;o%8omddY#JpCvO=aju>SFP)DpVQ`sm* z_9DrJ#86-|7HMjn=idlm$I;zRq=BTc>#4jpThx48?zCa?e274vMXj&))^qFps=K`LeD1W8+Hh{|DNb7} z;$%B*XUk_9HYf~;ZVmp^{`JOSVM+H@OT+3v;aX4(6%-Gxf>i#d4J}Bc&`mo1gOT=p z29+ov9?6{1Msj%8V^}>kklg54=>2uz2vrgQsceCp5Dm2!EybM;fl(=-LQKzMNm*AU zCx1N1RPPC1Xg@h9k`xS?IVdrAyyxZL8}h5;CJDWcU={+yh^gKuQ3zRb&oBTo-YI;# z)_j_2qVLMYM9waChklk4J0}TQDr+b7SZ_^GM4x8vOr{BOaJiMQ>eq51 zMrP`%3BPGS{64tiBA)3C(~EmBJt+JsXDihyZP=lXZ`I0wKgT{c;zalT?v1cOd*y9j zd+$&G@AtO{{NK~2e#cxJ?aLk*9eiAA>Hll947mBfHB+5@QK0BbV$I z1KivrEyHh2FEC$+FvYd@LCvZ$c+3<48*`}cN3#TZ#8vLPf;DnQCE^`{N zbo#>M)BSQ~MCe;bu~X&&P8wP*Lzn}d*dz%NqnEb#+lvFdvxOF20j;OwSsZ<%@$$WG zE;#v^$q6t1q>D$8T^_OANdA%6tKp`kGe7+D2)!C%K;Ltd&@ds5=irb|i5<*b)5`Gw}m%+eAcL#uPJ zo99=i43~S^)k1L8BMNEj9p@_OYQ?j5xUx-NoF&?{Pld+x zy~6=32#^Hp5$ap&>wZanDyevBP#hDKkQx|+z}s<9rnoB+gy$rqNu`L`H4;!cBvZO_ zq;>y=g6QXR%z(^)Glf9JC2@;N@ZC&d^3JAk9M=<5ym4n!keLUXuMbRX^KeJm_zJsh z^1zDZ#(Pl6H`OAO1Sw9fS&rT9#9D%wl7o^#5p^>z5%xw|qkH=gpF2F)t)SJZ2-y0B zYkz4AWpfQfjaez9BFP6c+BNsAS7>pTvZ*Vp>czIr(1KmfaI6Dd2{x zwjbk6vwVWkKhAixMgH8UomU%4k4 z=g$iz2w7C(b9f%Xxkp8A$brU{WRap5){%@n35w=&HReHC+lEi*#r_#iS?D{PJ!sH= z!r1AzIpTGD`1+VS*sAH~mUzVDYPZkdxif8b@L+kZ%UP-ktFn)Z8&18u&_I6$f35rS{o7d3|*iVkD zwJ+myVDEC!!*}3_3UXUF3yJ29=gxg;W33{Z95wKon2hueix>A)RVNf>x2t+VMyp+@ zU*)&0;WzCfas>vL*B{wN&x2ZYMwjCwN7H&yV2!Y;##H60o+6^BUhu(tJT+2O7e`e9 zE%KzkpMrO&m&jA2jRWt+LCKfvZpqNdcJID~s$vqhurZh!aI&Uh<0O0h_|@(Hs?1ki zgIA7kW*S=+ZY@X08z%JJ+n;)UbrT;WS^M{?{I~FDVxEstFOQucJ@@}R;PO`*dq3EM z7x0o%oyn8DpWgdnq{0SeIRm-62@`>hwu2Md&NED;_k zV%HBt2O40x$?y@>&@esgZZfi>xNYJ$+StU@8TqoulP^d)wR4Dnm@7svlE}?cRm`fL zr3aYz{TB*@~T z4Lpo;lTr@{Pq+_`s^bv7#=%puX#TTRLAghtjJ_JQF-Ko5^Lv(3^k_vr+m$n<#%Qob+gycsbslY-ni|jk6iT0J zD2_Wj311B^+*MnuJ(alkHMdEm=KdFcNo;DRBwe}=xgv&4e~RzI3NL0QwO1cO;Y)^h zw39ygP&lR=LP01rZhzme^FyLe;?)B~|Iy%lnq6Xy2&viJT&%v$>OUILXQ!BuDN2rz zHBznU9C%$76%Bv*d%TU%K;lY_H+ynO2Ht);>F!rJ%ie-Roop#N$;c3Qu~~$!M}~SW zd}bB!O>aLoRGsND0U;2lcc)fjrsoJKeqcjIw(2$S>^1CZL5Ta6t1S*0V{JayH+cP# zJ8w1og!|M`Kr#w{Wtg_=?SQGbOiJ8oxzqh5T|9o1XW9l^ekoiuXZmb|^DazJEqt&; z^!PqkJ&|3tn?S zgITgM5odseh)V}){D40W-g|dxZh2rkB6w*2-zew**V6&;*6mKzDm79w44J~E=#KXX z^~3F<+91!tWL6AI*VSafCb8pKfwoxJ`e>6l8`TJulaW8Ojn!eD*g4ZunG6K!A)w{K zfTsFtl7VJ@fBw<=b0tdsT7Z_J$Q6*$4lW#NI)t(D?(+TN0-W{eeuX>Q=bgNXz)ZZo zQ*?^?b3?&W3s>cD4P7F`yF5#o(Uj3;`xDXj5kxm;9171GO;5R+C7W@!kt?|-Jqe3M zJu)?$h>?l)06+54);~`Ne?R#+`>wjTtl{PFREi(UBNQj)@{xb}8kQS6Q{6tly=}_> za(n%?J?Q&~&sW+=!hZyKrVkxt2T}dcl87Af_o(}s03ZTVYZi3|z^{IY6T1V2DNR3q z5{6d+&w-9dJ)np;ovutB7Rgw&er`GlXtR4N(G~@V%fRK`;FxR@P%*CP2`T=&y5(ou zIo2R+($8smz39IXA!7W=w9k}&qG%>QX>uA7u}@V|dR1~8_jxu|%8F%%Sd;$?h4{EO z=zyc%os2Eu+nMGC)g9$*odLOe>`dA7t%^PVL_yS6#ci2)!D1ODCH(;N*&&UcR<|%# z^FHcfo)C}gZ^xNLEiR=HGLSbD=ArNhZI8w=g@*R8Vuw<{J2p^jK8xdaogP>r+p)$M zEU#(8?o~QIG&B5`7dlY{wR}e31s61Mx}P^CWgTJwjH$E8LQ%=4xTfdeV_#fP5hs#TU4jq5%ek>+9pqDXw;*QiO|V1#t;**2JpvMT42lZOOJ|*6Ed<#i zV&^20@lnB|i)X0Qp=^3R5l1S%k3|lPgcJ~6XaF#DqZiHoO29QaOQfT_a7#nJF{_8ff)hGZ2e&jx&g zev_;9l^88c7||pH{O5h}bSmaswq)rQOPyFt(AaeY_6xLGL~KxK@Ee$icBJf{=)?uq zA4C^UWE$7lqZLA&ESTJW-y{Z&6YwBIn}LITAMhopB7U_*{S}hKGK|1tsZ=c@T6PT; z96UXjp#VBKR?*zuD+2#q{Q( zal*`U#J%{}fxAn!1+FGz9mgW>&s$$OG5%{li{GT0Hw$=rLf`l!`}LA<;zP?nMDp{7 zziqx==(=TRulRp{oq1~d@j>JN4pRWGgP{c-qSVC=!UCTkvQtd^h;56hNE*Ib@rRcY zO?bI5P&0XjQ!rywfU=RvKx}qsa)h1?RxVmLM$h!Fr(MQ~8A$}x?0QLoVMX)pI09A5 zROQQRQaDYC?yfc#OW3+1K`&Wo|u9rNzzha=xzi5i^D}DGK zV3xzj+#L+t2dSsmpI@-^tH$vQmCXuVI>LW_vCPV!vr;ct!jqUC?23y;9IWb5ZsIiX zPA;SVg+5QZEc*SWZb`?VQzAmVVn3`=j?wY2n%ctPz@;RY{LfX$`)5=~L2SrUPOs$UB0B_(2S5drh*-%KQ`^b`f+S!a?B!Syjw5Vd88=KHXOjvzu!hC*xrd1k#qx@# zWa_=N>ozMt+WjFzs6#;LP{PBo?&i>SR)EBxg`*{)f`ovad-!jJs8w0J!voEf{tJbG=buOi;?Q@F6=u)l!G*haStMK5 zT`0Jd_8b@8$=KRusT9l@R+`UEZOkx#t#VyFy`4?!tC|u0{AoWNJ`imo#jA>Pk%FVi zxex53e}G?YBl)yjmV4{kX8z@|o;^}M*<72FeeY^|=H*%j;SuI$kT>O$i2jt2Sd;=7 z0V0aOaYyajD6<<>K2q}o_5(Pv_O=;ie_1Qu$S>@ORhrtSIXdF#Bdr|_)YXc{oUDlY z)sz9YyoBoXxHtAvU|tYF(Y2~<4*}?x5VsBYl4(#9EdJ3Mht=aqg+wvGFSD#l4+nq{ z@rYiPM-pT#pa?QhgHfD~1BjkZ!{poEG>*1#=a@KcAP?p*C|q+N?WUmjbZ;<}BZiz} zec~dyl%DI@k_ytT55Q9{cpqkiUat)msWVh3WiDsjq|deVwjiU|Xl?lvY1-m^!rC8S zRIrGJMX_O=Y64wj6=dt@B2{YY*YQ!h=s^HHh!D$+0QU+S7yisW9}7t{H}gP-^b z4NeObe}sWjIDzN{O8v-xApt2z>!^}iv}{C>lu}e9bTJPeWfnpP>x%3rB8rG4uKY;| ztmi1Ko-k|LmBnoC7i@|)g?J@}hJ=NMBGf)Iy2nI&tp9id%T3x!Q$Gr;MjgWMA)9BCpTQ>gw z*XGcuudP`7WU0t@kd1<)hzPxp)nPqD^HE3f^@!7P-R;Z^jcj~16+0_Fd7){5!2kOC zaOZ9&t6hSJo;EoBfh$Pgo96OLhv$ldmuU^efcH}Im5d~0M126Fad2};F)%e$)DV~o zM5#!7^r&S@^M(PNr70R5*~RQtgxjbdi*86(*U?ZK)AZ_bhqHI#7Aj;)EznA6>v|_^@W&HU&Y?E{lteo!tR4v{ZU}4Z;gTu-+XN2$;!ot%9X+JXWCM~*^3=r z8QuB!zF5WvCiqa?Axd(wtx|bq%=QEB87_g}-Ez%hRSJCQncPC%g(KJNFlL+U*bd&5db39tWu{}5w=4< ziYa)(v$FU>XtoO$JLeDsQL_QRh450YU6Sf zKjtU1ugaNJS6B|3$3wWarxskw?B~3yzR_+zf3YHDKG*R^ICeU)6J2LtSwJL(E5f6< zSRm&hIQ4MFn_Y*w&z*|n@L z&8!Lov}Yl3N22jyPnXP_szZ#@zY*XRnnLxhKsXCi8eghtY#Y$czLNI)H_Z}9N#xq<&`5ee z=pGic`|R(K-TO9O21Ap*--D>;5Q*up1HUt0TxygW!6MX(VmwdoQNc2+6jhAWWsQut z#(0W~s|vX+jbF3Zc!AtGFK@v05@{Wu!8V2+fhwVQ6N8_iXjz}50VW$@6GG%Of3 zTsZEC8c92d#_iE#C=dlWJag!smINnHJp$;K8L*`3MZ;hqb)t1XYh562LI6$%QeJr5 zYWP{;tNZsUzmB>nBBa#4155Frj1isf>rD>yt-cwkrU8 zb)#|zCNPMKr>Ki^!RBI6$Lq^i-bU}NuBKsnv|n|04L!=fPux{W0@14AjYtXxv*fXq zp*W~|T|^OKOo#|!Wy~9r!jK(sVTdZQF3gI7Kdc4+FM0~hfVQHX4DH1eMT_Alc>)Q@ z_bAkX6QFfolsLi>swe)4TZFrhicFir?5%!D_d<%argh^U9@6`eBAx^AG>M|gceyjR z9D?b#u7Z>}8htZJZS+h}WZ53)C=z9P`I1W2Kr;aRULfB48v_&r!6V?e@t3}tS|JsD zGWY70`7`680Q-irnyE$59l<_!NnQJM_w()fsz?6c?_XC|_a3Z`XCaTKro|g{hsS^3 zj#g$YcIf&1pc|Fj#ugIcLdt{chEY}f;@UjkJ$$iSTU=aq=*1T!2i7^=$ zUb70c$%?6-3U>eY+(l{RrI@Tvy!m1X!QYhEbM6o02zQ|2>Llb@O#(2UyP;x@npz5q z1T~+1pSJwOFher^|2!w$O%#BQV1On8nDQsF6M1K06VUuVHfdY;E~qA4zkgwlENpJJl%a9xP< zh|X*sN>r2*Jr1pwP65OR!kkUbdC;L&MhtFAEh!yIkM0}2?X|{MD@N)Fr0cv@!?%tp ziA~JN3s_uQc41hON*D)m;g~sN2|>%+K{=M8y^2O9+QqW%u$l{)S}4A>ujm2c`5XVv&&O{DX(_R9CmgXah5 z;{(ghhYwC2O_qO$3g=hPmy65E-~s@|G(e1jG=HM9Eoy>7OE#R3_YC7rF_e&Gl^oGa zS{Lp?#DK1+tqWTrDhyA8B!@WB*F~`7ErwWvVybuY--OgpWEJX(Cr!p;q|r+P&~;VZ z;E2Q^yUvT6$t^V+B?#oSp=tpI1gUa_ZKE8R=@BxZ5Q6`14?a4bm_fPFhpCsgD1uu0 zAHl9}mVW=KoMU==iwksaN@W$Ow52zCUpVrY)*?-;*ani6Sl&y?y)}tGs#{S`ilTbD zU1}fpSD)|Vh$9R~ND+oxU>{DkY#&M$D{oTSox<|6q)#YjOIddC&%M(2x1b5){p0yr zt|RMTx%gX4nLmc~qBEka#!k-df5x9^uXwH+u5?z|R;Ewed~PbvWB%jS!(adP=3Z>Z z$Rj%U{F+8kb3YmmNAj!d&78c9-;e4YeMy92fK-fiN!+1bG!S4v(MFqBS6!TX8KGWY zONvbwFfV~10g}pw6ab1({JeuXFSfcv&kC|6-yVAy>Iq9%>d@d%nu{zVc#H@E?&;s$ zZA4ztl4)DZD{XtWw0n~2J)|HT+KS3xwoQ~Xe}gwQ7W4|BK<=5O7Hz`Ja{Qh+K@pt6WsDFd}=&iQ{ zokmmvT}#5gXV#7HCcl8O>KI z+|eA?QRe6SLF1(^V0R$l46T597LXR|33E?E^g{~6gv4GNFnWQ9#x;+!r5?vn%V{K4 z23|$E_FX2}n0>}uEASd4l$2ZJS}**R%E#){oH?!*N2CW{1=B1C2L zuAco-Wc^GD2#*p?Bb+SfY1DE%fd@+2R2ycHg553UMzL7^ieGhM;Cox7Ju6uBEHPie zq4<cGp*P44SBmDQ39TGDqo%PN!1piJ}27!YBrlOuv zsp3I{z0#s;?4`;KzH^DeE}YyyUzz`-qYrmqcYzI$yJS5$K7T(`4x5Fmx| zM}(>H*s0XgieA6L2XYhFw(%$EPt-iAG{>w1aGB4=Uexj~7VgiWlJGv^HwhOufpEy; zx;W|gPipvA3`n~3O3D~MS7|S(@0M*gc%FX|aUf?dyRY!j+d@Zj0hH2Kyvyt7(NA|Y zGWU7SzWuPXbEm%hyL8m<--WBQH8!iY(}v}sIWwa#tiR_MyZh=dS@%-(88^aZ#;tA6u{&(80Bc?yjCkWFz8InMe^YacRC@+=gCA zvT>OkDfXp^b&70EPrWz|VOV4d0#K_-0o1s&Sm4{uxRTBy!Lx;QzcI$o)R{{nB76rV zD}ue-HM>7q$M(*kxYnxX3u**8oS)i_XneAqRqy@BS@72^PkoyS)Rte*mu_rOwvsQg zf91=6$O1d)-fc`ZI5+=-c``zK`kavU-%r0b^E2sI*UtN+g_oP+21)E|moa7y3SQAST1{pcEnkMum)! zb^XA@mcS@|Elypai{%N{N7|}XI1Xx2u!@j?cyd9AlI?myWp@r0)eprlu{p`~QzP1W z8?g>pb<1Ig-fg^3$%nq&l9s*JTJX1F`9DFD6YL+UOSQyf&>`d)?L)zYU%K8&`DxMR3_K zUgPLnCQXU15QFfmMRJQ7QIoCo*mC1rM(T?VFHUTkd274;{|*J9t1SYz_Yetr1X$|Z zM()7SeawL)1i;>jx^E-Y5qIZk-VvE-`F>5R5dkG+*M-f9AWjcA0VO>foGuvgv>poA z>0R$3KpMTA$6%89ItTS`CDhz?ObD4CXLJm$Hdz@1ky1uK9@bLd_ogqYH(%@J(mVdF z4{#9HRsdH_(tc6vF=PGFaUijM&RsJL88wTE(QL!Nb2d4N(IxPtM$Soi3z*or1+7{7 z7}QvJVM{X2PBku#o0|9rmd2Z!y~hpTZ=SlHr#^qLpY{6VkN19@*Uj&5Z;!o#={x%s zWGHBhagJ6&f|S!Xud;(cftcI6xdZFB z3Tt9QUXgD<>&yQ_;j?EmW+3y9U0Sxi zb9=p13E0VFYJWm@=XbXw`(#aYQzr|YQCLq?zg{$OMUs&l9;m)k@Y0A_vNKm*kTxQk z6JO}0+9W1Al8<)z=XB%!1X(Vdd@!ru`z~3zeBa^xdYSm6{@1!JF0E2U9qHq#0L`>e zu?C76#FS{9A}3ThlTU|$;nma6*Jsxox58`+4S$+ngocQnaWFL3-$cc6dR%h;jg9Ga zN`}+mZ8CPr!1JW1LzHVoMG3hG^&BN;WzY~3Y!zCp*Az1tnE>B98$m)PCKG}BsGhE_ z;(@`0yfSsM78DY?>8g^&T7=vZYNkK0c%07*RkNwFf5w7Xi)WG&GlUY=cJWb^97qX* zO0Ckp#kRfm8w&S&c_lCj^p1g54~_cP^K(_;d_z5@QQT9k>q&W0MZu1V?%AS@8D`a% z_RBuILRYGZ5)59ysJ<6lEY0_Ao)EB~oVvTs`}KV!FkQlY<-OilWY1(yZ$xo&@FhXi zx|CIiim%@!M1mf($eX)G@Ew|=;w88eT8gAD^c$X1XbTU2 z%t2;cL}6PNLx;0gf?Z{tc3mlo(o7BoP+lFme>Z`prctMc0ywY8fT$2g@k(#J%;Bh_ zrMfDL0y1Ji9H7UR21ttsFLV{1lVVMNi$}dxjLUfpEJQhdLON-B=9qe7Dsrla^t-lM ze1CmpDC913lFcRP8UiXW7pnB#qr*y}kqqTABt?>3MqcLKy^kNRN;gjLI!xz3oX`L8 z`1oe7@w&s?;ZII(e%6@Z@nxXf)^Got?RsbJV7ITA4mP=0*YB4a9!h04_>Y`q?o8#F zSXOFb6-5a8{|kkxD&PYl1kUXl#&U9^w{(h>Iz(pRN)!_u-g0#IXas;OcxmbsU00}u zP9YLn|5{QEO2u?k!}lme^=v21Vn)h1!Myy1Ax=OLkg_K30fqNu5QD*?ji;P90T>rZ zq?w8F+7p5xQ7iYtgbCi=8`QePx@sPo31nG#jb`UH%dlNOm2GaBC5pzNJRgY{Y(C_! z1V2@Mm{796u(7akGUlwNkoIBD=)hRcS@##&(;6;ar(|Z%jTPT>yC=;3FMktMeXRI$ zTnBs3@cy*n-KJ;T!o?a#(ADdIs^Cn#iieLjtADqZKpL`8S|D&~UlgU11SLd%9r%%w z01VNL1TDs@Kd7?qS3wl)5CXI#Vb+pmQHb^(vX_Jo1e*A~cxZSe;R3iHgrF-^;>}Z} zp_OB-ae5&EtH+66p;U=tNeI~QQL7ThltBqdfT^+*kw)&NGF>>ygqEymgeDb0Gs#oP zlpqTt^V!oS0c@N6Wm_NHwxgG?=nZ|GgJQ{GHqGeUT*{RFFBG=yx-kQ}{{u9hUR0U> zkKmm@9dbuGs~lEY>l`a=cq?ODNzE270vVwL1(h4W#DL3tF6j_$3SCPf23PGz`k6A1 zgSu>@ONSOvYtM^nSn}Q%s(!4DdH1ID_(@srqW1Ck=4f5BiO=@u42PZ{sZEc~eDRSM z|Nbz}(=A&L+~byxa`9`LMQ49^fr}DtlK3#ftHx0Z*9mkEv->!1t>D$O;Wj~raW{u(?+WHqG=Upo;DQNXxV*lfF6z;5& z=&|z$mYdCYrc#UkywV?Cyu7j>g#Y6*_;$+U(dh4R|CgKEZSbbq=&!?j<7*AA9~9|$ zK=68<7a3NfKXl^X1?b^5OF$I|Df;P35`I`Bx9mAE|3+5&O-nGl<9yv{LyQNWPQ6(>aGK1@V6&IW8S#^@(PtEEC*UGLDwH>~)6$)6*)fU^ zhsf~hp0UpG9pmMfUwL^JvwSoVMu{RL|2X-(9C7t)TFs!$Uk{Z0ASvL zA47NNC1)3jcF)`o|DbwfZ=0p2vOR}|O-Jn=^69?nFf-gca(|+Gb^Z9ExvjbKqR5AX zU;o6aS(MnQIqW4#2a_5TU4tkx3|>h^TbJl@BAnz}1Bfc6_Mfqv;bB7QdQt4fB(L3^ zUIdQ($sa>?{CdXu=~=VFwCmBh^I&k}?StL-V=MDii-^>$&pV3fr}=699XslmKtR*o zzDzh}KbN7kcX;ORsz|hB5$rAsES+aw??@m_P;WSQz+E1;r*sa3So;W5R3+SY$jxTB z$^nS5Lo<>RB6A4CNTz`!Klxtv0ca@SXRv-wYPZhoZTB_mJM#T66u1(qAp=9sIHqwa zvBLvR@mC*onM#YPb=#&lw=34;k9lQd3m|B)j+7SQV-2uMaP|YeQ0xwg2+b)M!6lPi z+riV^=Vl4NEd^_M8FpSj2!ArB!@t^Qlv>=DN}lz0h*i}wb93Le?Px48_{DT*A_190 zhRLFM_PFAHcKh!(C#$8l2hU!Xp8e^pvZdao+*TyIs5VV-YDJBDP7 z6zI8n`uU$7ZF9yt#sKlA;<3h8S@9u{INy?In-3KSq^&gu(s8Nc&$4@$lWCMO^GF!| zAB??aRFvV{_B(V9T|-KVv_IwIIiEpdfS?8{>h+xE`E<~M|SALdkemAN z=>}Ur@>ki>uklnhR|eYxy#{iXNs5MSVjttOhh;!#AMXNSQr4Ts15E2WP#r>C9JwT$ zpE!|N&;d;B3zAbI3Or#9S!QubAc`z>xa(FxTUU+W+%5gZMm*l3P2Y{s!Sr9{ z;Lq3kLn6$!TlwGf`+x?q3dXGdy!BzCnBy?-6<+#U<@cZV;s5b2{Wk}IB)u#OTMZr! z0j)S)!R1F8AJTasE_nM>2p<@X844mF0Lcxx^syEYJmiRaa3IwweJ6;Mx&(!i$nu0u zb^Nn!b;zTZ%c!X{WE+5%Zaaf|{BuM42|Wa%g%~VJa3CMHRz}k3TI=FU5!?I$snR=X|o01g1cNu&Tu(`LMOKbEh6}z{*8Ex zZbgwDJpCpunHkYi5tCi*x~wp60001F`S0hloA6TS z!dVEiQUH}<(1-P#CkUgs6l7CM*az!z`=o-t!ASx82;(S%0jb28g5s1!Po81~5!_Pv z!KV2tY(yK3!X#MwZUXU2KT`Z6>)+~I(=0cn-u)*Exi}5*^0x-EIm>}Qn0(QuK^}IG zBCH;;tp}rKRS!3(yII(Bg0nNX>WT%C{5+&KS{UZXCCVJQ+ zj|n=YC=?Is1+??UHp{=Rz|(#AA|0)p-)}F;4lY~ovh(q&rB9ov8Q7seYCtRyC-}Z) zk6R3URlql8gS?QvipK=bG)xdbM7e5P6&!9Z=$FSNnjWv+1|ABsc9Dze)>&yh`sBU4 zU|__8!54#tEn5J7&$4CtghS+!JG)^Lm0&wvugrBK*pJ`>A1W+p2PzrG>BZWGB<3b1 zI8i%iCq@m3&_iF@ZFHijkQm%BSqCivJiL$x;Ab%=J)@#A7VoS2J{SEQ=w5>D|`F8gjLdGr!>v*Q4M_)SMoDoTt@&Cy67|eO&2e>ah^QbWCYYWM?rC2kGdK>L3I@aeL^nb3Td+!dcMZ~s z8A3TH@$FVW-gX40mISB8R2{kd0&$h!{^Woc3JpN*QYbrh5Bdi>SM6Fs8T9OXIn#tZ zVtc@EK)q2Bp%DNTS%SVZJdH~*lq%tX3$2u=u3Jt)~u;ZjP)b|FN>8Vp7L;3rDvaIj$Y4o^> z4ZT$l_YxCdj-~Vpc-xUG24?y`%L>{YWFEP?_)CQ|Q~uby67-%cCx@h@R!9|9*i`;h z85F`3e=~Aj#yF8qP8~bUP+a#lyZE{4qlQvr$VZzlewDWD%r|ZJi4G2xwqtzniL0=) zYmNg4K2eE*+UA_QzD_oJa9(zz@uEoqjI_it`nXOmGfMF9og&ZWX1R}w^brYb4{?OQjH{^;AC`-Gqg|DKi zthvfC2!T&2AugmqW=u#WCYq24g+jfhDJ$~WOhkS+jHlTCCkl9sRndbTM)J}RIrQfv z4=}cREyi>MLJ#Kytn#Xj2b;n^8LfWwlc$8%f;~Glot*26V8bxU<79LB3+75ixiMQg;kmjlt(FK?J#|L%4#_r;^L5`C|JZY zvy?_+Z2xOT07J?(95IZ-nxyfOM^F_bHPiGD-|P3~R?#}>*LZi-kiC>mp&UVh)%%(_ zta2UHrc1kMN7^uDO1MezhD_7tglz(9Zl7<7($cD1qIi@f4J0SX1HuQTNPFJpvZ`R? ztTMk)tV^U3F+?mct@BcLx_qY73Ga!x!@qp5^lIx%=>wKf(aZlYrM}6A#pUG>=hD_@ zB2Was4`*}Ee6kG_A)hRZjlK&Zxl+>RbBLnEu>sAm!6nSh%Z_eR!?u%Gm z#H+NJl=T9J{-C0%Q?v zxPwvr<#n3zd@&?U;9+WSr<~l=AqPx1t_151I=5|CB2wlfq>)z+X=REyS4~bG66snv z8|NR17H|zJSzDA1%Z*$jkMf-q`b;J@lH%)(3M&^iHjCIk+Etr|3=sV^`8A&9$W}%1 z&cw#li7F(T%(6{8;0JC{@64!!(fJK|*??=He1x^~L4_GgZb>CsD+p!w)vEdg3u5IT9>zDUd+Q&w}^8db;@{=VIg9*}w4uh|T z9|`5hEQ@ALatU!O)Ck7QxeIDyw2Q233j&!$NhgGc6or*=M9y-V zpQ8^za&lAgk8Qj`xWriwFY%GA0=O5DalVxY(Fj@~fRTNJ?}( zZw~=suB3ndKT%*gZ3GTV>HOCv$!m=)%J(%|7MBM9Dg~_N3TXTTjLptmCxO~Iqi$BH z((5oE8T=Id!fBX1VxFD`L^(q<&p3cXn@1WIMKYqKyKy+4TN#Pda#^9CU*!l)lPvG(`f#dY@R-#)eDYmeu@Zt+)+G7z=3 z)<;fKf2+UbNMZn}=1PGKc)r6S{@TpDFq|y;(rJCY-Nm~qeGZx{2I2qcp+QfkH>7fne0DbzB++RvyR-R&f8$2Cx zm3_S4n^9j*lI$tvE}T%zx0KDL$JXxxYjlo-&$gKND}94nB%bH#Xc!vK5X1@Fb8fyD z%p^Z;E7W3rnw9CR+TPUyO1{o}K2{$Yq&T-}>0W6 zif!Q$y{k*Akpd6d^8*LG#Obqi?p?*v)CG&@wZ7#x-*SaBKKxR)QpPmdKB}6tb@A)I zP|zUaz4qXBRhcj0WwAAlapv!AHdQL1_~gAjZOb&XRPlSS+il>_rt2fxE~ih*+oPpf z6V5fCesk=ptc@QVc>K0LX}^}~Rl#<45nIUX`X9{{Fz$awqjd1lyje9X4IX3e(Qf^a zIP|kYmf_PxxN)EAzyo&Dj07r=8wRnP6jfdK&nNo|L}11u0d#e}17sNS_((QAmao_P z;j%7`&QwBBQaqL_epA#d4c#sDwR}>0*@j}Zk&>}wCa`+5LlqsWZr)U9D>=)jt|&CH z6c-uG@4Qcf+nrk#?BNA|1nhxbN(0>4lXlK*q&aWZ^s*y1lGRLY8HW-evB-i%lLNKr z)8=`{;+0iyR?$qrlBuqr#PtvtKMo#+a4yWAOg{uLz}5xHlV&_c$3u8tN7GkqL2OT9ozGmtH9h6-yVD z7hJXk(_sY2^`T0Q(TgTvLO`FQf=e`9nL-5hlXJutEEyWJ8%qSzA++8=MIvnrht3r^ zf<*lpC3$Y_pH_{C&$m5e6fhvdX@u{3Ib}p8#ycwAg*$2O7@8aAOXzboow$ z(2&z+Gz0N=WF(*BL zw6K$7`|aA6r8fIVxn(n-*}1-Sqs+ENNg*CR8^0J|tDu?qN6U{3X5el|>i^X~05sTT zQ6e0WL<8U9G!^0+5LbV2F#KJt?@5F0y)M80H}ElOX~@de3rfz_+8SS<5U2oVGT`buwcjweh^uXPu+kxm%JTGO_=<~p-|*7xM^<fZhPy_MmhQ59T>8J_~gCIdqRDIgF$ucfgWRs%R_ zy&evh6Vo)2zXh_hP(9!^zz}kj5D>S44^CgmgvMVl1QI71!|}*Ofq17{@JF&75DWka z2+*Mf5+!j$a0Rh}I4tzzn3}B>Gzg(#*jREU)3W!b$`k;YWru4$LFifcfwL~Xr*~W~ zj*Xu?y8lS2p(k+MMAiPEq491T1s}})ukFJHj>ki#z?EPrs*U|%UK-u)EF}2x;mq@K zoKJdz>8voBCUEZ8V}#M9e)`zrTaFs)@)2nHU*^1dy(NS78%`>U(58H)zP&UFbH2xv zW-+-_sk$@^pW*Gd)G{x~J9Y9;&y$5!uby?BOu4?TdJ%JItnGhX_Qk`hvhvXS-kqz! znX-J!f`!U&pw7Z!l#6Jk&hi6ngby)+xG|D< zqss{hvfr=-gvup`D_2L;sm3}@b^x^OcF0rZoF8tAfWvSiWV2W0XHA^WjlbGUdu&TJ=^T_AwM&L z#WF^P75N5Bm^M*6exIdpRQVpPB`@UXW$;U0vC&>z|4~zJS7)n4cU6ADNpbU(kmza(si3onvAm zK)INbQTsHA^_Y+!4EtoVQ*|J^^^HW*SS(JY?1*K#Yq2_@;X46DP#zcGPzB7-u=6>W zOz6T5ogbR;M4Y0$R(C6_tlL!Eg|wZopdlcpPz@fBF6#F~R{h8SP4}%}0&0f9nH#qB+>O^>QG$Lg8N-{NO~_m=JP#Jlu@^ZYMK5D@wA97=$1e0C@< zMF@zFW2n`ZSiE<+pXCvnFQj5Ay%fkJJJhEhmh_o~3oHWbLpfu?=^)BnLJj+4VGXKx zBbb2A#eG#w6}%^CJ|-Z2#;fyg)rF-=0q8q(QXvxOI=NU$gKHZtyR*R8y!i(qond*g z+v>!K=jhjcYCK-UWGAI* ze|uw}i#lOgI}Ci~1C5FOZesESvUat^YNgF9qp6tsPOP?e;?m_1)evk%bXfef*-(ja z$n56LnbO`neUGPa-WFUuec#RxAr){3TyL&Q{{UH=aZ!DzS}*dfD;}+Un#N#0}iU z8z*wOux1cbiL`%gVk`BsW+#Y6%F|I%W^Pkt5_4bfw)#+5G&V7pn(zFVO`$cq6*y?~ z@*zkvU~|nS+9yccj+M9o*Temwcdyx6^C4Zzcko(q^$Q8*FN|6ErsZx{hiL!PV$A0JR1*_k{V&Ge_|Ip>ij{y zWnCJA6W9u5K27==IJIgeNAm*D*p9}6)bOc%TSAkmw-nu;9zuDHS|@VqH7h6Lm;SSm zpHEU=7|Dk)9WAa%56$s2nUr5v8|Y|#LpxX<*&{^;z{ws5@rbD|#-za{aZ z`7-e$xF;eyYx&t2w(?##Ze(fun$PS)M(r@h{a-lB7(9kua)hiAn{b@58yO;i2gCXn zDwHA0J#MqZlpeHj$a}D}Io}wqaupY};egfi+0mDn6?5UGF_1w&?i(s*N( zZQkx6Kf`(%&PG_hjnKb;c_h^;wa|osR`bjgG790V|7Lz znEAeH=h5eNrggUcb*JB(utVI=&rB<151Ix~niVCa^rc8(tY_lRXe5Rd^PH z<45tsugej)tkSLHb>F%4YcuNheCb`c_kp9AIVZYZOCLn7j3#Y2uh2JWsqY>4^A@*? z7r|SHq5~y1jkzEH7QA6v_>U_5XL|7ebHcs9tU$Ir1!@CDri0rxuO@)~!Bh|(WY$cu z97IhPANcB>`;)YA8>h#k(zck^>@19;U{BOGs-LMlf#xmGsPVrg zUHBiWA62L@S>I^uVlLCmq4mH?`r+{-XGu=IBGd=-K!}+h`g_Jo`(qoS7aj%;pKD%L z8YdMm@i8gEO({;7XX;9g6TFM6(w}_#Wvfk3(a$RRWc3weU{8*JH)o8x;dOTB`wM}t zri1NC>rsxx?R?da<=OhNvmZG7x~JSMgyvuYwFE4c7Mr7%>Sta9T!CaxOm)1@#-6o`i~42{MUU*zg5+#&|h5`>2d z9)!r_tEgs_-qKH1yx|J&A0w;Qd7N<6oLo8rGLD&&5=&RQl>KhBBbN%eDK$_iSC2XZ z>AZmxrwG_b{`%KFOm@}*2lfmU{$X3^t2)9S2#rvsqJK68MXm>%!r!B%6y~ov>s&dI zkiIY`yj&OYPDQWTL5;G0X@(rz#g&;H!Z^|(+pj%sCapBYZ$#$0>pLIqy$Nytw0pp? zo8wzU3)J*b4ZN6n6XujLkL)u@*45XS+u> z4HAR~8FNBlyF#UQ#et3(G0mlA?vJwev-m=VCZl~HHgSz1F@;DLt~%&>1r>``Tgz-e zu%Qd|fZD2p0%j@0W*JFTM&&E*f@$}o4t6U;|C9wJh)P^bk?b8t;yz};npwUJj@FQ{ z7cJ@58gYF>u`7|t3eY184R&RpiXV^*4D~4BWLTe4sUja=HaE-CX>+77XyeYIGu^3{ z&gK5LHby97D*pyoronEMcgQsKtcU6X`EGTOZY%g`rh}`XxnoRb6k!6Uq56gf8f|6` zuvpO#u$sMI`70j7tEp{)O~+aexR!?cgsInY_3sN*t+9Ult><$3(TuM2u@+ysN>AOP%Pz-+(a)-q}*pB~;Af z-UyG%P?NVO$-a!tWOaTdXC2{2!G;f%TQ5{(Z7T19H!7X(C|k|{eW~{1Njv@fQ@1+% zM{`Nqy~l$K@3MHZbEHzo4@nCcCOO2U!YSj_VbHwv&@y9?;78Z`r~HWYp-gx%sT5l(mO5tU)g_c z-!PfaPS(fIlB%W)ivE47FdeMP{Lb_XJnZ}3$Gx0g`2UyC_z)b2_%l@kV38&a1BXkT z(3=tHhITxJ$*Yd+t3vSQuvfxGxMI@i1s&3(*NV}g1N_E98%FvMKTyT zQ{CY!(?}$RzZ#Ij`%LPyrbxc<{DMdUPaDmfL1}Lj*~lhYLuof3i)PmSbP=Uz<^Ba~ zb&0>I>WRe%b!`MnxAQxyme@omidB0utcnqQn~_!f6E&k|6QUx=Za4fb zIXY$q#{oWsL9!FAC9d>+7Arq*KcA`D+WDG(Goljr&yzMK19WV%AkT^5J-7sm{ls!Q z3%RUhNL@T^losyIh#d(dG90S~MU9P*O2dTD7j2IV<&H@!PAKA!ZY1>xOH5#yqkLEf zeqeWT0O+%?7GK23TqT6F&YfJjql=Bf%)A5QCq^zM5TJs8jh#b8C ziNe_T&-eo{{r;C<0~Y^Q`cpp86s+g&9@1sw;RH3%v4`tWIl4On{KUEpiwKU9_>WjG zQ^R=MF@hX>h~Y9`>2FfF%$T% z_S8FVZrYoyB`m4=Wao*+N2(wY>@4Lp3Gws15i!$?ph{>AJ-uR1ss+cb*Mi8Sxnq<1 zL1Dxju=RZqb<7k(6$fODiIE&XnB>Cf>22Gz)R`D*2%w{u@)F|?MLJ7B3)u*Zke{II z6fEI@)FcV{n$cgZMBixvDX_Fy!*Y}NChP#)>Gqhx_d8;1U%kk9C2-k#_G6cF2KPz1 zJ_bEvO%FGFw(FO!bUws`g=ASLrma!8>6%ifsZfnE&A3g>PES0f6{zM7`a2qAR$sF> z*(T678a$_yf4l1-=N1sW`f96L6XETCxi)ramfI?J-t=xwy}#h>)lSJ5-^0nq{IPSh zFSc#nt@dsAf6PSvAKy+WjF|#!%a~)m>;OSOYy_VWv#YHKNbBC%1}Sk1!YB$mV2s|$ zOR`4x}uGpYtgJQSDwG>M=A{-XNUaESZ|y<&5QK*ZP5d)M6U zs7rN_8_$~{cLdM0=4}s4!fTJR0{uH|L}i!4j6ryMa*KN-Bj+TYZ|p^(JbR4 zkAQDt+~(zE&`-h@QBK70$9?+~im6ob@nkSbW55u`WFy}QDwQl5V#gysyggJTE6BId zhlFxDVd1-ynM+LO#9ad>>gQ?(ST{FWt0m;V9VAgtN^8Y zfifTca#5outQ{+ov7i;dPhWmaHyr!=MVA1+6*!gjl})0o-KiyVo~r8*Gy_N;Dh1o3Dpul$bXl>%Ghgq=l`Y@YV!NE0z*-)8Zm*V> z%v-hx%h-1~{@xlss?f_*J*dSa2dc1Ec>&ePu0-+GwU_kyN57{X67VWG=zw2p=QnqD z1w|2d%t7X4#`P3ilqF9xr`WpVqr|Fp--)itul}IH6}&ZcyghS>VO~OvI9jqL$c$)O zKE(0*S*wt9Q9Xc({OBzVp1Ds`tu9W%$b?}Eg1t(Hkl_KrA*v^#$YonX^S<6-=Vr-D z9N7}NSPV|TY|tzR^h`2!Om01JU< z_sF$Xo^JrG-S>>ljKX=ZQqMC4!Z>2sBE`trx`RsgiK%I0bPA8{apqfWq{gFF#l#MQ_0Jr9=l`^>#(dj*f9$y=6FM!J*_bsyKv> z$~=m)QkKuOdK} zpQFTDgYo;wyGIahS!7Sc3kad?^0&M#=UmyCi)SR7#9~0^tJ-u3~uK1D2#IN@}!1fzSZ#*lsaBu0z&xRs1;TdUa)C2IYr5pIu)9@|j z4v2W(#Pg?C6}h|ToiXLeK{(V@&;?s-j0hV=;M>-tpfuvh7uXUnITM>x`5pw-s% z!=XF4s|Xh9|$hY-uL!MBrgK6z&gvb`<(ztxkwNS7fKEs zmP^IPmn)Pjq>Ge)ysp>~N+n5WAe)}gTJtVrFjN=PW2J%ECMc$|%*45SUqg?1>L%Qo zIfpSnd79m?lmiEo{hm;MZS1b0m(8=!gRpwC+QG-P$L1DBCakKJt>OPW={&SVtBG+~ zQ8YxarKj_n`V!;mXl0$3JWL#)S8^%9!{#yL8c&1B?%yL`sr# z86ALceFGb431EUehGA>URD&sp_GMq<5D`CiBAr4|NhL)d@{qg+ytYiJRbLQE7pUKh$HU;7)TX#DML4VO*n(MKj`P5ey|DQ6=SkY zuKnaZ{5wY)n|D=QuYcmbvA4AT&>+c7r*hs!<%aV`8Ym#h_~keUvJqDlUjl_DUB>34 zl3Zy^ar+_vn98;Ge>q!na8dB1PFK7I@XISaQ1n)Wa*$>u^d719Ka;YP!N zVOhyY1wdae7;X@vkMyU25cZe$aqs|{LQ3f=b_rym95|6cfD_aWdwr7LO*RRatcTUw z{CxwV++RY$1dI+0W8BB4lEF%|@{^EpMNaUkCd2UfkHIQ^!M4G8BTmD9@1n1r5(Nq0 z?bV&G6iO}Kv{JWcBn8M?4pil54=c}v;}$0#zK7^VM62o^{p43I^CpGYn>~$$bh@GJ zvQ$hWVC_mk2n;*2o7Ep9{H3o=Ec3zMj`cXlS3RMV(sQDkthK&2$pI_d%jZq+J+Kwj zckUSeV5~fV={y-BS4D;WZC~KR<1NlbaN$Ad)G!T1s5h-&p9V-0}?6c zj_}1N<-}+IXs1PkO9m)&ybYxzBf&@$Mfcf;^knO8XvZ3M91IyW*(*)rhhi^KVAh%_O=^I>pM1)f5WiV^*vp*%ZV|>YZf%qM_Z?h<(7d>oP+? zlUHVhA^O=pWz6d41S`Ey_s@q&aqg3*6Zwm$e-42=Coj;te@hBZ9qlvCuHOHB{rdI& zim>qWKa;P0ZZK}N-?t~-SzR|)0G}^LBQxH;Q3}ZOu z5Tkq~3?yS0e2HmGl!Ajp%hI5S81{cXoRv&p_$#-Hao;(Sif)q77Qv+hfH|cIb;_o>W43%rAMW{js+~z_{RTXxLp{#D&5^}!_4q1F-hgA^qKz3p!>2Yr zVZZ+m3un`Yghw^Gv&4`!K3h&Qd1Csvm(F^#+1hy{B%h4rb*d5vwp|YL3>(JV=~XW4 zRzD9W5~fbO+{kpYycJ#_{OWwK7Xr&JHrM_F zzVu?iVX#FSnJx+PGu!e-MGFO$D;&*L3;t$j7ipB0v?uVvCwl{Cz@-EUMhInLkXz$m zf5%IOg>KYP?U^Vrm}lEMJ+69OF#o-A*fb&pb)8R7tjX9B_pF|^(+z} zs<2W2D9`xPAxJ9QXgssHAf9L{A87}(vYA70&DU!SNh{nQ3zg`mCyZSUT&$q*AL01e z4x(LNXU^L=cw0i>kejbJjGxVL7)ng6BGFPOyIFJ1h}ySbO++u8*<7Ao98^0R_RW3f zjXPmxqy~gEv*%0D)ygZx(amt@k(g2> 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%0A+`gCFv6Dg@Gj-}k3;Inz=2-0qYvM+$ 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ុ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

    G(4r#(R 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

    KY)EY=G`R>lIv6Ov)rH$pJjhC@w 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≫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


    D^%cVhEddSey+$vfj19=mJJ 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
  • @@ -109,17 +109,17 @@ class="full-screen-controllers" id="minimize" alt="minimize-application" - src="../static/minimize.svg" + src="static/minimize.svg" /> maximize-application
    - waiting + waiting
    diff --git a/frontend/src/index.ts b/frontend/src/index.ts index 5b86f73..00f04c0 100644 --- a/frontend/src/index.ts +++ b/frontend/src/index.ts @@ -7,6 +7,7 @@ import { ProjectileBase, } from 'shared'; import './main.scss'; +import './scripts/analytics'; import '../static/og-image.png'; import '../static/favicons/apple-touch-icon.png'; import '../static/favicons/favicon-16x16.png'; @@ -16,9 +17,6 @@ import { LandingPageBackground } from './scripts/landing-page-background'; import { JoinFormHandler } from './scripts/join-form-handler'; import { handleFullScreen } from './scripts/helper/handle-full-screen'; import { Game } from './scripts/game'; -import { handleInsights } from './scripts/handle-insights'; -import { getInsightsFromRenderer } from './scripts/get-insights-from-renderer'; -import { Renderer } from 'sdf-2d'; import ResizeObserver from 'resize-observer-polyfill'; import { OptionsHandler } from './scripts/options-handler'; import { hide } from './scripts/helper/hide'; @@ -55,39 +53,6 @@ const enableMusic = document.querySelector('#enable-music') as HTMLInputElement; const enableVibration = document.querySelector('#enable-vibration') as HTMLInputElement; const spinner = document.querySelector('#spinner-container') as HTMLElement; -let isInGame = false; - -const startInsights = (getRenderer: () => Renderer | undefined) => { - const { vendor, renderer } = getInsightsFromRenderer(getRenderer()); - handleInsights( - { - vendor, - renderer, - referrer: document.referrer, - connection: (navigator as any)?.connection?.effectiveType, - devicePixelRatio: devicePixelRatio, - }, - () => { - const { - fps, - renderScale, - lightScale, - canvasWidth, - canvasHeight, - } = getInsightsFromRenderer(getRenderer()); - - return { - isInGame, - fps, - renderScale, - lightScale, - canvasWidth, - canvasHeight, - }; - }, - ); -}; - const toggleSettings = () => { settings.className = settings.className === 'open' ? '' : 'open'; SoundHandler.play(Sounds.click); @@ -157,9 +122,6 @@ const main = async () => { }); window.onpopstate = () => game.destroy(); - let backgroundRenderer: Renderer | undefined; - startInsights(() => (isInGame ? game.renderer : backgroundRenderer)); - for (;;) { show(spinner); hide(logoutButton, true); @@ -168,7 +130,7 @@ const main = async () => { const background = new LandingPageBackground(canvas); const joinHandler = new JoinFormHandler(joinGameForm, serverContainer); - backgroundRenderer = await background.renderer; + await background.renderer; hide(spinner); const playerDecision = await joinHandler.getPlayerDecision(); @@ -185,11 +147,9 @@ const main = async () => { game = new Game(playerDecision, canvas, overlay); const gameOver = game.start(); await game.started; - isInGame = true; hide(spinner); show(logoutButton, true, 'block'); await gameOver; - isInGame = false; } } catch (e) { console.error(e); diff --git a/frontend/src/scripts/commands/command-socket.ts b/frontend/src/scripts/commands/command-socket.ts index 81ec8ba..830b19b 100644 --- a/frontend/src/scripts/commands/command-socket.ts +++ b/frontend/src/scripts/commands/command-socket.ts @@ -1,7 +1,8 @@ import { Command, CommandReceiver, serialize, TransportEvents } from 'shared'; +import { Socket } from 'socket.io-client'; export class CommandSocket extends CommandReceiver { - constructor(private readonly socket: SocketIOClient.Socket) { + constructor(private readonly socket: Socket) { super(); } diff --git a/frontend/src/scripts/commands/mouse-listener.ts b/frontend/src/scripts/commands/mouse-listener.ts index 4c73a9c..23f2bd9 100644 --- a/frontend/src/scripts/commands/mouse-listener.ts +++ b/frontend/src/scripts/commands/mouse-listener.ts @@ -3,7 +3,10 @@ import { CommandGenerator, PrimaryActionCommand, SecondaryActionCommand } from ' import { Game } from '../game'; export class MouseListener extends CommandGenerator { - constructor(private target: HTMLElement, private readonly game: Game) { + constructor( + private target: HTMLElement, + private readonly game: Game, + ) { super(); target.addEventListener('mousedown', this.mouseDownListener); diff --git a/frontend/src/scripts/game.ts b/frontend/src/scripts/game.ts index 1f82b70..971ca98 100644 --- a/frontend/src/scripts/game.ts +++ b/frontend/src/scripts/game.ts @@ -22,7 +22,7 @@ import { Command, settings, } from 'shared'; -import io from 'socket.io-client'; +import { io, Socket } from 'socket.io-client'; import { KeyboardListener } from './commands/keyboard-listener'; import { MouseListener } from './commands/mouse-listener'; import { TouchListener } from './commands/touch-listener'; @@ -38,7 +38,7 @@ import { StepCommand } from './commands/types/step'; export class Game extends CommandReceiver { public gameObjects = new GameObjectContainer(this); public renderer?: Renderer; - private socket!: SocketIOClient.Socket; + private socket!: Socket; private isBetweenGames = false; public started: Promise; @@ -92,7 +92,9 @@ export class Game extends CommandReceiver { parser, } as any); - this.socket.on('reconnect_attempt', () => { + // In socket.io-client v4 reconnection events are emitted by the Manager + // (`socket.io`), not the Socket itself. + this.socket.io.on('reconnect_attempt', () => { this.socket.io.opts.transports = ['polling', 'websocket']; }); diff --git a/frontend/src/scripts/helper/handle-full-screen.ts b/frontend/src/scripts/helper/handle-full-screen.ts index e5f7873..c5b414c 100644 --- a/frontend/src/scripts/helper/handle-full-screen.ts +++ b/frontend/src/scripts/helper/handle-full-screen.ts @@ -42,7 +42,7 @@ export const handleFullScreen = ( }); addEventListener('resize', () => { - if (isInFullScreen && currentWindowHeight > innerHeight) { + if (isInFullScreen() && currentWindowHeight > innerHeight) { followToggle(); } }); diff --git a/frontend/src/scripts/join-form-handler.ts b/frontend/src/scripts/join-form-handler.ts index e9c597c..2d86296 100644 --- a/frontend/src/scripts/join-form-handler.ts +++ b/frontend/src/scripts/join-form-handler.ts @@ -1,5 +1,5 @@ import { ServerInformation, serverInformationEndpoint, TransportEvents } from 'shared'; -import io from 'socket.io-client'; +import { io, Socket } from 'socket.io-client'; import { Configuration } from './configuration'; import parser from 'socket.io-msgpack-parser'; import { SoundHandler, Sounds } from './sound-handler'; @@ -21,7 +21,10 @@ export class JoinFormHandler { } }; - constructor(private form: HTMLFormElement, private readonly container: HTMLElement) { + constructor( + private form: HTMLFormElement, + private readonly container: HTMLElement, + ) { this.joinButton = form.querySelector('button[type="submit"]') as HTMLButtonElement; this.joinButton.disabled = true; this.waitingForDecision = new Promise((r) => (this.resolvePlayerDecision = r)); @@ -32,9 +35,9 @@ export class JoinFormHandler { form.onsubmit = (e) => { SoundHandler.play(Sounds.click); - const result: PlayerDecision = (Array.from( - (new FormData(form) as any).entries(), - ) as Array<[string, any]>).reduce((result, [name, value]) => { + const result: PlayerDecision = ( + Array.from((new FormData(form) as any).entries()) as Array<[string, any]> + ).reduce((result, [name, value]) => { (result as any)[name] = value; return result; }, {}) as any; @@ -116,7 +119,7 @@ class ServerChooserOption { private serverNameElement = document.createElement('span'); private completionElement = document.createElement('span'); - private socket: SocketIOClient.Socket; + private socket: Socket; constructor( private content: ServerInformation, @@ -145,8 +148,9 @@ class ServerChooserOption { parser, } as any); + // `connect_timeout` was removed in socket.io-client v3+; connection + // timeouts now surface through `connect_error` (reconnection is disabled). this.socket.on('connect_error', this.destroy.bind(this)); - this.socket.on('connect_timeout', this.destroy.bind(this)); this.socket.on('disconnect', this.destroy.bind(this)); this.socket.emit(TransportEvents.SubscribeForServerInfoUpdates); this.socket.on( diff --git a/frontend/src/scripts/options-handler.ts b/frontend/src/scripts/options-handler.ts index cd61431..8479fb4 100644 --- a/frontend/src/scripts/options-handler.ts +++ b/frontend/src/scripts/options-handler.ts @@ -15,9 +15,9 @@ export abstract class OptionsHandler { musicEnabled: true, }; - public static initialize( - inputElements: { [k in Extract]: HTMLInputElement }, - ) { + public static initialize(inputElements: { + [k in Extract]: HTMLInputElement; + }) { if (localStorage.getItem('options')) { const stored: Partial | null = JSON.parse( localStorage.getItem('options')!, @@ -44,7 +44,11 @@ export abstract class OptionsHandler { } if (k === 'musicEnabled') { - this.checked ? SoundHandler.playAmbient() : SoundHandler.stopAmbient(); + if (this.checked) { + SoundHandler.playAmbient(); + } else { + SoundHandler.stopAmbient(); + } } if (this.checked && k === 'vibrationEnabled') { diff --git a/frontend/src/scripts/shapes/planet-shape.ts b/frontend/src/scripts/shapes/planet-shape.ts index 62105e9..e35dc1d 100644 --- a/frontend/src/scripts/shapes/planet-shape.ts +++ b/frontend/src/scripts/shapes/planet-shape.ts @@ -89,8 +89,8 @@ export class PlanetShape extends PolygonFactory(settings.planetEdgeCount, 0) { if (dist < minDistance) { minDistance = dist; color = mix(${colorToString(settings.declaPlanetColor)}, ${colorToString( - settings.redPlanetColor, - )}, planetColorMixQ[j]); + settings.redPlanetColor, + )}, planetColorMixQ[j]); } } @@ -113,7 +113,10 @@ export class PlanetShape extends PolygonFactory(settings.planetEdgeCount, 0) { public randomOffset = 0; - constructor(public vertices: Array, public colorMixQ: number) { + constructor( + public vertices: Array, + public colorMixQ: number, + ) { super(vertices); } diff --git a/frontend/src/styles/form.scss b/frontend/src/styles/form.scss index b258c84..d096895 100644 --- a/frontend/src/styles/form.scss +++ b/frontend/src/styles/form.scss @@ -1,10 +1,11 @@ +@use 'sass:math'; @use 'vars' as *; @use 'mixins' as *; form { @include background; - padding: $small-padding / 2 $small-padding $small-padding $small-padding; + padding: math.div($small-padding, 2) $small-padding $small-padding $small-padding; border-radius: $border-radius; input:-webkit-autofill, @@ -38,7 +39,7 @@ form { position: relative; padding: 15px 0 0; margin-top: 10px; - margin: 10px $small-padding / 2 $small-padding $small-padding / 2; + margin: 10px math.div($small-padding, 2) $small-padding math.div($small-padding, 2); input { font-family: inherit; @@ -99,7 +100,7 @@ form { cursor: pointer; margin: $border-width-focused - $border-width $border-width-focused - - $border-width + $small-padding / 2; + $border-width + math.div($small-padding, 2); .completion { font-size: 0.7em; @@ -115,7 +116,7 @@ form { &:checked + label { border-color: $accent; border-width: $border-width-focused; - margin: 0 $small-padding / 2; + margin: 0 math.div($small-padding, 2); } } } diff --git a/frontend/src/styles/settings.scss b/frontend/src/styles/settings.scss index 8f918b0..376284a 100644 --- a/frontend/src/styles/settings.scss +++ b/frontend/src/styles/settings.scss @@ -1,3 +1,4 @@ +@use 'sass:math'; @use 'vars' as *; @use 'mixins' as *; @@ -107,7 +108,7 @@ $height: 4px; width: $height; - top: $height / 2; + top: math.div($height, 2); right: 0; transform-origin: top right; @@ -119,7 +120,7 @@ @media (max-width: $breakpoint) { $height: 2px; width: $height; - top: $height / 2; + top: math.div($height, 2); } } @@ -152,11 +153,11 @@ label:not(:first-child) { input[type='checkbox']:after { $height: 4px; - top: $height / 2 + $small-padding; + top: math.div($height, 2) + $small-padding; @media (max-width: $breakpoint) { right: $small-padding; - top: $height / 2; + top: math.div($height, 2); } } } diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index 2c629cb..b12fbd2 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -1,12 +1,13 @@ { "compilerOptions": { "outDir": "dist", + "rootDir": "src", "target": "es6", "esModuleInterop": true, "strict": true, "experimentalDecorators": true, - "downlevelIteration": true, "moduleResolution": "node", + "ignoreDeprecations": "6.0", "skipLibCheck": true, "module": "commonjs", "lib": ["dom", "es2017"], diff --git a/frontend/webpack.config.js b/frontend/webpack.config.js index 33ecee1..0264401 100644 --- a/frontend/webpack.config.js +++ b/frontend/webpack.config.js @@ -1,110 +1,148 @@ -const CleanWebpackPlugin = require('clean-webpack-plugin').CleanWebpackPlugin; +const path = require('path'); +const { CleanWebpackPlugin } = require('clean-webpack-plugin'); const HtmlWebpackPlugin = require('html-webpack-plugin'); -const TsConfigWebpackPlugin = require('ts-config-webpack-plugin'); -const HtmlWebpackInlineSVGPlugin = require('html-webpack-inline-svg-plugin'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const TerserJSPlugin = require('terser-webpack-plugin'); +const CopyWebpackPlugin = require('copy-webpack-plugin'); +const HTMLInlineCSSWebpackPlugin = require('html-inline-css-webpack-plugin').default; // const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; -const HtmlWebpackInlineSourcePlugin = require('html-webpack-inline-source-plugin'); const Sass = require('sass'); -module.exports = (env, argv) => ({ - devServer: { - host: '0.0.0.0', - disableHostCheck: true, +module.exports = (env, argv) => { + const isProduction = argv.mode !== 'development'; + + return { + entry: { + main: path.resolve(__dirname, 'src/index.ts'), + }, + output: { + filename: 'main.js', + path: path.resolve(__dirname, 'dist'), + }, + devServer: { + host: '0.0.0.0', + allowedHosts: 'all', + }, + // webpack-dev-server 5 no longer accepts `watchOptions` under `devServer`; + // polling is configured on the compiler instead (needed for some FS mounts). watchOptions: { poll: true, }, - }, - plugins: [ - new CleanWebpackPlugin(), - new MiniCssExtractPlugin(), - //new BundleAnalyzerPlugin(), - new HtmlWebpackPlugin({ - template: './src/index.html', - inlineSource: argv.mode === 'development' ? '' : '.(css)$', - }), - new HtmlWebpackInlineSourcePlugin(HtmlWebpackPlugin), - new HtmlWebpackInlineSVGPlugin({ - inlineAll: true, - svgoConfig: [ + plugins: [ + new CleanWebpackPlugin(), + new MiniCssExtractPlugin(), + //new BundleAnalyzerPlugin(), + new HtmlWebpackPlugin({ + template: './src/index.html', + }), + // The SVG UI icons used to be inlined into the HTML by the (abandoned, + // webpack-4-only) html-webpack-inline-svg-plugin. They are now emitted as + // static files and referenced via `static/.svg` from index.html. + new CopyWebpackPlugin({ + patterns: [{ from: 'static/*.svg', to: 'static/[name][ext]' }], + }), + // Inline the extracted CSS into the HTML for production builds (replaces + // the abandoned html-webpack-inline-source-plugin). In development the CSS + // stays a separate, linked file for faster rebuilds. + ...(isProduction ? [new HTMLInlineCSSWebpackPlugin()] : []), + ], + optimization: { + minimizer: [ + new TerserJSPlugin({ + exclude: /node_modules/, + // The custom serialization protocol keys on class names, so they must + // survive minification (see shared/src/serialization). + terserOptions: { + keep_classnames: true, + }, + }), + ], + }, + module: { + rules: [ { - removeViewBox: false, + test: /\.js$/, + enforce: 'pre', + use: ['source-map-loader'], + }, + { + test: /\.ts$/, + use: 'ts-loader', + exclude: /node_modules/, + }, + { + test: /\.scss$/i, + use: [ + MiniCssExtractPlugin.loader, + 'css-loader', + 'postcss-loader', + { + loader: 'sass-loader', + options: { + sourceMap: true, + implementation: Sass, + }, + }, + ], + }, + { + // SVGs referenced from CSS (`mask-image`/`background-image`) and JS + // must be inlined as real `data:` URIs. svg-url-loader emits a CJS + // module (`module.exports = "data:..."`) which webpack 5 + css-loader 7 + // write out verbatim as a `.svg` asset file, so the browser fetches JS + // instead of an image and the mask/background silently fails. webpack 5's + // built-in `asset/inline` produces a proper data URI instead. + // (HTML icons are unaffected: they are copied by CopyWebpackPlugin + // and referenced by literal `static/*.svg` paths, not through this rule.) + test: /\.svg$/, + type: 'asset/inline', + }, + { + // Use oneOf so each asset matches exactly one rule (og-image.png would + // otherwise match both the generic png rule and its own rule). + // The directory is encoded in `name` (not `outputPath`) and has no + // leading slash: with the default `publicPath: 'auto'` a leading slash + // produces a doubled slash in the emitted URL (e.g. `//static/x.mp3`). + oneOf: [ + { + test: /og-image\.png$/, + use: { + loader: 'file-loader', + options: { + name: '[name].[ext]', + }, + }, + }, + { + test: /\.ico$/, + use: { + loader: 'file-loader', + options: { + name: '[name].[ext]', + }, + }, + }, + { + test: /\.(mp3|png)$/, + use: { + loader: 'file-loader', + options: { + name: 'static/[name].[ext]', + }, + }, + }, + ], }, ], - }), - new TsConfigWebpackPlugin(), - ], - optimization: { - minimizer: [ - new TerserJSPlugin({ - test: /\.js$/, - exclude: /node_modules/, - terserOptions: { - keep_classnames: true, - }, - }), - ], - }, - module: { - rules: [ - { - test: /\.js$/, - enforce: 'pre', - use: ['source-map-loader'], + }, + resolve: { + extensions: ['.ts', '.js', '.json'], + alias: { + // sdf-2d's package.json `exports` only declares an `import` condition, + // which webpack 5 cannot resolve for the production (require) build. + // Point straight at its entry to bypass package exports resolution. + 'sdf-2d$': path.resolve(__dirname, 'node_modules/sdf-2d/lib/main.js'), }, - { - test: /\.scss$/i, - use: [ - MiniCssExtractPlugin.loader, - 'css-loader', - 'postcss-loader', - { - loader: 'sass-loader', - options: { - sourceMap: true, - implementation: Sass, - }, - }, - ], - }, - { - test: /\.svg$/, - use: { - loader: 'svg-url-loader', - options: {}, - }, - }, - { - test: /\.(mp3|png)$/, - use: { - loader: 'file-loader', - query: { - outputPath: '/static', - name: '[name].[ext]', - }, - }, - }, - { - test: /\.ico$/, - use: { - loader: 'file-loader', - query: { - outputPath: '/', - name: '[name].[ext]', - }, - }, - }, - { - test: /og-image.png$/, - use: { - loader: 'file-loader', - query: { - outputPath: '/', - name: '[name].[ext]', - }, - }, - }, - ], - }, -}); + }, + }; +}; diff --git a/package.json b/package.json index 81035e4..fce2ce8 100644 --- a/package.json +++ b/package.json @@ -2,21 +2,18 @@ "name": "root", "private": true, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^3.9.1", - "@typescript-eslint/parser": "^3.9.1", - "concurrently": "^5.3.0", - "eslint": "^7.2.0", - "eslint-config-prettier": "^6.11.0", - "eslint-plugin-import": "^2.21.2", - "eslint-plugin-json-format": "^2.0.1", - "eslint-plugin-prettier": "^3.1.4", - "eslint-plugin-unused-imports": "^0.1.3", - "prettier": "^2.0.5", - "typescript": "^4.0.3" + "concurrently": "^10.0.3", + "eslint": "^10.4.1", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-prettier": "^5.5.6", + "eslint-plugin-unused-imports": "^4.4.1", + "prettier": "^3.8.3", + "typescript": "^6.0.3", + "typescript-eslint": "^8.60.1" }, "scripts": { "build": "cd shared && npm run build && cd ../frontend && npm run build && cd ../backend && npm run build", - "lint": "eslint ./**/src/**/*.{js,ts,json} --fix && prettier --write ./**/src/**/*.{js,ts,json}", + "lint": "eslint ./**/src/**/*.{js,ts} --fix && prettier --write ./**/src/**/*.{js,ts,json}", "init": "cd shared && npm install && cd ../frontend && npm install && cd ../backend && npm install", "dev": "concurrently --kill-others-on-fail \"cd shared && npm dev\" \"cd backend && npm dev\" \"cd frontend && npm dev\"" } diff --git a/shared/package.json b/shared/package.json index 92b7710..67ebd4c 100644 --- a/shared/package.json +++ b/shared/package.json @@ -13,14 +13,14 @@ "try-build-before": "npx webpack --mode production" }, "devDependencies": { - "clean-webpack-plugin": "^3.0.0", - "file-loader": "^6.1.0", - "gl-matrix": "3.3.0", - "prettier": "^2.0.5", - "terser-webpack-plugin": "^2.3.8", - "ts-loader": "^8.0.3", - "typescript": "^4.0.3", - "webpack": "^4.43.0", - "webpack-cli": "^3.3.12" + "clean-webpack-plugin": "^4.0.0", + "file-loader": "^6.2.0", + "gl-matrix": "^3.3.0", + "prettier": "^3.8.3", + "terser-webpack-plugin": "^5.6.1", + "ts-loader": "^9.6.0", + "typescript": "^6.0.3", + "webpack": "^5.107.2", + "webpack-cli": "^7.0.3" } } diff --git a/shared/src/commands/types/remote-calls-for-objects.ts b/shared/src/commands/types/remote-calls-for-objects.ts index 3296ccb..3a99962 100644 --- a/shared/src/commands/types/remote-calls-for-objects.ts +++ b/shared/src/commands/types/remote-calls-for-objects.ts @@ -4,7 +4,10 @@ import { Command } from '../command'; @serializable export class RemoteCallsForObject { - constructor(public readonly id: Id, public readonly calls: Array) {} + constructor( + public readonly id: Id, + public readonly calls: Array, + ) {} public toArray(): Array { return [this.id, this.calls]; diff --git a/shared/src/helper/circle.ts b/shared/src/helper/circle.ts index 2663250..854adbb 100644 --- a/shared/src/helper/circle.ts +++ b/shared/src/helper/circle.ts @@ -3,7 +3,10 @@ import { serializable } from '../serialization/serializable'; @serializable export class Circle { - constructor(public center: vec2, public radius: number) {} + constructor( + public center: vec2, + public radius: number, + ) {} public distance(target: vec2): number { return vec2.distance(this.center, target) - this.radius; diff --git a/shared/src/helper/rectangle.ts b/shared/src/helper/rectangle.ts index a4e4b35..f1aa8f3 100644 --- a/shared/src/helper/rectangle.ts +++ b/shared/src/helper/rectangle.ts @@ -3,7 +3,10 @@ import { serializable } from '../serialization/serializable'; @serializable export class Rectangle { - constructor(public topLeft = vec2.create(), public size = vec2.create()) {} + constructor( + public topLeft = vec2.create(), + public size = vec2.create(), + ) {} public toArray(): Array { return [this.topLeft, this.size]; diff --git a/shared/src/objects/game-object.ts b/shared/src/objects/game-object.ts index 21b7879..93ab8c2 100644 --- a/shared/src/objects/game-object.ts +++ b/shared/src/objects/game-object.ts @@ -5,7 +5,10 @@ import { serializable } from '../serialization/serializable'; @serializable export class RemoteCall { - constructor(public readonly functionName: string, public readonly args: Array) {} + constructor( + public readonly functionName: string, + public readonly args: Array, + ) {} public toArray(): Array { return [this.functionName, this.args]; @@ -48,9 +51,9 @@ export abstract class GameObject extends CommandReceiver { public processRemoteCalls(remoteCalls: Array) { remoteCalls.forEach((r) => - ((this[r.functionName as keyof this] as unknown) as ( - ...args: Array - ) => unknown)(...r.args), + (this[r.functionName as keyof this] as unknown as (...args: Array) => unknown)( + ...r.args, + ), ); } diff --git a/shared/src/objects/types/lamp-base.ts b/shared/src/objects/types/lamp-base.ts index 3977fce..6990314 100644 --- a/shared/src/objects/types/lamp-base.ts +++ b/shared/src/objects/types/lamp-base.ts @@ -4,7 +4,12 @@ import { GameObject } from '../game-object'; @serializable export class LampBase extends GameObject { - constructor(id: Id, public center: vec2, public color: vec3, public lightness: number) { + constructor( + id: Id, + public center: vec2, + public color: vec3, + public lightness: number, + ) { super(id); } diff --git a/shared/tsconfig.json b/shared/tsconfig.json index 8f87854..91326be 100644 --- a/shared/tsconfig.json +++ b/shared/tsconfig.json @@ -8,8 +8,8 @@ "esModuleInterop": true, "strict": true, "experimentalDecorators": true, - "downlevelIteration": true, "moduleResolution": "node", + "ignoreDeprecations": "6.0", "module": "commonjs", "skipLibCheck": true, "composite": true, From 7412bc8af5ae65539f1f492e57946ecc3a17c987 Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Thu, 4 Jun 2026 17:46:42 +0100 Subject: [PATCH 087/101] Fix dev --- frontend/src/scripts/configuration.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/frontend/src/scripts/configuration.ts b/frontend/src/scripts/configuration.ts index 2fafd25..d3b16fe 100644 --- a/frontend/src/scripts/configuration.ts +++ b/frontend/src/scripts/configuration.ts @@ -6,7 +6,21 @@ * only shows a server once it responds, so listing an offline origin here is * harmless. Add or remove origins as you deploy more server containers. */ -const servers: Array = ['https://server.decla.red']; +const productionServers: Array = ['https://declared.schmelczer.dev']; + +/** + * When the page is served from localhost (i.e. the webpack-dev-server), also + * offer the local backend so a `npm start` server can be joined during + * development. The backend's default port is 3000 (see backend/src/options.ts). + * In production the hostname is `declared.schmelczer.dev`, so this never leaks. + */ +const isDevelopment = + typeof location !== 'undefined' && + (location.hostname === 'localhost' || location.hostname === '127.0.0.1'); + +const servers: Array = isDevelopment + ? [`http://${location.hostname}:3000`, ...productionServers] + : productionServers; export abstract class Configuration { public static async initialize(): Promise { From 10d4f735626adebb452b74132e60284c8cf64f0e Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Sat, 6 Jun 2026 15:00:38 +0100 Subject: [PATCH 088/101] Adopt shared ci-actions for publishing Replace inline publish step(s) with the canonical shell-only composite actions in andras/ci-actions. Switches the publish jobs to the registered 'docker' runner. Co-Authored-By: Claude Opus 4.8 (1M context) --- .forgejo/workflows/deploy.yml | 81 ++++------------------------------- 1 file changed, 8 insertions(+), 73 deletions(-) diff --git a/.forgejo/workflows/deploy.yml b/.forgejo/workflows/deploy.yml index f641e64..4628f06 100644 --- a/.forgejo/workflows/deploy.yml +++ b/.forgejo/workflows/deploy.yml @@ -34,9 +34,10 @@ jobs: - name: Deploy to host pages mount if: github.event_name == 'push' && github.ref == 'refs/heads/main' - run: | - apt-get update && apt-get install -y rsync - rsync -a --delete frontend/dist/ /pages/declared + uses: http://forgejo:3000/andras/ci-actions/deploy-pages@main + with: + source: frontend/dist + target: declared # ---- Server Docker image -> Forgejo container registry -------------------- server-image: @@ -48,75 +49,9 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Ensure Docker CLI - # The `docker` runner usually already ships the CLI, so skip the install - # when it's present (same guard life-towers uses for its e2e job). When - # it isn't, prefer the static binary but fall back to the distro package: - # the runner can't always reach download.docker.com, but it can reach apt - # (the website job installs rsync the same way). - run: | - set -eux - if ! command -v docker >/dev/null 2>&1; then - ARCH=$(uname -m) - if ! curl -fsSL --retry 3 --retry-connrefused --connect-timeout 10 \ - "https://download.docker.com/linux/static/stable/${ARCH}/docker-27.5.1.tgz" \ - | tar xz --strip-components=1 -C /usr/local/bin docker/docker; then - apt-get update - apt-get install -y --no-install-recommends docker.io - fi - fi - docker --version - - - name: Set up Docker Buildx - uses: https://github.com/docker/setup-buildx-action@v3 - with: - driver-opts: | - network=host - - - name: Resolve registry vars - id: registry - env: - CONTAINER_REGISTRY_HOST: ${{ vars.CONTAINER_REGISTRY_HOST }} - run: | - host="${CONTAINER_REGISTRY_HOST:-${{ gitea.server_url }}}" - host="${host#https://}" - host="${host#http://}" - host="${host%/}" - if [ "$host" = "forgejo:3000" ]; then - host="127.0.0.1:13000" - fi - repo=$(echo "${{ gitea.repository }}" | tr '[:upper:]' '[:lower:]') - owner="${repo%%/*}" - { - echo "host=${host}" - echo "owner=${owner}" - echo "image=${host}/${repo}-server" - } >> "$GITHUB_OUTPUT" - - - name: Log in to Forgejo Container Registry - uses: https://github.com/docker/login-action@v3 - with: - registry: ${{ steps.registry.outputs.host }} - username: ${{ steps.registry.outputs.owner }} - password: ${{ secrets.FORGEJO_PACKAGE_TOKEN }} - - - name: Extract metadata - id: meta - uses: https://github.com/docker/metadata-action@v5 - with: - images: ${{ steps.registry.outputs.image }} - tags: | - type=sha,format=short - type=raw,value=latest,enable={{is_default_branch}} - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - - - name: Build and push - uses: https://github.com/docker/build-push-action@v6 + - name: Build and publish server image + uses: http://forgejo:3000/andras/ci-actions/docker-publish@main with: context: . - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - cache-from: type=registry,ref=${{ steps.registry.outputs.image }}:buildcache - cache-to: type=registry,ref=${{ steps.registry.outputs.image }}:buildcache,mode=max + image-suffix: -server + token: ${{ secrets.FORGEJO_PACKAGE_TOKEN }} From 793d9a81e8ebc11965d24a785a48ea6ed87dde26 Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Thu, 11 Jun 2026 20:26:44 +0100 Subject: [PATCH 089/101] Improve gameplay --- Dockerfile | 2 +- backend/src/create-world.ts | 29 +++- backend/src/default-options.ts | 5 +- backend/src/game-server.ts | 2 +- backend/src/objects/lamp-physical.ts | 4 + backend/src/objects/projectile-physical.ts | 7 + backend/src/options.ts | 1 - backend/src/players/player-base.ts | 45 ++++++- backend/src/players/player.ts | 15 +-- backend/src/react-to-collision.ts | 7 - frontend/package-lock.json | 47 +++++-- frontend/package.json | 2 +- frontend/src/scripts/charge-indicator.ts | 58 ++++++++ frontend/src/scripts/game.ts | 47 ++++--- frontend/src/scripts/helper/pointer.ts | 13 ++ frontend/src/scripts/join-form-handler.ts | 15 ++- .../src/scripts/objects/types/lamp-view.ts | 22 ++- .../scripts/objects/types/projectile-view.ts | 5 +- frontend/src/scripts/shapes/blob-shape.ts | 125 ------------------ frontend/webpack.config.js | 6 - .../commands/types/actions/primary-action.ts | 7 +- .../types/actions/secondary-action.ts | 14 -- shared/src/helper/charge.ts | 5 + shared/src/main.ts | 2 +- shared/src/objects/types/character-base.ts | 8 +- shared/src/objects/types/lamp-base.ts | 5 + shared/src/objects/types/planet-base.ts | 3 + 27 files changed, 275 insertions(+), 226 deletions(-) delete mode 100644 backend/src/react-to-collision.ts create mode 100644 frontend/src/scripts/charge-indicator.ts create mode 100644 frontend/src/scripts/helper/pointer.ts delete mode 100644 frontend/src/scripts/shapes/blob-shape.ts delete mode 100644 shared/src/commands/types/actions/secondary-action.ts create mode 100644 shared/src/helper/charge.ts diff --git a/Dockerfile b/Dockerfile index 2c1af5c..83f7922 100644 --- a/Dockerfile +++ b/Dockerfile @@ -46,5 +46,5 @@ HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=3 \ CMD node -e "require('http').get('http://localhost:3000/state',r=>process.exit(r.statusCode===200?0:1)).on('error',()=>process.exit(1))" ENTRYPOINT ["node", "dist/main.js"] -# Override these to tune the server, e.g. `--name`, `--playerLimit`, `--worldSize`. +# Override these to tune the server, e.g. `--name`, `--playerLimit`, `--scoreLimit`. CMD ["--port", "3000"] diff --git a/backend/src/create-world.ts b/backend/src/create-world.ts index 1b846ba..b3941a0 100644 --- a/backend/src/create-world.ts +++ b/backend/src/create-world.ts @@ -6,11 +6,11 @@ import { PhysicalContainer } from './physics/containers/physical-container'; import { evaluateSdf } from './physics/functions/evaluate-sdf'; import { Physical } from './physics/physicals/physical'; -export const createWorld = (objectContainer: PhysicalContainer, worldRadius: number) => { +export const createWorld = (objectContainer: PhysicalContainer) => { const objects: Array = []; const lights: Array = []; - for (let r = 0; r < worldRadius; r += settings.radiusSteps) { + for (let r = 0; r < settings.worldRadius; r += settings.radiusSteps) { const circumference = 2 * Math.PI * r; const stepCount = circumference * settings.objectsOnCircleLength; for (let rad = 0; rad < 2 * Math.PI; rad += (2 * Math.PI) / stepCount) { @@ -67,8 +67,29 @@ export const createWorld = (objectContainer: PhysicalContainer, worldRadius: num } } } - console.info('Generated planet count', objects.length); - console.info('Generated light count', lights.length); + console.info(`Generated ${objects.length} planets`); + console.info(`Generated ${lights.length} light`); + + // Associate each lamp with its NEAREST planet, so a planet can repaint "its" + // lamps to the owning team's colour when it flips. Lamps are already placed by + // proximity during world-gen, so the nearest planet is the one whose capture + // they should advertise. Distances use the planet SDF (negative inside), which + // is exactly the "closest planet" metric we want. + const planets = objects.filter((o): o is PlanetPhysical => o instanceof PlanetPhysical); + lights + .filter((l): l is LampPhysical => l instanceof LampPhysical) + .forEach((lamp) => { + let nearest: PlanetPhysical | undefined; + let nearestDistance = Infinity; + planets.forEach((planet) => { + const distance = planet.distance(lamp.center); + if (distance < nearestDistance) { + nearestDistance = distance; + nearest = planet; + } + }); + nearest?.addLamp(lamp); + }); [...objects, ...lights].forEach((o) => objectContainer.addObject(o)); }; diff --git a/backend/src/default-options.ts b/backend/src/default-options.ts index 5a1c729..1580103 100644 --- a/backend/src/default-options.ts +++ b/backend/src/default-options.ts @@ -4,8 +4,7 @@ export const defaultOptions: Options = { port: 3000, name: 'Test server', playerLimit: 16, - npcCount: 16, + npcCount: 8, seed: Math.random(), - scoreLimit: 1000, - worldSize: 8000, + scoreLimit: 2500, }; diff --git a/backend/src/game-server.ts b/backend/src/game-server.ts index 4e53039..78fc5d3 100644 --- a/backend/src/game-server.ts +++ b/backend/src/game-server.ts @@ -41,7 +41,7 @@ export class GameServer extends CommandReceiver { private initialize() { const previousPlayers = this.players; this.objects = new PhysicalContainer(); - createWorld(this.objects, this.options.worldSize); + createWorld(this.objects); this.objects.initialize(); this.players = new PlayerContainer( this.objects, diff --git a/backend/src/objects/lamp-physical.ts b/backend/src/objects/lamp-physical.ts index 3746c01..591b17c 100644 --- a/backend/src/objects/lamp-physical.ts +++ b/backend/src/objects/lamp-physical.ts @@ -32,6 +32,10 @@ export class LampPhysical extends LampBase implements StaticPhysical { return this; } + public queueSetLight(color: vec3, lightness: number) { + this.remoteCall('setLight', color, lightness); + } + public distance(target: vec2): number { return vec2.distance(this.center, target); } diff --git a/backend/src/objects/projectile-physical.ts b/backend/src/objects/projectile-physical.ts index 655ba42..51a7866 100644 --- a/backend/src/objects/projectile-physical.ts +++ b/backend/src/objects/projectile-physical.ts @@ -53,6 +53,13 @@ export class ProjectilePhysical extends ProjectileBase implements DynamicPhysica return !this.isDestroyed; } + public get direction(): vec2 { + const direction = vec2.clone(this.velocity); + return vec2.length(direction) > 0 + ? vec2.normalize(direction, direction) + : vec2.fromValues(0, -1); + } + private moveOutsideOfObject() { let wasCollision = true; const delta = vec2.scale( diff --git a/backend/src/options.ts b/backend/src/options.ts index 6304f77..ba28c16 100644 --- a/backend/src/options.ts +++ b/backend/src/options.ts @@ -5,5 +5,4 @@ export interface Options { scoreLimit: number; npcCount: number; seed: number; - worldSize: number; } diff --git a/backend/src/players/player-base.ts b/backend/src/players/player-base.ts index 75fd21a..3d6a561 100644 --- a/backend/src/players/player-base.ts +++ b/backend/src/players/player-base.ts @@ -1,9 +1,17 @@ import { vec2 } from 'gl-matrix'; -import { CommandReceiver, Circle, PlayerInformation, CharacterTeam } from 'shared'; +import { + CommandReceiver, + Circle, + PlayerInformation, + CharacterTeam, + Random, + settings, +} from 'shared'; import { PhysicalContainer } from '../physics/containers/physical-container'; import { getBoundingBoxOfCircle } from '../physics/functions/get-bounding-box-of-circle'; import { isCircleIntersecting } from '../physics/functions/is-circle-intersecting'; import { CharacterPhysical } from '../objects/character-physical'; +import { PlanetPhysical } from '../objects/planet-physical'; import { PlayerContainer } from './player-container'; export abstract class PlayerBase extends CommandReceiver { @@ -22,14 +30,14 @@ export abstract class PlayerBase extends CommandReceiver { super(); } - protected createCharacter(preferredCenter: vec2) { + protected createCharacter() { this.character = new CharacterPhysical( this.playerInfo.name.slice(0, 20), this.sumKills, this.sumDeaths, this.team, this.objectContainer, - this.findEmptyPositionForPlayer(preferredCenter), + this.findEmptyPositionForPlayer(this.findSpawnCenter()), ); this.objectContainer.addObject(this.character); @@ -37,14 +45,37 @@ export abstract class PlayerBase extends CommandReceiver { public abstract step(deltaTimeInSeconds: number): void; - protected findEmptyPositionForPlayer(preferredCenter: vec2): vec2 { - if (!preferredCenter) { - preferredCenter = vec2.create(); + private findSpawnCenter(): vec2 { + const planets = this.objectContainer + .findIntersecting( + getBoundingBoxOfCircle(new Circle(vec2.create(), settings.worldRadius * 2)), + ) + .filter((o): o is PlanetPhysical => o instanceof PlanetPhysical); + + const friendly = planets.filter((p) => p.team === this.team); + const neutral = planets.filter((p) => p.team === CharacterTeam.neutral); + const candidates = friendly.length ? friendly : neutral.length ? neutral : planets; + if (candidates.length === 0) { + return vec2.create(); } + const isContested = (planet: PlanetPhysical) => + this.playerContainer.players.some( + (p) => + p.team !== this.team && + p.character?.isAlive && + vec2.distance(p.center, planet.center) < settings.spawnSafetyDistance, + ); + const safe = candidates.filter((p) => !isContested(p)); + + // candidates is non-empty here, so choose() always returns a planet. + return vec2.clone(Random.choose(safe.length ? safe : candidates)!.center); + } + + protected findEmptyPositionForPlayer(preferredCenter: vec2): vec2 { let rotation = 0; let radius = 0; - for (;;) { + for (; ;) { const playerPosition = vec2.fromValues( radius * Math.cos(rotation) + preferredCenter.x, radius * Math.sin(rotation) + preferredCenter.y, diff --git a/backend/src/players/player.ts b/backend/src/players/player.ts index 75e3e56..1478029 100644 --- a/backend/src/players/player.ts +++ b/backend/src/players/player.ts @@ -42,9 +42,8 @@ export class Player extends PlayerBase { (this.aspectRatio = v.aspectRatio), [MoveActionCommand.type]: (c: MoveActionCommand) => this.character?.handleMovementAction(c), - [PrimaryActionCommand.type]: (c: PrimaryActionCommand) => { - this.character?.shootTowards(c.position); - }, + [PrimaryActionCommand.type]: (c: PrimaryActionCommand) => + this.character?.shootTowards(c.position, c.charge), }; constructor( @@ -60,11 +59,7 @@ export class Player extends PlayerBase { } protected createCharacter() { - const preferredCenter = this.playerContainer.players.find( - (p) => p.character?.isAlive && p.team === this.team, - )?.center; - - super.createCharacter(preferredCenter ?? vec2.create()); + super.createCharacter(); this.objectsPreviouslyInViewArea.push(this.character!); this.queueCommandSend(new CreatePlayerCommand(this.character!)); @@ -206,8 +201,4 @@ export class Player extends PlayerBase { this.queueCommandSend(new ServerAnnouncement(announcement)); } } - - public destroy() { - super.destroy(); - } } diff --git a/backend/src/react-to-collision.ts b/backend/src/react-to-collision.ts deleted file mode 100644 index fdcd492..0000000 --- a/backend/src/react-to-collision.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Command, GameObject } from 'shared'; - -export class ReactToCollisionCommand extends Command { - public constructor(public readonly other: GameObject) { - super(); - } -} diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 972263f..9652017 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -23,7 +23,7 @@ "resize-observer-polyfill": "^1.5.1", "sass": "^1.100.0", "sass-loader": "^17.0.0", - "sdf-2d": "^0.7.6", + "sdf-2d": "file:../../sdf-2d", "shared": "file:../shared", "socket.io-client": "^4.8.3", "socket.io-msgpack-parser": "^3.0.2", @@ -36,6 +36,40 @@ "webpack-dev-server": "^5.2.4" } }, + "../../sdf-2d": { + "version": "0.7.6", + "dev": true, + "license": "ISC", + "dependencies": { + "gl-matrix": "^3.4.4", + "resize-observer-polyfill": "^1.5.1" + }, + "devDependencies": { + "@eslint/js": "^10.0.1", + "@typescript-eslint/eslint-plugin": "^8.60.1", + "@typescript-eslint/parser": "^8.60.1", + "eslint": "^10.4.1", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-prettier": "^5.5.6", + "eslint-plugin-unused-imports": "^4.4.1", + "globals": "^17.6.0", + "prettier": "^3.8.3", + "raw-loader": "^4.0.2", + "terser-webpack-plugin": "^5.6.1", + "ts-loader": "^9.6.0", + "typedoc": "^0.28.19", + "typedoc-plugin-extras": "^4.0.1", + "typescript": "^6.0.3", + "webpack": "^5.107.2", + "webpack-cli": "^7.0.3" + } + }, + "../../sdf-2d/dist": { + "extraneous": true + }, + "../../sdf-2d/lib": { + "extraneous": true + }, "../shared": { "version": "0.0.0", "dev": true, @@ -5409,15 +5443,8 @@ } }, "node_modules/sdf-2d": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/sdf-2d/-/sdf-2d-0.7.6.tgz", - "integrity": "sha512-aBJUjwYjWP+/fSvLHH6vhpFyWeSJNCSEHpE0XBX69s2bQlo/NOUr3nq/KuhRZ6A3FeXrGU4lzyurHJ1N8f4rFg==", - "dev": true, - "license": "ISC", - "dependencies": { - "gl-matrix": "^3.3.0", - "resize-observer-polyfill": "^1.5.1" - } + "resolved": "../../sdf-2d", + "link": true }, "node_modules/select-hose": { "version": "2.0.0", diff --git a/frontend/package.json b/frontend/package.json index 9d94057..6dc2f68 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -37,7 +37,7 @@ "resize-observer-polyfill": "^1.5.1", "sass": "^1.100.0", "sass-loader": "^17.0.0", - "sdf-2d": "^0.7.6", + "sdf-2d": "^0.8.0", "shared": "file:../shared", "socket.io-client": "^4.8.3", "socket.io-msgpack-parser": "^3.0.2", diff --git a/frontend/src/scripts/charge-indicator.ts b/frontend/src/scripts/charge-indicator.ts new file mode 100644 index 0000000..7b44718 --- /dev/null +++ b/frontend/src/scripts/charge-indicator.ts @@ -0,0 +1,58 @@ +import { holdDurationToCharge } from 'shared'; +import { Pointer } from './helper/pointer'; + + +export abstract class ChargeIndicator { + private static element?: HTMLElement; + private static heldSince = 0; + private static raf = 0; + private static followPointer = false; + + public static begin(x: number, y: number, followPointer = false) { + this.end(); + + const element = document.createElement('div'); + element.className = 'charge-ring'; + element.style.left = `${x}px`; + element.style.top = `${y}px`; + document.body.appendChild(element); + + this.element = element; + this.heldSince = performance.now(); + this.followPointer = followPointer; + this.raf = requestAnimationFrame(this.update); + } + + public static end() { + if (this.element) { + cancelAnimationFrame(this.raf); + this.element.parentElement?.removeChild(this.element); + this.element = undefined; + } + } + + private static update = () => { + const element = ChargeIndicator.element; + if (!element) { + return; + } + + const charge = holdDurationToCharge( + (performance.now() - ChargeIndicator.heldSince) / 1000, + ); + element.style.opacity = charge < 0.12 ? '0' : '1'; + element.style.background = `conic-gradient(rgba(255, 255, 255, 0.85) ${charge * 360 + }deg, rgba(255, 255, 255, 0.15) 0deg)`; + element.classList.toggle('full', charge >= 1); + + if (ChargeIndicator.followPointer) { + const cursor = Pointer.getDisplayPosition(); + if (cursor) { + element.style.left = `${cursor.x}px`; + element.style.top = `${cursor.y}px`; + } + } + + ChargeIndicator.raf = requestAnimationFrame(ChargeIndicator.update); + }; +} diff --git a/frontend/src/scripts/game.ts b/frontend/src/scripts/game.ts index 971ca98..bce7784 100644 --- a/frontend/src/scripts/game.ts +++ b/frontend/src/scripts/game.ts @@ -30,10 +30,12 @@ import { CommandSocket } from './commands/command-socket'; import { PlayerDecision } from './join-form-handler'; import { GameObjectContainer } from './objects/game-object-container'; import parser from 'socket.io-msgpack-parser'; -import { BlobShape } from './shapes/blob-shape'; +import { CharacterShape } from './shapes/character-shape'; import { PlanetShape } from './shapes/planet-shape'; import { RenderCommand } from './commands/types/render'; import { StepCommand } from './commands/types/step'; +import { Tutorial } from './tutorial'; +import { Scoreboard } from './scoreboard'; export class Game extends CommandReceiver { public gameObjects = new GameObjectContainer(this); @@ -48,12 +50,11 @@ export class Game extends CommandReceiver { private mouseListener: MouseListener; private touchListener: TouchListener; - private declaPlanetCountElement = document.createElement('div'); - private redPlanetCountElement = document.createElement('div'); + private scoreboard = new Scoreboard(); private announcementText = document.createElement('h2'); - private progressBar = document.createElement('div'); private arrows: { [id: number]: HTMLElement } = {}; private socketReceiver!: CommandSocket; + private tutorial!: Tutorial; constructor( private readonly playerDecision: PlayerDecision, @@ -63,9 +64,6 @@ export class Game extends CommandReceiver { super(); this.started = new Promise((r) => (this.resolveStarted = r)); this.announcementText.className = 'announcement'; - this.progressBar.className = 'planet-progress'; - this.progressBar.appendChild(this.declaPlanetCountElement); - this.progressBar.appendChild(this.redPlanetCountElement); this.keyboardListener = new KeyboardListener(); this.mouseListener = new MouseListener(this.canvas, this); @@ -78,12 +76,14 @@ export class Game extends CommandReceiver { this.socket?.close(); this.gameObjects = new GameObjectContainer(this); this.overlay.innerHTML = ''; + this.arrows = {}; this.isEnding = false; this.lastAnnouncementText = ''; - this.overlay.appendChild(this.progressBar); + this.overlay.appendChild(this.scoreboard.element); this.announcementText.innerText = ''; this.timeScaling = 1; this.overlay.appendChild(this.announcementText); + this.tutorial = new Tutorial(this.overlay); this.socket = io(this.playerDecision.server, { reconnectionDelayMax: 10000, @@ -114,12 +114,17 @@ export class Game extends CommandReceiver { }); this.socketReceiver = new CommandSocket(this.socket); + // The tutorial listens to the same input streams as the socket, so its + // stages clear off the player's own commands without any server involvement. this.keyboardListener.clearSubscribers(); this.keyboardListener.subscribe(this.socketReceiver); + this.keyboardListener.subscribe(this.tutorial); this.mouseListener.clearSubscribers(); this.mouseListener.subscribe(this.socketReceiver); + this.mouseListener.subscribe(this.tutorial); this.touchListener.clearSubscribers(); this.touchListener.subscribe(this.socketReceiver); + this.touchListener.subscribe(this.tutorial); this.isBetweenGames = false; @@ -189,9 +194,8 @@ export class Game extends CommandReceiver { clamp(p.x, arrowPadding, width - arrowPadding), clamp(height - p.y, arrowPadding, height - arrowPadding), ); - e.style.transform = `translateX(${p.x}px) translateY(${ - p.y - }px) translateX(-50%) translateY(-50%) rotate(${-angle + Math.PI / 2}rad) `; + e.style.transform = `translateX(${p.x}px) translateY(${p.y + }px) translateX(-50%) translateY(-50%) rotate(${-angle + Math.PI / 2}rad) `; }); for (const id in this.arrows) { @@ -214,7 +218,7 @@ export class Game extends CommandReceiver { this.canvas, [ PlanetShape.descriptor, - BlobShape.descriptor, + CharacterShape.descriptor, { ...CircleLight.descriptor, shaderCombinationSteps: [0, 1, 2, 4, 8, 16], @@ -223,10 +227,11 @@ export class Game extends CommandReceiver { this.gameLoop.bind(this), { shadowTraceCount: 16, - paletteSize: settings.palette.length, - colorPalette: settings.palette, + paletteSize: settings.paletteDim.length, + colorPalette: settings.paletteDim, enableHighDpiRendering: true, lightCutoffDistance: settings.lightCutoffDistance, + lightOverlapReduction: settings.lightOverlapReduction, textures: { noiseTexture: { source: noiseTexture, @@ -276,7 +281,9 @@ export class Game extends CommandReceiver { this.draw(); } - if ((this.timeSinceLastAnnouncement += deltaTime) > 0.5) { + if ( + (this.timeSinceLastAnnouncement += deltaTime) > settings.announcementVisibleSeconds + ) { this.lastAnnouncementText = ''; } @@ -292,6 +299,10 @@ export class Game extends CommandReceiver { new RenderCommand(this.renderer, this.overlay, shouldChangeLayout), ); + this.touchListener.update(deltaTime); + + this.tutorial.step(this.gameObjects); + this.socketReceiver.sendQueuedCommands(); return this.isActive; @@ -299,10 +310,8 @@ export class Game extends CommandReceiver { private draw() { if (this.lastGameState) { - this.declaPlanetCountElement.style.width = - (this.lastGameState.declaCount / this.lastGameState.limit) * 50 + '%'; - this.redPlanetCountElement.style.width = - (this.lastGameState.redCount / this.lastGameState.limit) * 50 + '%'; + // The local player's team is read off the main character once it exists. + this.scoreboard.update(this.lastGameState, this.gameObjects.player?.team); } if (this.lastOtherPlayerDirections) { diff --git a/frontend/src/scripts/helper/pointer.ts b/frontend/src/scripts/helper/pointer.ts new file mode 100644 index 0000000..ab8886d --- /dev/null +++ b/frontend/src/scripts/helper/pointer.ts @@ -0,0 +1,13 @@ +import { vec2 } from 'gl-matrix'; + +export class Pointer { + private static displayPosition: vec2 | null = null; + + public static setDisplayPosition(x: number, y: number): void { + Pointer.displayPosition = vec2.fromValues(x, y); + } + + public static getDisplayPosition(): vec2 | null { + return Pointer.displayPosition; + } +} diff --git a/frontend/src/scripts/join-form-handler.ts b/frontend/src/scripts/join-form-handler.ts index 2d86296..e9c2b71 100644 --- a/frontend/src/scripts/join-form-handler.ts +++ b/frontend/src/scripts/join-form-handler.ts @@ -102,7 +102,7 @@ export class JoinFormHandler { private removeServer(server: ServerChooserOption) { this.servers = this.servers.filter((s) => s !== server); - if (this.servers.length) { + if (!this.servers.length) { this.joinButton.disabled = true; } } @@ -143,16 +143,17 @@ class ServerChooserOption { this.setServerInfoLabelText(); this.socket = io(url, { - reconnection: false, + reconnection: true, + reconnectionAttempts: 5, timeout: 4000, parser, } as any); - // `connect_timeout` was removed in socket.io-client v3+; connection - // timeouts now surface through `connect_error` (reconnection is disabled). - this.socket.on('connect_error', this.destroy.bind(this)); - this.socket.on('disconnect', this.destroy.bind(this)); - this.socket.emit(TransportEvents.SubscribeForServerInfoUpdates); + this.socket.io.on('reconnect_failed', this.destroy.bind(this)); + + this.socket.on('connect', () => + this.socket.emit(TransportEvents.SubscribeForServerInfoUpdates), + ); this.socket.on( TransportEvents.ServerInfoUpdate, ([playerCount, gameState]: [number, number]) => { diff --git a/frontend/src/scripts/objects/types/lamp-view.ts b/frontend/src/scripts/objects/types/lamp-view.ts index 885ab85..e4db4f6 100644 --- a/frontend/src/scripts/objects/types/lamp-view.ts +++ b/frontend/src/scripts/objects/types/lamp-view.ts @@ -1,18 +1,36 @@ import { vec2, vec3 } from 'gl-matrix'; import { CircleLight } from 'sdf-2d'; -import { CommandExecutors, Id, LampBase } from 'shared'; +import { CommandExecutors, Id, LampBase, mixRgb, settings } from 'shared'; import { RenderCommand } from '../../commands/types/render'; +import { StepCommand } from '../../commands/types/step'; export class LampView extends LampBase { private light: CircleLight; + private targetColor: vec3; + private targetLightness: number; + protected commandExecutors: CommandExecutors = { [RenderCommand.type]: this.draw.bind(this), + [StepCommand.type]: this.step.bind(this), }; constructor(id: Id, center: vec2, color: vec3, lightness: number) { super(id, center, color, lightness); - this.light = new CircleLight(center, color, lightness); + this.light = new CircleLight(vec2.clone(center), vec3.clone(color), lightness); + this.targetColor = vec3.clone(color); + this.targetLightness = lightness; + } + + public setLight(color: vec3, lightness: number) { + this.targetColor = vec3.clone(color); + this.targetLightness = lightness; + } + + private step({ deltaTimeInSeconds }: StepCommand): void { + const t = 1 - Math.exp(-deltaTimeInSeconds / settings.lampLerpSeconds); + this.light.color = mixRgb(this.light.color, this.targetColor, t); + this.light.intensity += (this.targetLightness - this.light.intensity) * t; } private draw({ renderer }: RenderCommand): void { diff --git a/frontend/src/scripts/objects/types/projectile-view.ts b/frontend/src/scripts/objects/types/projectile-view.ts index a433ccd..7a246fe 100644 --- a/frontend/src/scripts/objects/types/projectile-view.ts +++ b/frontend/src/scripts/objects/types/projectile-view.ts @@ -48,7 +48,10 @@ export class ProjectileView extends ProjectileBase { this.center = this.centerExtrapolator.getValue(deltaTimeInSeconds); this.light.center = this.center; - this.light.intensity = (0.15 * this.strength) / settings.projectileMaxStrength; + this.light.intensity = Math.min( + 0.1, + (0.15 * this.strength) / settings.projectileMaxStrength, + ); } private draw({ renderer }: RenderCommand): void { diff --git a/frontend/src/scripts/shapes/blob-shape.ts b/frontend/src/scripts/shapes/blob-shape.ts deleted file mode 100644 index 7e0d500..0000000 --- a/frontend/src/scripts/shapes/blob-shape.ts +++ /dev/null @@ -1,125 +0,0 @@ -import { mat2d, vec2 } from 'gl-matrix'; -import { Drawable, DrawableDescriptor } from 'sdf-2d'; -import { Circle } from 'shared'; - -export class BlobShape extends Drawable { - public static descriptor: DrawableDescriptor = { - sdf: { - shader: ` - uniform vec2 headCenters[BLOB_COUNT]; - uniform vec2 leftFootCenters[BLOB_COUNT]; - uniform vec2 rightFootCenters[BLOB_COUNT]; - uniform float headRadii[BLOB_COUNT]; - uniform float footRadii[BLOB_COUNT]; - uniform int blobColors[BLOB_COUNT]; - - float blobSmoothMin(float a, float b) - { - const highp float k = 300.0; - highp float res = exp2(-k * a) + exp2(-k * b); - return -log2(res) / k; - } - - float circleDistance(vec2 circleCenter, float radius, vec2 target) { - return distance(target, circleCenter) - radius; - } - - float blobMinDistance(vec2 target, out vec4 color) { - float minDistance = 1000.0; - - for (int i = 0; i < BLOB_COUNT; i++) { - float headDistance = circleDistance(headCenters[i], headRadii[i], target); - float leftFootDistance = circleDistance(leftFootCenters[i], footRadii[i], target); - float rightFootDistance = circleDistance(rightFootCenters[i], footRadii[i], target); - - float res = min( - blobSmoothMin(headDistance, leftFootDistance), - blobSmoothMin(headDistance, rightFootDistance) - ); - - vec2 leftEyeOffset = vec2(-headRadii[i] * 0.35, headRadii[i] * 0.2); - vec2 rightEyeOffset = vec2(headRadii[i] * 0.35, headRadii[i] * 0.2); - - float eyeDistance = min( - circleDistance(headCenters[i] + rightEyeOffset, headRadii[i] * 0.25, target), - circleDistance(headCenters[i] + leftEyeOffset, headRadii[i] * 0.25, target) - ); - - eyeDistance = max( - eyeDistance, - -circleDistance(headCenters[i] + leftEyeOffset + vec2(0, -headRadii[i] * 0.175), headRadii[i] * 0.2, target) - ); - - eyeDistance = max( - eyeDistance, - -circleDistance(headCenters[i] + rightEyeOffset + vec2(0, -headRadii[i] * 0.175), headRadii[i] * 0.2, target) - ); - - if (res < minDistance) { - minDistance = res; - color = eyeDistance < 0.0 ? vec4(1.0) : readFromPalette(blobColors[i]); - } - } - - return minDistance; - } - `, - distanceFunctionName: 'blobMinDistance', - }, - propertyUniformMapping: { - footRadius: 'footRadii', - headRadius: 'headRadii', - rightFootCenter: 'rightFootCenters', - leftFootCenter: 'leftFootCenters', - headCenter: 'headCenters', - color: 'blobColors', - }, - uniformCountMacroName: 'BLOB_COUNT', - shaderCombinationSteps: [0, 1, 2, 8], - empty: new BlobShape(0), - }; - - protected head!: Circle; - protected leftFoot!: Circle; - protected rightFoot!: Circle; - - public constructor(private readonly color: number) { - super(); - - const circle = new Circle(vec2.create(), 200); - this.setCircles([circle, circle, circle]); - } - - public setCircles([head, leftFoot, rightFoot]: [Circle, Circle, Circle]) { - this.head = head; - this.leftFoot = leftFoot; - this.rightFoot = rightFoot; - } - - public minDistance(target: vec2): number { - return Math.min( - this.head.distance(target), - this.leftFoot.distance(target), - this.rightFoot.distance(target), - ); - } - - protected getObjectToSerialize(transform2d: mat2d, transform1d: number): any { - return { - headCenter: vec2.transformMat2d(vec2.create(), this.head.center, transform2d), - leftFootCenter: vec2.transformMat2d( - vec2.create(), - this.leftFoot.center, - transform2d, - ), - rightFootCenter: vec2.transformMat2d( - vec2.create(), - this.rightFoot.center, - transform2d, - ), - headRadius: this.head.radius * transform1d, - footRadius: this.leftFoot.radius * transform1d, - color: this.color, - }; - } -} diff --git a/frontend/webpack.config.js b/frontend/webpack.config.js index 0264401..97f6f6b 100644 --- a/frontend/webpack.config.js +++ b/frontend/webpack.config.js @@ -137,12 +137,6 @@ module.exports = (env, argv) => { }, resolve: { extensions: ['.ts', '.js', '.json'], - alias: { - // sdf-2d's package.json `exports` only declares an `import` condition, - // which webpack 5 cannot resolve for the production (require) build. - // Point straight at its entry to bypass package exports resolution. - 'sdf-2d$': path.resolve(__dirname, 'node_modules/sdf-2d/lib/main.js'), - }, }, }; }; diff --git a/shared/src/commands/types/actions/primary-action.ts b/shared/src/commands/types/actions/primary-action.ts index 268828b..54b92c9 100644 --- a/shared/src/commands/types/actions/primary-action.ts +++ b/shared/src/commands/types/actions/primary-action.ts @@ -4,11 +4,14 @@ import { Command } from '../../command'; @serializable export class PrimaryActionCommand extends Command { - public constructor(public readonly position: vec2) { + public constructor( + public readonly position: vec2, + public readonly charge: number = 0, + ) { super(); } public toArray(): Array { - return [this.position]; + return [this.position, this.charge]; } } diff --git a/shared/src/commands/types/actions/secondary-action.ts b/shared/src/commands/types/actions/secondary-action.ts deleted file mode 100644 index 3ca0293..0000000 --- a/shared/src/commands/types/actions/secondary-action.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { vec2 } from 'gl-matrix'; -import { serializable } from '../../../serialization/serializable'; -import { Command } from '../../command'; - -@serializable -export class SecondaryActionCommand extends Command { - public constructor(public readonly position: vec2) { - super(); - } - - public toArray(): Array { - return [this.position]; - } -} diff --git a/shared/src/helper/charge.ts b/shared/src/helper/charge.ts new file mode 100644 index 0000000..1ab6ece --- /dev/null +++ b/shared/src/helper/charge.ts @@ -0,0 +1,5 @@ +import { clamp01 } from './clamp'; +import { settings } from '../settings'; + +export const holdDurationToCharge = (heldSeconds: number): number => + clamp01(heldSeconds / settings.chargeShotFullHoldSeconds); diff --git a/shared/src/main.ts b/shared/src/main.ts index bc8cdec..949cc2d 100644 --- a/shared/src/main.ts +++ b/shared/src/main.ts @@ -16,7 +16,6 @@ export * from './commands/command-generator'; export * from './commands/types/actions/move-action'; export * from './commands/types/actions/primary-action'; export * from './commands/types/actions/set-aspect-ratio-action'; -export * from './commands/types/actions/secondary-action'; export * from './helper/array'; export * from './helper/last'; export * from './helper/rgb'; @@ -24,6 +23,7 @@ export * from './helper/hsl'; export * from './helper/rgb255'; export * from './helper/mix-rgb'; export * from './helper/clamp'; +export * from './helper/charge'; export * from './helper/calculate-view-area'; export * from './helper/circle'; export * from './helper/rectangle'; diff --git a/shared/src/objects/types/character-base.ts b/shared/src/objects/types/character-base.ts index 11540bd..69cc670 100644 --- a/shared/src/objects/types/character-base.ts +++ b/shared/src/objects/types/character-base.ts @@ -26,13 +26,17 @@ export class CharacterBase extends GameObject { } // eslint-disable-next-line @typescript-eslint/no-unused-vars - public onShoot(strength: number) {} + public onShoot(strength: number) { } + + public onHitConfirmed() { } + + public onKillConfirmed(victimName?: string, streak?: number) { } public setHealth(health: number) { this.health = health; } - public onDie() {} + public onDie() { } public setKillCount(killCount: number) { this.killCount = killCount; diff --git a/shared/src/objects/types/lamp-base.ts b/shared/src/objects/types/lamp-base.ts index 6990314..794e75b 100644 --- a/shared/src/objects/types/lamp-base.ts +++ b/shared/src/objects/types/lamp-base.ts @@ -13,6 +13,11 @@ export class LampBase extends GameObject { super(id); } + // Overridden by LampView (which lerps toward the new colour/brightness); a + // no-op on the wire base. + // eslint-disable-next-line @typescript-eslint/no-unused-vars + public setLight(color: vec3, lightness: number) {} + public toArray(): Array { const { id, center, color, lightness } = this; return [id, center, color, lightness]; diff --git a/shared/src/objects/types/planet-base.ts b/shared/src/objects/types/planet-base.ts index 1ac50e3..ba90ff2 100644 --- a/shared/src/objects/types/planet-base.ts +++ b/shared/src/objects/types/planet-base.ts @@ -4,6 +4,7 @@ import { settings } from '../../settings'; import { serializable } from '../../serialization/serializable'; import { GameObject } from '../game-object'; import { Id } from '../../communication/id'; +import { CharacterTeam } from './character-base'; @serializable export class PlanetBase extends GameObject { @@ -25,6 +26,8 @@ export class PlanetBase extends GameObject { // eslint-disable-next-line @typescript-eslint/no-unused-vars public generatedPoints(value: number) {} + // eslint-disable-next-line @typescript-eslint/no-unused-vars + public onFlipped(team: CharacterTeam) {} public static createPlanetVertices( center: vec2, From 3848e460cd5335c123804906db2e85c72c7802d5 Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Thu, 11 Jun 2026 21:02:06 +0100 Subject: [PATCH 090/101] Improve UI --- frontend/src/scripts/feedback-hud.ts | 98 ++++++++++++++++++ frontend/src/scripts/scoreboard.ts | 66 ++++++++++++ frontend/src/scripts/shapes/planet-shape.ts | 20 +++- frontend/src/scripts/sound-handler.ts | 5 +- frontend/src/scripts/tutorial.ts | 105 ++++++++++++++++++++ 5 files changed, 289 insertions(+), 5 deletions(-) create mode 100644 frontend/src/scripts/feedback-hud.ts create mode 100644 frontend/src/scripts/scoreboard.ts create mode 100644 frontend/src/scripts/tutorial.ts diff --git a/frontend/src/scripts/feedback-hud.ts b/frontend/src/scripts/feedback-hud.ts new file mode 100644 index 0000000..bb08226 --- /dev/null +++ b/frontend/src/scripts/feedback-hud.ts @@ -0,0 +1,98 @@ +import { settings } from 'shared'; +import { Pointer } from './helper/pointer'; + +// Lightweight, self-managing combat-feedback overlay for the local player: +// hitmarkers, a personal killfeed, multi-kill callouts and a points popup. It +// owns a single fixed, click-through root under and auto-expires every +// element it creates, so callers (CharacterView remote-call handlers) just fire +// and forget — no wiring through the game loop. +export abstract class FeedbackHud { + private static root?: HTMLElement; + private static killfeed?: HTMLElement; + + private static ensureRoot(): { root: HTMLElement; killfeed: HTMLElement } { + if (!this.root || !this.killfeed) { + this.root = document.createElement('div'); + this.root.className = 'feedback-hud'; + + this.killfeed = document.createElement('div'); + this.killfeed.className = 'killfeed'; + this.root.appendChild(this.killfeed); + + document.body.appendChild(this.root); + } + return { root: this.root, killfeed: this.killfeed }; + } + + // Where transient marks/popups appear: the cursor on desktop, screen centre on + // touch (where the local character fires along its facing). + private static focusPoint(): { x: number; y: number } { + const cursor = Pointer.getDisplayPosition(); + if (cursor) { + return { x: cursor.x, y: cursor.y }; + } + return { x: window.innerWidth / 2, y: window.innerHeight / 2 }; + } + + private static addTransient(element: HTMLElement, lifetimeMs: number) { + const { root } = this.ensureRoot(); + root.appendChild(element); + setTimeout(() => element.parentElement?.removeChild(element), lifetimeMs); + } + + // A non-lethal hit landed: a quick crosshair tick at the focus point. + public static hitMarker() { + const { x, y } = this.focusPoint(); + const marker = document.createElement('div'); + marker.className = 'hitmarker'; + marker.style.left = `${x}px`; + marker.style.top = `${y}px`; + this.addTransient(marker, 250); + } + + // A kill was confirmed: killfeed line, points popup and (for streaks) a callout. + public static killConfirmed(victimName?: string, streak = 1) { + const { killfeed } = this.ensureRoot(); + + const entry = document.createElement('div'); + entry.className = 'kill-entry'; + entry.innerHTML = `Eliminated ${this.escape(victimName ?? 'enemy')}`; + killfeed.insertBefore(entry, killfeed.firstChild); + setTimeout(() => entry.parentElement?.removeChild(entry), 4500); + + const { x, y } = this.focusPoint(); + const popup = document.createElement('div'); + popup.className = 'kill-popup'; + popup.innerHTML = `+${settings.playerKillPoint} +${settings.playerKillHealthReward}❤`; + popup.style.left = `${x}px`; + popup.style.top = `${y}px`; + this.addTransient(popup, 1200); + + const callout = this.streakName(streak); + if (callout) { + const el = document.createElement('div'); + el.className = 'streak-callout'; + el.innerText = callout; + this.addTransient(el, 1400); + } + } + + private static streakName(streak: number): string | undefined { + switch (streak) { + case 2: + return 'Double Kill!'; + case 3: + return 'Triple Kill!'; + case 4: + return 'Quad Kill!'; + default: + return streak >= 5 ? 'Rampage!' : undefined; + } + } + + private static escape(text: string): string { + const div = document.createElement('div'); + div.innerText = text; + return div.innerHTML; + } +} diff --git a/frontend/src/scripts/scoreboard.ts b/frontend/src/scripts/scoreboard.ts new file mode 100644 index 0000000..115d874 --- /dev/null +++ b/frontend/src/scripts/scoreboard.ts @@ -0,0 +1,66 @@ +import { CharacterTeam, UpdateGameState, clamp, settings } from 'shared'; + +// Centred tug-of-war territory bar. The two fills meet at the bar's centre and +// grow outward by each team's share of the score limit, so the meeting point +// reads as the lead at a glance. Numeric scores are overlaid (the leader's is +// emphasised) and a "YOU" tick marks the local team's half. Owns its own DOM so +// the Game just appends `element` to the overlay and feeds it `update()`. +export class Scoreboard { + public readonly element = document.createElement('div'); + + private readonly declaFill = document.createElement('div'); + private readonly redFill = document.createElement('div'); + private readonly declaScore = document.createElement('span'); + private readonly redScore = document.createElement('span'); + private readonly youMarker = document.createElement('div'); + + constructor() { + this.element.className = 'planet-progress'; + + this.declaFill.className = 'fill decla'; + this.redFill.className = 'fill red'; + + this.declaScore.className = 'score decla'; + this.redScore.className = 'score red'; + + this.youMarker.className = 'you-marker'; + this.youMarker.innerText = 'YOU'; + + this.element.append( + this.declaFill, + this.redFill, + this.declaScore, + this.redScore, + this.youMarker, + ); + } + + public update( + { declaCount, redCount, limit }: UpdateGameState, + localTeam: CharacterTeam | undefined, + ) { + const { scoreboardHalfWidthPercent, scoreboardMinFillPercent } = settings; + const fraction = (count: number) => + Math.max( + count > 0 ? scoreboardMinFillPercent : 0, + clamp(count / limit, 0, 1) * scoreboardHalfWidthPercent, + ); + + this.declaFill.style.width = fraction(declaCount) + '%'; + this.redFill.style.width = fraction(redCount) + '%'; + + this.declaScore.innerText = String(Math.round(declaCount)); + this.redScore.innerText = String(Math.round(redCount)); + + this.declaScore.classList.toggle('leading', declaCount > redCount); + this.redScore.classList.toggle('leading', redCount > declaCount); + + if (localTeam === CharacterTeam.decla || localTeam === CharacterTeam.red) { + this.youMarker.style.display = ''; + this.youMarker.classList.toggle('decla', localTeam === CharacterTeam.decla); + this.youMarker.classList.toggle('red', localTeam === CharacterTeam.red); + } else { + this.youMarker.style.display = 'none'; + } + } +} diff --git a/frontend/src/scripts/shapes/planet-shape.ts b/frontend/src/scripts/shapes/planet-shape.ts index e35dc1d..68bccb8 100644 --- a/frontend/src/scripts/shapes/planet-shape.ts +++ b/frontend/src/scripts/shapes/planet-shape.ts @@ -14,6 +14,7 @@ export class PlanetShape extends PolygonFactory(settings.planetEdgeCount, 0) { uniform float planetLengths[PLANET_COUNT]; uniform float planetRandoms[PLANET_COUNT]; uniform float planetColorMixQ[PLANET_COUNT]; + uniform float planetRotations[PLANET_COUNT]; uniform sampler2D noiseTexture; @@ -52,12 +53,20 @@ export class PlanetShape extends PolygonFactory(settings.planetEdgeCount, 0) { vec2 center = planetCenters[j]; float l = planetLengths[j]; float randomOffset = planetRandoms[j]; + float rotation = planetRotations[j]; vec2 targetCenterDelta = target - center; float targetDistance = length(targetCenterDelta); vec2 targetTangent = targetCenterDelta / clamp(targetDistance, 0.01, 1000.0); + + float cr = cos(rotation); + float sr = sin(rotation); + vec2 rotatedTangent = vec2( + cr * targetTangent.x - sr * targetTangent.y, + sr * targetTangent.x + cr * targetTangent.y + ); vec2 noisyTarget = target - ( targetTangent * planetTerrain(vec2( - l * abs(atan(targetTangent.y, targetTangent.x)), + l * abs(atan(rotatedTangent.y, rotatedTangent.x)), randomOffset )) / 12.0 ); @@ -89,8 +98,8 @@ export class PlanetShape extends PolygonFactory(settings.planetEdgeCount, 0) { if (dist < minDistance) { minDistance = dist; color = mix(${colorToString(settings.declaPlanetColor)}, ${colorToString( - settings.redPlanetColor, - )}, planetColorMixQ[j]); + settings.redPlanetColor, + )}, planetColorMixQ[j]); } } @@ -105,6 +114,7 @@ export class PlanetShape extends PolygonFactory(settings.planetEdgeCount, 0) { center: 'planetCenters', vertices: 'planetVertices', colorMixQ: 'planetColorMixQ', + rotation: 'planetRotations', }, uniformCountMacroName: `PLANET_COUNT`, shaderCombinationSteps: [0, 1, 2, 3], @@ -112,6 +122,9 @@ export class PlanetShape extends PolygonFactory(settings.planetEdgeCount, 0) { }; public randomOffset = 0; + // Radians the surface noise is rotated by; advanced over time by PlanetView so + // the planet's textured surface slowly spins. + public rotation = 0; constructor( public vertices: Array, @@ -142,6 +155,7 @@ export class PlanetShape extends PolygonFactory(settings.planetEdgeCount, 0) { length, random: this.randomOffset, colorMixQ: this.colorMixQ, + rotation: this.rotation, }; } diff --git a/frontend/src/scripts/sound-handler.ts b/frontend/src/scripts/sound-handler.ts index f772049..81607ad 100644 --- a/frontend/src/scripts/sound-handler.ts +++ b/frontend/src/scripts/sound-handler.ts @@ -52,7 +52,7 @@ export abstract class SoundHandler { return sound; } - public static play(sound: Sounds, volume = 1) { + public static play(sound: Sounds, volume = 1, playbackRate = 1) { if (!this.initialized || !OptionsHandler.options.soundsEnabled) { return; } @@ -61,7 +61,8 @@ export abstract class SoundHandler { this.sounds[sound].currentTime > 0 ? (this.sounds[sound].cloneNode(true) as HTMLAudioElement) : this.sounds[sound]; - audio.volume = volume; + audio.volume = Math.max(0, Math.min(1, volume)); + audio.playbackRate = playbackRate; audio.play(); } diff --git a/frontend/src/scripts/tutorial.ts b/frontend/src/scripts/tutorial.ts new file mode 100644 index 0000000..823ef40 --- /dev/null +++ b/frontend/src/scripts/tutorial.ts @@ -0,0 +1,105 @@ +import { vec2 } from 'gl-matrix'; +import { + CharacterTeam, + CommandExecutors, + CommandReceiver, + Id, + MoveActionCommand, + PrimaryActionCommand, +} from 'shared'; +import { GameObjectContainer } from './objects/game-object-container'; +import { PlanetView } from './objects/types/planet-view'; + +type StageTrigger = 'move' | 'shoot' | 'capture'; + +const stages: ReadonlyArray<{ hint: string; clearsOn: StageTrigger }> = [ + { hint: 'WASD / drag to walk', clearsOn: 'move' }, + { hint: 'Click / tap to shoot', clearsOn: 'shoot' }, + { hint: 'Stand on a planet to capture it', clearsOn: 'capture' }, +]; + +const captureProgressThreshold = 0.05; + +const standingSlack = 200; + +export class Tutorial extends CommandReceiver { + private stage = 0; + private element = document.createElement('div'); + + private characterId?: Id; + + private standingPlanet?: PlanetView; + private standingBaseline = 0; + + protected commandExecutors: CommandExecutors = { + [MoveActionCommand.type]: (c: MoveActionCommand) => { + if (this.clearsOn() === 'move' && vec2.length(c.direction) > 0) { + this.advance(); + } + }, + [PrimaryActionCommand.type]: () => { + if (this.clearsOn() === 'shoot') { + this.advance(); + } + }, + }; + + constructor(overlay: HTMLElement) { + super(); + this.element.className = 'tutorial-hint'; + this.element.innerText = stages[0].hint; + overlay.appendChild(this.element); + } + + private clearsOn(): StageTrigger | undefined { + return stages[this.stage]?.clearsOn; + } + + private advance() { + this.setStage(this.stage + 1); + } + + public step(gameObjects: GameObjectContainer) { + if (this.stage >= stages.length) { + return; + } + + const player = gameObjects.player; + if (!player) { + return; + } + + if (this.characterId === undefined) { + this.characterId = player.id; + } else if (player.id !== this.characterId) { + this.finish(); + return; + } + + if (this.clearsOn() === 'capture') { + const standing = gameObjects.planets.find( + (p) => vec2.distance(p.center, player.bodyCenter) < p.radius + standingSlack, + ); + if (standing !== this.standingPlanet) { + this.standingPlanet = standing; + this.standingBaseline = standing?.ownership ?? 0; + } + if (standing) { + const drift = standing.ownership - this.standingBaseline; + const progress = player.team === CharacterTeam.decla ? -drift : drift; + if (progress > captureProgressThreshold) { + this.finish(); + } + } + } + } + + private finish() { + this.setStage(stages.length); + } + + private setStage(stage: number) { + this.stage = stage; + this.element.innerText = stages[stage]?.hint ?? ''; + } +} From e3c44f775beb564bf4c56894cf4947357764e162 Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Thu, 11 Jun 2026 21:33:08 +0100 Subject: [PATCH 091/101] More improvements --- backend/src/game-server.ts | 20 + backend/src/objects/character-physical.ts | 196 ++++--- backend/src/objects/planet-physical.ts | 62 ++- backend/src/players/npc.ts | 478 ++++++++++++------ .../src/scripts/commands/mouse-listener.ts | 44 +- .../src/scripts/commands/touch-listener.ts | 95 +++- frontend/src/scripts/feedback-hud.ts | 9 - .../scripts/objects/game-object-container.ts | 11 + frontend/src/scripts/scoreboard.ts | 5 + .../src/scripts/shapes/character-shape.ts | 219 ++++++++ frontend/src/scripts/shapes/planet-shape.ts | 2 - 11 files changed, 908 insertions(+), 233 deletions(-) create mode 100644 frontend/src/scripts/shapes/character-shape.ts diff --git a/backend/src/game-server.ts b/backend/src/game-server.ts index 78fc5d3..1b51a35 100644 --- a/backend/src/game-server.ts +++ b/backend/src/game-server.ts @@ -13,6 +13,7 @@ import { Command, CommandReceiver, CommandExecutors, + ServerAnnouncement, } from 'shared'; import { createWorld } from './create-world'; import { DeltaTimeCalculator } from './helper/delta-time-calculator'; @@ -31,6 +32,7 @@ export class GameServer extends CommandReceiver { private declaPoints = 0; private redPoints = 0; + private matchPointAnnounced: Partial> = {}; private isInEndGame = false; private timeScaling = 1; @@ -52,6 +54,7 @@ export class GameServer extends CommandReceiver { this.deltaTimes = []; this.declaPoints = 0; this.redPoints = 0; + this.matchPointAnnounced = {}; this.isInEndGame = false; this.timeScaling = 1; previousPlayers?.queueCommandForEachClient(new GameStartCommand()); @@ -126,6 +129,23 @@ export class GameServer extends CommandReceiver { this.endGame(CharacterTeam.decla); } else if (this.redPoints >= this.options.scoreLimit) { this.endGame(CharacterTeam.red); + } else { + this.announceMatchPointOnce(CharacterTeam.decla, this.declaPoints); + this.announceMatchPointOnce(CharacterTeam.red, this.redPoints); + } + } + + private announceMatchPointOnce(team: CharacterTeam, points: number) { + if ( + !this.matchPointAnnounced[team] && + points >= this.options.scoreLimit * settings.matchPointScoreRatio + ) { + this.matchPointAnnounced[team] = true; + this.players.queueCommandForEachClient( + new ServerAnnouncement( + `Match point — team ${team}!`, + ), + ); } } diff --git a/backend/src/objects/character-physical.ts b/backend/src/objects/character-physical.ts index 21ac869..bd46282 100644 --- a/backend/src/objects/character-physical.ts +++ b/backend/src/objects/character-physical.ts @@ -12,6 +12,8 @@ import { UpdatePropertyCommand, CommandExecutors, CommandReceiver, + mix, + clamp01, } from 'shared'; import { DynamicPhysical } from '../physics/physicals/dynamic-physical'; import { CirclePhysical } from './circle-physical'; @@ -35,8 +37,10 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical private static readonly feetRadius = 20; private projectileStrength = settings.playerMaxStrength; - // offsets are measured from (0, 0) - private static readonly desiredHeadOffset = vec2.fromValues(0, 65); + // offsets are measured from (0, 0). The head sits this far above the feet, + // which sets the leg length: kept short so the body reads as a compact head on + // stubby legs rather than a long-legged strider. + private static readonly desiredHeadOffset = vec2.fromValues(0, 55); private static readonly desiredLeftFootOffset = vec2.fromValues(-20, 0); private static readonly desiredRightFootOffset = vec2.fromValues(20, 0); private static readonly centerOfMass = vec2.scale( @@ -76,15 +80,21 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical private isDestroyed = false; private timeSinceBorn = 0; private hasJustBorn = true; + private timeAlive = 0; + + private timeSinceLastShot = settings.projectileCreationInterval; + private timeSinceLastDamage = settings.playerOutOfCombatDelaySeconds; + private lastSyncedHealth = settings.playerMaxHealth; + + private killStreak = 0; private direction = 0; private currentPlanet?: PlanetPhysical; - private secondsSinceOnSurface = 1000; + private secondsSinceOnSurface = settings.planetDetachmentSeconds; public head: CirclePhysical; public leftFoot: CirclePhysical; public rightFoot: CirclePhysical; - public bound: CirclePhysical; private movementActions: Array = []; private lastMovementAction: MoveActionCommand = new MoveActionCommand(vec2.create()); @@ -128,12 +138,12 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical container.addObject(this.head); container.addObject(this.leftFoot); container.addObject(this.rightFoot); + } - this.bound = new CirclePhysical( - vec2.create(), - CharacterPhysical.boundRadius, - this, - container, + private get isSpawnProtected(): boolean { + return ( + this.timeAlive < + settings.spawnDespawnTime + settings.spawnInvulnerabilityExtraSeconds ); } @@ -156,9 +166,33 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical this.movementActions.push(c); } - public addKill() { + public get groundPlanet(): PlanetPhysical | undefined { + return this.currentPlanet; + } + + public addKill(victimName: string) { this.killCount++; + this.killStreak++; this.remoteCall('setKillCount', this.killCount); + + this.health = Math.min( + settings.playerMaxHealth, + this.health + settings.playerKillHealthReward, + ); + this.syncHealth(); + this.remoteCall('onKillConfirmed', victimName, this.killStreak); + } + + public registerHit() { + this.remoteCall('onHitConfirmed'); + } + + private syncHealth() { + const rounded = Math.round(this.health); + if (rounded !== this.lastSyncedHealth) { + this.lastSyncedHealth = rounded; + this.remoteCall('setHealth', this.health); + } } public onCollision({ other }: ReactToCollisionCommand) { @@ -168,28 +202,54 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical other.isAlive ) { other.destroy(); + + if (this.isSpawnProtected) { + return; + } + + this.timeSinceLastDamage = 0; this.health -= other.strength; + this.lastSyncedHealth = Math.round(this.health); this.remoteCall('setHealth', this.health); + if (this.health <= 0 && this.isAlive) { this.onDie(); - other.originator.addKill(); + other.originator.addKill(this.name); + } else { + other.originator.registerHit(); } } } - public shootTowards(position: vec2) { - if (!this.isAlive) { + public shootTowards(position: vec2, charge = 0) { + if ( + !this.isAlive || + this.timeSinceLastShot < settings.projectileCreationInterval || + this.projectileStrength < settings.chargeShotStrengthMin + ) { return; } + this.timeSinceLastShot = 0; + + const c = clamp01(charge); + const desiredStrength = mix( + settings.chargeShotStrengthMin, + settings.chargeShotStrengthMax, + c, + ); + const strength = Math.min(desiredStrength, this.projectileStrength); + this.projectileStrength -= strength; + + const radius = mix(settings.chargeShotRadiusMin, settings.chargeShotRadiusMax, c); + const speed = mix(settings.chargeShotSpeedMin, settings.chargeShotSpeedMax, c); + const direction = vec2.subtract(vec2.create(), position, this.center); vec2.normalize(direction, direction); - const velocity = vec2.scale(direction, direction, settings.projectileSpeed); - const strength = this.projectileStrength / 2; - this.projectileStrength -= strength; + const velocity = vec2.scale(direction, direction, speed); const projectile = new ProjectilePhysical( vec2.clone(this.center), - 20, + radius, strength, this.team, velocity, @@ -202,8 +262,7 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical } public get boundingBox(): BoundingBoxBase { - this.bound.center = this.head.center; - return this.bound.boundingBox; + return getBoundingBoxOfCircle(new Circle(this.center, CharacterPhysical.boundRadius)); } public get gameObject(): this { @@ -257,6 +316,11 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical new UpdatePropertyCommand('head', this.head, this.headVelocity), new UpdatePropertyCommand('leftFoot', this.leftFoot, this.leftFootVelocity), new UpdatePropertyCommand('rightFoot', this.rightFoot, this.rightFootVelocity), + new UpdatePropertyCommand( + 'strength', + this.projectileStrength, + settings.playerStrengthRegenerationPerSeconds, + ), ]); } @@ -298,6 +362,7 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical private step({ deltaTimeInSeconds, game }: StepCommand) { this.getPoints(game); + this.timeAlive += deltaTimeInSeconds; const oldHead = new Circle(vec2.clone(this.head.center), this.head.radius); const oldLeftFoot = new Circle( vec2.clone(this.leftFoot.center), @@ -328,16 +393,23 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical return; } - if ((this.secondsSinceOnSurface += deltaTimeInSeconds) > 0.5) { + if ( + (this.secondsSinceOnSurface += deltaTimeInSeconds) > + settings.planetDetachmentSeconds + ) { this.currentPlanet = undefined; } + this.timeSinceLastShot += deltaTimeInSeconds; + this.projectileStrength = Math.min( settings.playerMaxStrength, this.projectileStrength + - settings.playerStrengthRegenerationPerSeconds * deltaTimeInSeconds, + settings.playerStrengthRegenerationPerSeconds * deltaTimeInSeconds, ); + this.regenerateHealth(deltaTimeInSeconds); + this.currentPlanet?.takeControl(this.team, deltaTimeInSeconds); const intersectingWithForceField = this.container.findIntersecting( @@ -351,8 +423,8 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical const direction = this.averageAndResetMovementActions(); const movementForce = vec2.scale(direction, direction, settings.maxAcceleration); - this.applyForce(this.leftFoot, movementForce, deltaTimeInSeconds); - this.applyForce(this.rightFoot, movementForce, deltaTimeInSeconds); + this.leftFoot.applyForce(movementForce, deltaTimeInSeconds); + this.rightFoot.applyForce(movementForce, deltaTimeInSeconds); if (!this.currentPlanet) { const leftFootGravity = forceAtPosition( @@ -364,8 +436,8 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical intersectingWithForceField, ); - this.applyForce(this.leftFoot, leftFootGravity, deltaTimeInSeconds); - this.applyForce(this.rightFoot, rightFootGravity, deltaTimeInSeconds); + this.leftFoot.applyForce(leftFootGravity, deltaTimeInSeconds); + this.rightFoot.applyForce(rightFootGravity, deltaTimeInSeconds); const sumForce = vec2.subtract(vec2.create(), leftFootGravity, movementForce); @@ -377,8 +449,11 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical vec2.add(leftFootGravity, leftFootGravity, rightFootGravity); const gravity = vec2.scale(leftFootGravity, leftFootGravity, 0.5); - if (vec2.dot(movementForce, gravity) < -vec2.length(movementForce) * 0.8) { - vec2.scale(gravity, gravity, 0.35); + if ( + vec2.dot(movementForce, gravity) < + -vec2.length(movementForce) * settings.climbDotThreshold + ) { + vec2.scale(gravity, gravity, settings.climbGravityScale); } const scaledLeftFootGravity = vec2.scale( @@ -386,7 +461,7 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical this.leftFoot.lastNormal, vec2.dot(this.leftFoot.lastNormal, gravity), ); - this.applyForce(this.leftFoot, scaledLeftFootGravity, deltaTimeInSeconds); + this.leftFoot.applyForce(scaledLeftFootGravity, deltaTimeInSeconds); const scaledRightFootGravity = vec2.scale( vec2.create(), @@ -394,15 +469,15 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical vec2.dot(this.rightFoot.lastNormal, gravity), ); - this.applyForce(this.rightFoot, scaledRightFootGravity, deltaTimeInSeconds); + this.rightFoot.applyForce(scaledRightFootGravity, deltaTimeInSeconds); - if (vec2.length(gravity) <= 100) { + if (vec2.length(gravity) <= settings.planetDetachmentForceThreshold) { this.currentPlanet = undefined; } this.setDirection(gravity); } - this.keepPosture(deltaTimeInSeconds); + this.keepPosture(); this.stepBodyPart(this.leftFoot, deltaTimeInSeconds); this.stepBodyPart(this.rightFoot, deltaTimeInSeconds); this.stepBodyPart(this.head, deltaTimeInSeconds); @@ -418,56 +493,57 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical ); } - private keepPosture(deltaTime: number) { + private keepPosture() { const center = this.center; this.springMove( this.leftFoot, center, CharacterPhysical.leftFootOffset, - deltaTime, - 3000, + settings.postureFeetStiffness, ); this.springMove( this.rightFoot, center, CharacterPhysical.rightFootOffset, - deltaTime, - 3000, + settings.postureFeetStiffness, ); - this.springMove(this.head, center, CharacterPhysical.headOffset, deltaTime, 7000); + this.springMove( + this.head, + center, + CharacterPhysical.headOffset, + settings.postureHeadStiffness, + ); } private springMove( object: CirclePhysical, center: vec2, offset: vec2, - deltaTime: number, - strength: number, + stiffness: number, ) { const desiredPosition = vec2.add(vec2.create(), center, offset); vec2.rotate(desiredPosition, desiredPosition, center, this.direction); const positionDelta = vec2.subtract(vec2.create(), desiredPosition, object.center); - const positionDeltaLength = vec2.length(positionDelta); + // First-order velocity relaxation toward the desired posture position, + // added to (not replacing) the gravity/movement velocity accumulated + // earlier this tick. stepManually applies it over deltaTime, so the + // per-tick displacement is positionDelta * stiffness * deltaTime. + vec2.scaleAndAdd(object.velocity, object.velocity, positionDelta, stiffness); + } - if (positionDeltaLength > 0) { - const positionDeltaDirection = vec2.normalize(vec2.create(), positionDelta); - vec2.scale( - positionDelta, - positionDeltaDirection, - positionDeltaLength ** 2 * deltaTime * strength, + private regenerateHealth(deltaTimeInSeconds: number) { + this.timeSinceLastDamage += deltaTimeInSeconds; + if ( + this.timeSinceLastDamage > settings.playerOutOfCombatDelaySeconds && + this.health < settings.playerMaxHealth + ) { + this.health = Math.min( + settings.playerMaxHealth, + this.health + settings.playerHealthRegenerationPerSeconds * deltaTimeInSeconds, ); - - if (vec2.length(positionDelta) * deltaTime * deltaTime > positionDeltaLength) { - vec2.scale( - positionDelta, - positionDelta, - positionDeltaLength / (vec2.length(positionDelta) * deltaTime * deltaTime), - ); - } - - object.applyForce(positionDelta, deltaTime); + this.syncHealth(); } } @@ -479,14 +555,6 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical } } - public applyForce(circle: CirclePhysical, force: vec2, timeInSeconds: number) { - vec2.add( - circle.velocity, - circle.velocity, - vec2.scale(vec2.create(), force, timeInSeconds), - ); - } - public onDie() { this.isDestroyed = true; this.remoteCall('onDie'); diff --git a/backend/src/objects/planet-physical.ts b/backend/src/objects/planet-physical.ts index 5da432b..9e7b094 100644 --- a/backend/src/objects/planet-physical.ts +++ b/backend/src/objects/planet-physical.ts @@ -4,6 +4,7 @@ import { clamp, clamp01, id, + mix, serializesTo, settings, PlanetBase, @@ -18,20 +19,38 @@ import { StepCommand } from '../commands/step'; import { ImmutableBoundingBox } from '../physics/bounding-boxes/immutable-bounding-box'; import { StaticPhysical } from '../physics/physicals/static-physical'; +import { LampPhysical } from './lamp-physical'; @serializesTo(PlanetBase) export class PlanetPhysical extends PlanetBase implements StaticPhysical { public readonly canCollide = true; public readonly canMove = false; + public readonly sizePointMultiplier: number; + private _boundingBox?: ImmutableBoundingBox; + private readonly lamps: Array = []; + + private lastTeam: CharacterTeam = CharacterTeam.neutral; + protected commandExecutors: CommandExecutors = { [StepCommand.type]: this.step.bind(this), }; + public addLamp(lamp: LampPhysical) { + this.lamps.push(lamp); + } + constructor(vertices: Array) { super(id(), vertices); + + const sizeClass = clamp01( + (this.radius - settings.planetMinReferenceRadius) / + (settings.planetMaxReferenceRadius - settings.planetMinReferenceRadius), + ); + + this.sizePointMultiplier = mix(1, settings.planetSizePointMultiplierMax, sizeClass); } public distance(target: vec2): number { @@ -80,14 +99,14 @@ export class PlanetPhysical extends PlanetBase implements StaticPhysical { private getPoints(game: CommandReceiver) { if (this.timeSinceLastPointGeneration > settings.planetPointGenerationInterval) { this.timeSinceLastPointGeneration = 0; - if (this.team !== CharacterTeam.neutral) { - this.remoteCall('generatedPoints', settings.planetPointGenerationValue); - } + const value = Math.round( + settings.planetPointGenerationValue * this.sizePointMultiplier, + ); game.handleCommand( new GeneratePointsCommand( - this.team === CharacterTeam.decla ? settings.planetPointGenerationValue : 0, - this.team === CharacterTeam.red ? settings.planetPointGenerationValue : 0, + this.team === CharacterTeam.decla ? value : 0, + this.team === CharacterTeam.red ? value : 0, ), ); } @@ -95,9 +114,40 @@ export class PlanetPhysical extends PlanetBase implements StaticPhysical { private step({ deltaTimeInSeconds, game }: StepCommand) { this.timeSinceLastPointGeneration += deltaTimeInSeconds; + // In reverse order, so that teams can achieve a 100% control. this.getPoints(game); this.takeControl(CharacterTeam.neutral, deltaTimeInSeconds); + this.detectFlip(game); + } + + private detectFlip(game: CommandReceiver) { + const currentTeam = this.team; + if (currentTeam === this.lastTeam) { + return; + } + this.lastTeam = currentTeam; + + if (currentTeam !== CharacterTeam.neutral) { + const reward = Math.round( + settings.captureFlipPointReward * this.sizePointMultiplier, + ); + this.remoteCall('generatedPoints', reward); + game.handleCommand( + new GeneratePointsCommand( + currentTeam === CharacterTeam.decla ? reward : 0, + currentTeam === CharacterTeam.red ? reward : 0, + ), + ); + } + + const control = Math.abs(this.ownership - 0.5) / 0.5; + const lightness = mix(settings.lampMinLightness, settings.lampMaxLightness, control); + const color = settings.palette[settings.colorIndices[currentTeam]]; + + this.lamps.forEach((lamp) => lamp.queueSetLight(color, lightness)); + + this.remoteCall('onFlipped', currentTeam); } public getPropertyUpdates(): PropertyUpdatesForObject { @@ -153,7 +203,7 @@ export class PlanetPhysical extends PlanetBase implements StaticPhysical { public getForce(position: vec2): vec2 { const diff = vec2.subtract(vec2.create(), this.center, position); - const dist = Math.max(0, vec2.length(diff) - this.radius); + const dist = Math.max(settings.minGravityDistance, vec2.length(diff) - this.radius); vec2.normalize(diff, diff); const scale = clamp( settings.maxGravityQ * ((settings.maxGravityDistance / dist) ** 1.5 - 1), diff --git a/backend/src/players/npc.ts b/backend/src/players/npc.ts index e9075c0..bd2dee9 100644 --- a/backend/src/players/npc.ts +++ b/backend/src/players/npc.ts @@ -6,6 +6,7 @@ import { Random, MoveActionCommand, CharacterTeam, + Id, } from 'shared'; import { PhysicalContainer } from '../physics/containers/physical-container'; import { PlayerContainer } from './player-container'; @@ -13,16 +14,77 @@ import { PlayerBase } from './player-base'; import { getBoundingBoxOfCircle } from '../physics/functions/get-bounding-box-of-circle'; import { CharacterPhysical } from '../objects/character-physical'; import { PlanetPhysical } from '../objects/planet-physical'; +import { ProjectilePhysical } from '../objects/projectile-physical'; import { Physical } from '../physics/physicals/physical'; +const npcTuning = { + planIntervalSeconds: 1, + shootIntervalSeconds: 1.5, + reactionIntervalSeconds: 1 / 10, + reactionObserveRadius: 1400, + planScanRadius: 3500, + + aggressionMin: 0.25, + aggressionMax: 1, + + wanderReconsiderSeconds: 5, + wanderProbability: 0.4, + wanderTurn: 0.3, + + fleeBaseRange: 240, + fleeAggressionFalloff: 1.4, + + chaseBaseRange: 700, + chaseAggressionRange: 1600, + captureHoldEnemyDistance: 500, + + dodgeThreatRange: 450, + dodgeApproachDot: 0.6, + + dodgeBaseChance: 0.25, + dodgeAggressionChance: 0.35, + dodgeCommitSeconds: 0.35, + dodgeCooldownSeconds: 0.5, + + lineOfSightClearance: 20, + lineOfSightStartOffset: 100, + + fireBaseChance: 0.45, + fireAggressionChance: 0.45, + + chargeRangeThreshold: 500, + chargeBaseChance: 0.3, + chargeAggressionChance: 0.4, + chargeMin: 0.6, + + spreadBase: 60, + spreadPerDistance: 0.08, + spreadAggressionFalloff: 1.3, +}; + export class NPC extends PlayerBase { - private direction: vec2 = vec2.fromValues(Random.getRandom(), Random.getRandom()); - private timeSinceLastFindTarget = 10000; - private timeSinceLastFindShootTarget = 10000; + private direction = vec2.fromValues(Random.getRandom() - 0.5, Random.getRandom() - 0.5); + private timeSinceLastPlan = 10000; + private timeSinceLastShoot = 10000; private isWandering = false; private timeSinceLastWanderingConsideration = 0; private isComingBack = false; + private readonly aggression = Random.getRandomInRange( + npcTuning.aggressionMin, + npcTuning.aggressionMax, + ); + + private aimTargetId: Id = null; + private readonly aimTargetLastPosition = vec2.create(); + + private readonly dodgeDirection = vec2.create(); + private dodgeCommitRemaining = 0; + private dodgeCooldownRemaining = 0; + + private timeSinceObserve = npcTuning.reactionIntervalSeconds; + private nearObjects: Array = []; + constructor( playerInfo: PlayerInformation, playerContainer: PlayerContainer, @@ -34,172 +96,304 @@ export class NPC extends PlayerBase { this.step(0); } - private findTarget() { - if ( - (!this.isComingBack && vec2.length(this.center) > settings.worldRadius) || - (this.isComingBack && vec2.length(this.center) > settings.worldRadius / 2) - ) { - this.isComingBack = true; - vec2.subtract(this.direction, vec2.fromValues(0, 0), this.center); - return; - } - - this.isComingBack = false; - - const observableArea = getBoundingBoxOfCircle(new Circle(this.center, 2000)); - const nearObjects = this.objectContainer.findIntersecting(observableArea); - const characters = this.findNearCharactersSorted(nearObjects); - - if (characters.length > 0) { - const nearest = characters[0]; - if (nearest.distance < 200) { - vec2.subtract(this.direction, this.center, nearest.character.center); - return; - } - } - - const enemies = characters.filter((o) => o.character.team !== this.team); - - if (enemies.length > 0) { - const nearest = enemies[0]; - if (nearest.distance < 500) { - vec2.subtract(this.direction, this.center, nearest.character.center); - return; - } - } - - if (enemies.length > 0) { - const nearest = enemies[0]; - if (nearest.distance > 1000) { - vec2.subtract(this.direction, nearest.character.center, this.center); - return; - } - } - - if (this.isWandering) { - vec2.rotate( - this.direction, - this.direction, - vec2.create(), - Random.getRandomInRange(-0.2, 0.2), - ); - } else { - const planets = this.findNearPlanetsSorted(nearObjects).filter( - (p) => p.planet.team !== this.team, - ); - - if (planets.length > 0) { - vec2.subtract(this.direction, planets[0].planet.center, this.center); - } else { - this.isWandering = true; - } - } - } - - private findNearCharactersSorted( - nearObjects: Array, - ): Array<{ character: CharacterPhysical; distance: number }> { - const characters = Array.from( - new Set( - nearObjects.filter( - (o) => - o.gameObject instanceof CharacterPhysical && o.gameObject !== this.character, - ), - ), - ).map((c) => ({ - character: c.gameObject, - distance: vec2.distance(this.center, (c.gameObject as CharacterPhysical).center), - })) as Array<{ character: CharacterPhysical; distance: number }>; - - characters.sort((a, b) => a.distance - b.distance); - - return characters; - } - - private findNearPlanetsSorted( - nearObjects: Array, - ): Array<{ planet: PlanetPhysical; distance: number }> { - const planets = nearObjects - .filter((o) => o.gameObject instanceof PlanetPhysical) - .map((c) => ({ - planet: c.gameObject, - distance: vec2.distance(this.center, (c.gameObject as PlanetPhysical).center), - })) as Array<{ planet: PlanetPhysical; distance: number }>; - - planets.sort((a, b) => a.distance - b.distance); - return planets; - } - - private findShootTarget(): vec2 | undefined { - const observableArea = getBoundingBoxOfCircle(new Circle(this.center, 1000)); - const nearObjects = this.objectContainer.findIntersecting(observableArea); - - const enemies = nearObjects.filter( - (o) => o.gameObject instanceof CharacterPhysical && o.gameObject.team !== this.team, - ); - if (enemies.length > 0) { - return (enemies[0].gameObject as CharacterPhysical).center; - } - } - private timeUntilRespawn = 0; public step(deltaTimeInSeconds: number) { if (this.character) { - this.center = this.character?.center; + this.center = this.character.center; if (!this.character.isAlive) { this.sumDeaths++; this.sumKills = this.character.killCount; - this.character = null; this.timeUntilRespawn = settings.playerDiedTimeout; + return; } } else { if ((this.timeUntilRespawn -= deltaTimeInSeconds) < 0) { this.createCharacter(); this.center = this.character!.center; } + return; } - if ((this.timeSinceLastWanderingConsideration += deltaTimeInSeconds) > 3) { + if ( + (this.timeSinceLastWanderingConsideration += deltaTimeInSeconds) > + npcTuning.wanderReconsiderSeconds + ) { this.timeSinceLastWanderingConsideration = 0; - this.isWandering = Random.getRandom() > 0.5; + this.isWandering = Random.getRandom() < npcTuning.wanderProbability; } - if ((this.timeSinceLastFindTarget += deltaTimeInSeconds) > 1) { - this.timeSinceLastFindTarget = 0; - this.findTarget(); + if ((this.timeSinceLastPlan += deltaTimeInSeconds) > npcTuning.planIntervalSeconds) { + this.timeSinceLastPlan = 0; + this.plan(); } - if ((this.timeSinceLastFindShootTarget += deltaTimeInSeconds) > 0.5) { - if (Random.getRandom() > 0.5) { - const shootTarget = this.findShootTarget(); - if (shootTarget) { - vec2.add( - shootTarget, - shootTarget, - vec2.fromValues( - Random.getRandomInRange(-200, 200), - Random.getRandomInRange(-200, 200), - ), - ); - this.character?.shootTowards(shootTarget); - } - } - - this.timeSinceLastFindShootTarget = 0; + if ( + (this.timeSinceObserve += deltaTimeInSeconds) > npcTuning.reactionIntervalSeconds + ) { + this.timeSinceObserve = 0; + this.nearObjects = this.observe(npcTuning.reactionObserveRadius); } - this.character?.handleMovementAction(new MoveActionCommand(this.direction)); + this.dodgeCommitRemaining -= deltaTimeInSeconds; + this.dodgeCooldownRemaining -= deltaTimeInSeconds; + const movement = this.decideMovement(this.nearObjects); + this.character.handleMovementAction(new MoveActionCommand(movement)); + + if ( + (this.timeSinceLastShoot += deltaTimeInSeconds) > npcTuning.shootIntervalSeconds + ) { + this.timeSinceLastShoot = 0; + this.tryShoot(this.nearObjects); + } } - protected createCharacter() { - const randomPoint = vec2.rotate( + private plan() { + const distanceFromCentre = vec2.length(this.center); + if ( + (!this.isComingBack && distanceFromCentre > settings.worldRadius) || + (this.isComingBack && distanceFromCentre > settings.worldRadius / 2) + ) { + this.isComingBack = true; + vec2.negate(this.direction, this.center); + return; + } + this.isComingBack = false; + + const nearObjects = this.observe(npcTuning.planScanRadius); + const enemies = this.enemiesByDistance(nearObjects); + + if (enemies.length > 0) { + const nearest = enemies[0]; + const fleeRange = + npcTuning.fleeBaseRange * (npcTuning.fleeAggressionFalloff - this.aggression); + if (nearest.distance < fleeRange) { + vec2.subtract(this.direction, this.center, nearest.character.center); + return; + } + } + + if (enemies.length > 0) { + const nearest = enemies[0]; + const chaseRange = + npcTuning.chaseBaseRange + npcTuning.chaseAggressionRange * this.aggression; + if (nearest.distance < chaseRange) { + vec2.subtract(this.direction, nearest.character.center, this.center); + return; + } + } + + if (!this.isWandering) { + const planet = this.capturablePlanetsByDistance(nearObjects)[0]; + if (planet) { + vec2.subtract(this.direction, planet.planet.center, this.center); + return; + } + } + + vec2.rotate( + this.direction, + this.direction, vec2.create(), - vec2.fromValues(Random.getRandomInRange(0, settings.worldRadius), 0), - vec2.create(), - Random.getRandomInRange(0, Math.PI * 2), + Random.getRandomInRange(-npcTuning.wanderTurn, npcTuning.wanderTurn), ); - super.createCharacter(randomPoint); + } + + private decideMovement(nearObjects: Array): vec2 { + if (this.dodgeCommitRemaining > 0) { + return vec2.clone(this.dodgeDirection); + } + if (this.dodgeCooldownRemaining <= 0) { + const dodge = this.dodgeVector(nearObjects); + if (dodge) { + if ( + Random.getRandom() < + npcTuning.dodgeBaseChance + npcTuning.dodgeAggressionChance * this.aggression + ) { + vec2.copy(this.dodgeDirection, dodge); + this.dodgeCommitRemaining = npcTuning.dodgeCommitSeconds; + return vec2.clone(this.dodgeDirection); + } + this.dodgeCooldownRemaining = npcTuning.dodgeCooldownSeconds; + } + } + + const planet = this.character!.groundPlanet; + if (planet && planet.team !== this.team) { + const enemies = this.enemiesByDistance(nearObjects); + if ( + enemies.length === 0 || + enemies[0].distance > npcTuning.captureHoldEnemyDistance + ) { + return vec2.create(); + } + } + + return vec2.normalize(vec2.create(), this.direction); + } + + private dodgeVector(nearObjects: Array): vec2 | undefined { + let threat: ProjectilePhysical | undefined; + let threatDistance = Infinity; + + for (const o of nearObjects) { + const p = o.gameObject; + if (!(p instanceof ProjectilePhysical) || p.team === this.team || !p.isAlive) { + continue; + } + const toMe = vec2.subtract(vec2.create(), this.center, p.center); + const distance = vec2.length(toMe); + if (distance > npcTuning.dodgeThreatRange || distance === 0) { + continue; + } + vec2.normalize(toMe, toMe); + if ( + vec2.dot(p.direction, toMe) > npcTuning.dodgeApproachDot && + distance < threatDistance + ) { + threatDistance = distance; + threat = p; + } + } + + if (!threat) { + return undefined; + } + + const perpendicular = vec2.fromValues(-threat.direction.y, threat.direction.x); + const toMe = vec2.subtract(vec2.create(), this.center, threat.center); + if (vec2.dot(perpendicular, toMe) < 0) { + vec2.negate(perpendicular, perpendicular); + } + vec2.normalize(perpendicular, perpendicular); + + return perpendicular; + } + + private tryShoot(nearObjects: Array) { + const enemies = this.enemiesByDistance(nearObjects); + const visible = enemies.find((e) => + this.hasLineOfSightTo(e.character.center, nearObjects), + ); + if (!visible) { + this.aimTargetId = null; + return; + } + + const target = visible.character; + const distance = visible.distance; + + const velocity = vec2.create(); + if (this.aimTargetId === target.id) { + vec2.subtract(velocity, target.center, this.aimTargetLastPosition); + vec2.scale(velocity, velocity, 1 / npcTuning.shootIntervalSeconds); + } + this.aimTargetId = target.id; + vec2.copy(this.aimTargetLastPosition, target.center); + + if ( + Random.getRandom() > + npcTuning.fireBaseChance + npcTuning.fireAggressionChance * this.aggression + ) { + return; + } + + const charge = + distance > npcTuning.chargeRangeThreshold && + Random.getRandom() < + npcTuning.chargeBaseChance + npcTuning.chargeAggressionChance * this.aggression + ? Random.getRandomInRange(npcTuning.chargeMin, 1) + : 0; + + const projectileSpeed = + charge > 0 ? settings.chargeShotSpeedMax : settings.chargeShotSpeedMin; + const leadTime = distance / projectileSpeed; + const aim = vec2.scaleAndAdd(vec2.create(), target.center, velocity, leadTime); + + (npcTuning.spreadBase + distance * npcTuning.spreadPerDistance) * + (npcTuning.spreadAggressionFalloff - this.aggression); + aim.x += Random.getRandomInRange(-spread, spread); + aim.y += Random.getRandomInRange(-spread, spread); + + this.character!.shootTowards(aim, charge); + } + + private hasLineOfSightTo(target: vec2, nearObjects: Array): boolean { + const planets: Array = []; + for (const o of nearObjects) { + if (o.gameObject instanceof PlanetPhysical) { + planets.push(o.gameObject); + } + } + if (planets.length === 0) { + return true; + } + + const direction = vec2.subtract(vec2.create(), target, this.center); + const totalDistance = vec2.length(direction); + if (totalDistance <= npcTuning.lineOfSightStartOffset) { + return true; + } + vec2.normalize(direction, direction); + + let traveled = npcTuning.lineOfSightStartOffset; + const position = vec2.scaleAndAdd(vec2.create(), this.center, direction, traveled); + while (traveled < totalDistance) { + let sdf = Infinity; + for (const planet of planets) { + sdf = Math.min(sdf, planet.distance(position)); + } + if (sdf < npcTuning.lineOfSightClearance) { + return false; + } + traveled += sdf; + vec2.scaleAndAdd(position, position, direction, sdf); + } + return true; + } + + private observe(radius: number): Array { + return this.objectContainer.findIntersecting( + getBoundingBoxOfCircle(new Circle(this.center, radius)), + ); + } + + private enemiesByDistance( + nearObjects: Array, + ): Array<{ character: CharacterPhysical; distance: number }> { + const seen = new Set(); + const enemies: Array<{ character: CharacterPhysical; distance: number }> = []; + for (const o of nearObjects) { + const c = o.gameObject; + if ( + c instanceof CharacterPhysical && + c !== this.character && + c.isAlive && + c.team !== this.team && + !seen.has(c) + ) { + seen.add(c); + enemies.push({ character: c, distance: vec2.distance(this.center, c.center) }); + } + } + enemies.sort((a, b) => a.distance - b.distance); + return enemies; + } + + private capturablePlanetsByDistance( + nearObjects: Array, + ): Array<{ planet: PlanetPhysical; distance: number }> { + const planets = nearObjects + .filter( + (o): o is Physical => + o.gameObject instanceof PlanetPhysical && o.gameObject.team !== this.team, + ) + .map((o) => ({ + planet: o.gameObject as PlanetPhysical, + distance: vec2.distance(this.center, (o.gameObject as PlanetPhysical).center), + })); + planets.sort((a, b) => a.distance - b.distance); + return planets; } } diff --git a/frontend/src/scripts/commands/mouse-listener.ts b/frontend/src/scripts/commands/mouse-listener.ts index 23f2bd9..c4bd30d 100644 --- a/frontend/src/scripts/commands/mouse-listener.ts +++ b/frontend/src/scripts/commands/mouse-listener.ts @@ -1,8 +1,14 @@ import { vec2 } from 'gl-matrix'; -import { CommandGenerator, PrimaryActionCommand, SecondaryActionCommand } from 'shared'; +import { CommandGenerator, PrimaryActionCommand, holdDurationToCharge } from 'shared'; import { Game } from '../game'; +import { ChargeIndicator } from '../charge-indicator'; +import { Pointer } from '../helper/pointer'; export class MouseListener extends CommandGenerator { + // Timestamp (ms) of the primary press, or null when not held. On release the + // held duration is mapped to the charge scalar; a quick tap reads as ~0. + private primaryDownAt: number | null = null; + constructor( private target: HTMLElement, private readonly game: Game, @@ -10,22 +16,43 @@ export class MouseListener extends CommandGenerator { super(); target.addEventListener('mousedown', this.mouseDownListener); + target.addEventListener('mouseup', this.mouseUpListener); + target.addEventListener('mousemove', this.mouseMoveListener); target.addEventListener('contextmenu', this.contextMenuListener); } - private mouseDownListener = (event: MouseEvent) => { - const position = this.positionFromEvent(event); + // Only the screen position is stored; it is reprojected to world space each + // frame so the gaze stays correct even while the camera pans under a still + // cursor. + private mouseMoveListener = (event: MouseEvent) => { + Pointer.setDisplayPosition(event.clientX, event.clientY); + }; + private mouseDownListener = (event: MouseEvent) => { if (event.button === 0) { - this.sendCommandToSubscribers(new PrimaryActionCommand(position)); + this.primaryDownAt = performance.now(); + // The ring follows the cursor and only fades in once this press has + // clearly become a hold. + ChargeIndicator.begin(event.clientX, event.clientY, true); } }; + private mouseUpListener = (event: MouseEvent) => { + if (event.button !== 0 || this.primaryDownAt === null) { + return; + } + + ChargeIndicator.end(); + const charge = holdDurationToCharge((performance.now() - this.primaryDownAt) / 1000); + this.primaryDownAt = null; + this.sendCommandToSubscribers( + new PrimaryActionCommand(this.positionFromEvent(event), charge), + ); + }; + + // Suppress the browser context menu on the canvas; right-click has no action. private contextMenuListener = (event: MouseEvent) => { event.preventDefault(); - - const position = this.positionFromEvent(event); - this.sendCommandToSubscribers(new SecondaryActionCommand(position)); }; private positionFromEvent(event: MouseEvent): vec2 { @@ -35,7 +62,10 @@ export class MouseListener extends CommandGenerator { } public destroy() { + ChargeIndicator.end(); this.target.removeEventListener('mousedown', this.mouseDownListener); + this.target.removeEventListener('mouseup', this.mouseUpListener); + this.target.removeEventListener('mousemove', this.mouseMoveListener); this.target.removeEventListener('contextmenu', this.contextMenuListener); } } diff --git a/frontend/src/scripts/commands/touch-listener.ts b/frontend/src/scripts/commands/touch-listener.ts index 7f69f61..4ecb6bf 100644 --- a/frontend/src/scripts/commands/touch-listener.ts +++ b/frontend/src/scripts/commands/touch-listener.ts @@ -1,6 +1,14 @@ import { vec2 } from 'gl-matrix'; -import { CommandGenerator, MoveActionCommand, last, PrimaryActionCommand } from 'shared'; +import { + CommandGenerator, + MoveActionCommand, + last, + PrimaryActionCommand, + holdDurationToCharge, + settings, +} from 'shared'; import { Game } from '../game'; +import { ChargeIndicator } from '../charge-indicator'; export class TouchListener extends CommandGenerator { private static readonly deadZone = 8; @@ -10,6 +18,12 @@ export class TouchListener extends CommandGenerator { private joystickButton: HTMLElement; private isJoystickActive = false; private touchStartPosition!: vec2; + private primaryDownAt: number | null = null; + + private fireButton: HTMLElement; + private fireStrengthRing: HTMLElement; + + private fireDownAt: number | null = null; constructor( private target: HTMLElement, @@ -23,6 +37,17 @@ export class TouchListener extends CommandGenerator { this.joystickButton = document.createElement('div'); this.joystick.appendChild(this.joystickButton); + this.fireButton = document.createElement('div'); + this.fireButton.className = 'touch-button fire'; + this.fireStrengthRing = document.createElement('div'); + this.fireStrengthRing.className = 'strength-ring'; + this.fireButton.appendChild(this.fireStrengthRing); + + this.fireButton.addEventListener('touchstart', this.fireButtonDownListener); + this.fireButton.addEventListener('touchend', this.fireButtonUpListener); + + this.overlay.appendChild(this.fireButton); + target.addEventListener('touchstart', this.touchStartListener); target.addEventListener('touchmove', this.touchMoveListener); target.addEventListener('touchend', this.touchEndListener); @@ -43,6 +68,8 @@ export class TouchListener extends CommandGenerator { event.touches[0].clientX, event.touches[0].clientY, ); + this.primaryDownAt = performance.now(); + ChargeIndicator.begin(this.touchStartPosition.x, this.touchStartPosition.y); } }; @@ -60,6 +87,8 @@ export class TouchListener extends CommandGenerator { if (!this.isJoystickActive && deltaLength > TouchListener.deadZone) { this.isJoystickActive = true; + this.primaryDownAt = null; + ChargeIndicator.end(); this.overlay.appendChild(this.joystick); this.joystickButton.style.transform = `translateX(-50%) translateY(-50%)`; this.joystick.style.transform = `translateX(${this.touchStartPosition.x}px) translateY(${this.touchStartPosition.y}px) translateX(-50%) translateY(-50%)`; @@ -71,7 +100,8 @@ export class TouchListener extends CommandGenerator { vec2.set(delta, delta.x, -delta.y); if (deltaLength > TouchListener.deadZone) { - this.sendCommandToSubscribers(new MoveActionCommand(vec2.normalize(delta, delta))); + const direction = vec2.normalize(delta, delta); + this.sendCommandToSubscribers(new MoveActionCommand(direction)); } else { this.sendCommandToSubscribers(new MoveActionCommand(vec2.create())); } @@ -81,12 +111,18 @@ export class TouchListener extends CommandGenerator { event.preventDefault(); if (!this.isJoystickActive) { + ChargeIndicator.end(); + const charge = + this.primaryDownAt === null + ? 0 + : holdDurationToCharge((performance.now() - this.primaryDownAt) / 1000); + this.primaryDownAt = null; const center = vec2.fromValues( event.changedTouches[0].clientX, event.changedTouches[0].clientY, ); this.sendCommandToSubscribers( - new PrimaryActionCommand(this.game.displayToWorldCoordinates(center)), + new PrimaryActionCommand(this.game.displayToWorldCoordinates(center), charge), ); } else if (event.touches.length === 0) { this.isJoystickActive = false; @@ -95,9 +131,62 @@ export class TouchListener extends CommandGenerator { } }; + private swallowTouch = (event: TouchEvent) => { + event.preventDefault(); + event.stopPropagation(); + }; + + private fireButtonDownListener = (event: TouchEvent) => { + this.swallowTouch(event); + this.fireDownAt = performance.now(); + const rect = this.fireButton.getBoundingClientRect(); + ChargeIndicator.begin(rect.left + rect.width / 2, rect.top + rect.height / 2); + }; + + private fireButtonUpListener = (event: TouchEvent) => { + this.swallowTouch(event); + ChargeIndicator.end(); + if (this.fireDownAt === null) { + return; + } + + const charge = holdDurationToCharge((performance.now() - this.fireDownAt) / 1000); + this.fireDownAt = null; + + const character = this.game.gameObjects.player; + if (!character) { + return; + } + const aim = vec2.scaleAndAdd( + vec2.create(), + character.bodyCenter, + character.facingDirection, + settings.touchAimRange, + ); + this.sendCommandToSubscribers(new PrimaryActionCommand(aim, charge)); + }; + + public update(_deltaTimeInSeconds: number) { + if (!this.fireButton.parentElement) { + this.overlay.appendChild(this.fireButton); + } + + const character = this.game.gameObjects.player; + if (character) { + this.fireStrengthRing.style.background = `conic-gradient(rgba(255, 255, 255, 0.75) ${character.strengthFraction * 360 + }deg, transparent 0deg)`; + } + } + public destroy() { + ChargeIndicator.end(); this.target.removeEventListener('touchstart', this.touchStartListener); this.target.removeEventListener('touchmove', this.touchMoveListener); this.target.removeEventListener('touchend', this.touchEndListener); + + this.fireButton.removeEventListener('touchstart', this.fireButtonDownListener); + this.fireButton.removeEventListener('touchend', this.fireButtonUpListener); + + this.fireButton.parentElement?.removeChild(this.fireButton); } } diff --git a/frontend/src/scripts/feedback-hud.ts b/frontend/src/scripts/feedback-hud.ts index bb08226..801828b 100644 --- a/frontend/src/scripts/feedback-hud.ts +++ b/frontend/src/scripts/feedback-hud.ts @@ -1,11 +1,6 @@ import { settings } from 'shared'; import { Pointer } from './helper/pointer'; -// Lightweight, self-managing combat-feedback overlay for the local player: -// hitmarkers, a personal killfeed, multi-kill callouts and a points popup. It -// owns a single fixed, click-through root under and auto-expires every -// element it creates, so callers (CharacterView remote-call handlers) just fire -// and forget — no wiring through the game loop. export abstract class FeedbackHud { private static root?: HTMLElement; private static killfeed?: HTMLElement; @@ -24,8 +19,6 @@ export abstract class FeedbackHud { return { root: this.root, killfeed: this.killfeed }; } - // Where transient marks/popups appear: the cursor on desktop, screen centre on - // touch (where the local character fires along its facing). private static focusPoint(): { x: number; y: number } { const cursor = Pointer.getDisplayPosition(); if (cursor) { @@ -40,7 +33,6 @@ export abstract class FeedbackHud { setTimeout(() => element.parentElement?.removeChild(element), lifetimeMs); } - // A non-lethal hit landed: a quick crosshair tick at the focus point. public static hitMarker() { const { x, y } = this.focusPoint(); const marker = document.createElement('div'); @@ -50,7 +42,6 @@ export abstract class FeedbackHud { this.addTransient(marker, 250); } - // A kill was confirmed: killfeed line, points popup and (for streaks) a callout. public static killConfirmed(victimName?: string, streak = 1) { const { killfeed } = this.ensureRoot(); diff --git a/frontend/src/scripts/objects/game-object-container.ts b/frontend/src/scripts/objects/game-object-container.ts index d09a99f..eb6b3dc 100644 --- a/frontend/src/scripts/objects/game-object-container.ts +++ b/frontend/src/scripts/objects/game-object-container.ts @@ -15,6 +15,7 @@ import { StepCommand } from '../commands/types/step'; import { Game } from '../game'; import { Camera } from './types/camera'; import { CharacterView } from './types/character-view'; +import { PlanetView } from './types/planet-view'; export class GameObjectContainer extends CommandReceiver { protected objects: Map = new Map(); @@ -57,6 +58,16 @@ export class GameObjectContainer extends CommandReceiver { super(); } + public get planets(): Array { + const planets: Array = []; + this.objects.forEach((o) => { + if (o instanceof PlanetView) { + planets.push(o); + } + }); + return planets; + } + protected defaultCommandExecutor(c: Command) { this.objects.forEach((o) => o.handleCommand(c)); this.camera.handleCommand(c); diff --git a/frontend/src/scripts/scoreboard.ts b/frontend/src/scripts/scoreboard.ts index 115d874..38dff4e 100644 --- a/frontend/src/scripts/scoreboard.ts +++ b/frontend/src/scripts/scoreboard.ts @@ -49,6 +49,11 @@ export class Scoreboard { this.declaFill.style.width = fraction(declaCount) + '%'; this.redFill.style.width = fraction(redCount) + '%'; + const isMatchPoint = (count: number) => + count / limit >= settings.matchPointScoreRatio; + this.declaFill.classList.toggle('match-point', isMatchPoint(declaCount)); + this.redFill.classList.toggle('match-point', isMatchPoint(redCount)); + this.declaScore.innerText = String(Math.round(declaCount)); this.redScore.innerText = String(Math.round(redCount)); diff --git a/frontend/src/scripts/shapes/character-shape.ts b/frontend/src/scripts/shapes/character-shape.ts new file mode 100644 index 0000000..711f70a --- /dev/null +++ b/frontend/src/scripts/shapes/character-shape.ts @@ -0,0 +1,219 @@ +import { mat2d, vec2 } from 'gl-matrix'; +import { Drawable, DrawableDescriptor } from 'sdf-2d'; +import { Circle } from 'shared'; + +// A single character silhouette shared by every team (teams differ only by +// colour): a circular head sitting on two thin line-legs that run down to the +// two feet. +export class CharacterShape extends Drawable { + public static descriptor: DrawableDescriptor = { + sdf: { + shader: ` + uniform vec2 characterHeadCenters[CHARACTER_COUNT]; + uniform vec2 characterLeftFeet[CHARACTER_COUNT]; + uniform vec2 characterRightFeet[CHARACTER_COUNT]; + uniform vec2 characterGazeTargets[CHARACTER_COUNT]; + uniform float characterHeadRadii[CHARACTER_COUNT]; + uniform float characterFootRadii[CHARACTER_COUNT]; + uniform int characterColors[CHARACTER_COUNT]; + uniform float characterFlash[CHARACTER_COUNT]; + + float circleDistance(vec2 circleCenter, float radius, vec2 target) { + return distance(target, circleCenter) - radius; + } + + // Distance to the segment a->b; subtract a radius to get a capsule (a + // rounded thick line). + float segmentDistance(vec2 a, vec2 b, vec2 target) { + vec2 pa = target - a; + vec2 ba = b - a; + float h = clamp(dot(pa, ba) / dot(ba, ba), 0.0, 1.0); + return length(pa - ba * h); + } + + float characterMinDistance(vec2 target, out vec4 color) { + float minDistance = 1000.0; + + for (int i = 0; i < CHARACTER_COUNT; i++) { + vec2 head = characterHeadCenters[i]; + vec2 leftFoot = characterLeftFeet[i]; + vec2 rightFoot = characterRightFeet[i]; + float headRadius = characterHeadRadii[i]; + float footRadius = characterFootRadii[i]; + + // The server rotates the whole posture toward travel, so the head + // leads: forward is the facing direction, perp its 90deg rotation, so + // the face sits on the leading side and reads at any rotation. + vec2 footAverage = (leftFoot + rightFoot) * 0.5; + vec2 toHead = head - footAverage; + float toHeadLength = length(toHead); + vec2 forward = toHeadLength > 0.001 ? toHead / toHeadLength : vec2(0.0, 1.0); + vec2 perp = vec2(-forward.y, forward.x); + + // A circular head, drawn a bit smaller than the head->feet gap so the + // legs below it read as two distinct LINES rather than being swallowed + // by the head. + float renderRadius = headRadius * 0.75; + float headDistance = circleDistance(head, renderRadius, target); + + // Legs as thin line-segments (capsules) from the head down to each + // foot, hard-min'd onto the head so the head stays a crisp circle. + float legThickness = footRadius * 0.35; + float leftLeg = segmentDistance(head, leftFoot, target) - legThickness; + float rightLeg = segmentDistance(head, rightFoot, target) - legThickness; + + // Rounded feet at the ends of the lines, kept large enough to stay + // visible even when the leg is short and the head nearly reaches them. + float footRender = footRadius * 0.7; + float leftFootDistance = circleDistance(leftFoot, footRender, target); + float rightFootDistance = circleDistance(rightFoot, footRender, target); + + float body = min( + headDistance, + min(min(leftLeg, rightLeg), min(leftFootDistance, rightFootDistance)) + ); + + // Real eyes painted on the leading face — a bright white sclera with a + // dark pupil — rather than carved holes, so the character reads as + // alive instead of hollow-socketed. + // Big white sclera, small pupil: the eye must read as mostly white so + // it looks like an eye, not a dark socket. (An 8-bit albedo caps the + // sclera at pure white, so its area — not its colour — is what makes + // the eye read brighter against the body.) + vec2 eyeBase = head + forward * (renderRadius * 0.26); + vec2 leftEyeCenter = eyeBase + perp * (renderRadius * 0.38); + vec2 rightEyeCenter = eyeBase - perp * (renderRadius * 0.38); + float scleraRadius = renderRadius * 0.26; + float pupilRadius = renderRadius * 0.11; + + // The pupil slides toward the gaze target (the cursor for the local + // player, otherwise the travel direction), kept well inside the rim so + // a generous ring of white always frames it. The normalize is guarded + // so a cursor resting exactly on an eye can't produce NaNs. + vec2 gazeTarget = characterGazeTargets[i]; + float pupilReach = (scleraRadius - pupilRadius) * 0.6; + vec2 toLeftGaze = gazeTarget - leftEyeCenter; + vec2 toRightGaze = gazeTarget - rightEyeCenter; + vec2 leftGaze = length(toLeftGaze) > 0.001 ? normalize(toLeftGaze) : forward; + vec2 rightGaze = length(toRightGaze) > 0.001 ? normalize(toRightGaze) : forward; + + float sclera = min( + circleDistance(leftEyeCenter, scleraRadius, target), + circleDistance(rightEyeCenter, scleraRadius, target) + ); + float pupil = min( + circleDistance(leftEyeCenter + leftGaze * pupilReach, pupilRadius, target), + circleDistance(rightEyeCenter + rightGaze * pupilReach, pupilRadius, target) + ); + + // Soften each eye edge by at least one screen texel so the colour + // boundary antialiases instead of staircasing when the character is + // small on screen. The fixed world-space term sets a floor on the + // softness when zoomed in; fwidth widens the band to a texel as the + // head shrinks. Computed here in uniform control flow — NOT inside the + // body branch below — so the screen-space derivatives stay defined. + // fwidth needs WebGL2 derivatives (core in GLSL ES 3.00), so the + // WebGL1 fallback keeps the plain world-space band. + float eyeAaBase = renderRadius * 0.025; + #ifdef WEBGL2_IS_AVAILABLE + float scleraAa = max(eyeAaBase, fwidth(sclera)); + float pupilAa = max(eyeAaBase, fwidth(pupil)); + #else + float scleraAa = eyeAaBase; + float pupilAa = eyeAaBase; + #endif + + if (body < minDistance) { + minDistance = body; + // Brief white punch when taking a hit. + color = mix( + readFromPalette(characterColors[i]), + vec4(1.0), + clamp(characterFlash[i], 0.0, 1.0) + ); + + // Paint the eyes over the body colour. The sclera albedo is HDR + // (>> 1): the shading pass multiplies it by the (often dim, reddish) + // scene light before clamping to the screen, so an over-bright white + // reads as a clean white eye everywhere instead of dimming into a + // dark socket. Needs the float colour buffer in sdf-2d; on 8-bit + // fallback it simply clamps back to plain white. The smoothstep + // widths (scleraAa / pupilAa, computed above) antialias the colour + // boundary in a zoom-aware way. + color = mix(color, vec4(10.0, 10.0, 10.0, 1.0), 1.0 - smoothstep(-scleraAa, scleraAa, sclera)); + color = mix(color, vec4(0.04, 0.04, 0.07, 1.0), 1.0 - smoothstep(-pupilAa, pupilAa, pupil)); + } + } + + return minDistance; + } + `, + distanceFunctionName: 'characterMinDistance', + }, + propertyUniformMapping: { + footRadius: 'characterFootRadii', + headRadius: 'characterHeadRadii', + rightFootCenter: 'characterRightFeet', + leftFootCenter: 'characterLeftFeet', + headCenter: 'characterHeadCenters', + gazeTarget: 'characterGazeTargets', + color: 'characterColors', + flash: 'characterFlash', + }, + uniformCountMacroName: 'CHARACTER_COUNT', + shaderCombinationSteps: [0, 1, 2, 8], + empty: new CharacterShape(0), + }; + + protected head!: Circle; + protected leftFoot!: Circle; + protected rightFoot!: Circle; + + // 0..1 transient white flash on taking a hit. Set per frame. + public hitFlash = 0; + // World point the eyes look at; the pupils slide toward it. Set per frame + // (the cursor for the local player, the travel direction for everyone else). + public gazeTarget = vec2.create(); + + public constructor(private readonly color: number) { + super(); + + const circle = new Circle(vec2.create(), 200); + this.setCircles([circle, circle, circle]); + } + + public setCircles([head, leftFoot, rightFoot]: [Circle, Circle, Circle]) { + this.head = head; + this.leftFoot = leftFoot; + this.rightFoot = rightFoot; + } + + public minDistance(target: vec2): number { + return Math.min( + this.head.distance(target), + this.leftFoot.distance(target), + this.rightFoot.distance(target), + ); + } + + protected getObjectToSerialize(transform2d: mat2d, transform1d: number): any { + return { + headCenter: vec2.transformMat2d(vec2.create(), this.head.center, transform2d), + leftFootCenter: vec2.transformMat2d( + vec2.create(), + this.leftFoot.center, + transform2d, + ), + rightFootCenter: vec2.transformMat2d( + vec2.create(), + this.rightFoot.center, + transform2d, + ), + gazeTarget: vec2.transformMat2d(vec2.create(), this.gazeTarget, transform2d), + headRadius: this.head.radius * transform1d, + footRadius: this.leftFoot.radius * transform1d, + color: this.color, + flash: this.hitFlash, + }; + } +} diff --git a/frontend/src/scripts/shapes/planet-shape.ts b/frontend/src/scripts/shapes/planet-shape.ts index 68bccb8..6fa7565 100644 --- a/frontend/src/scripts/shapes/planet-shape.ts +++ b/frontend/src/scripts/shapes/planet-shape.ts @@ -122,8 +122,6 @@ export class PlanetShape extends PolygonFactory(settings.planetEdgeCount, 0) { }; public randomOffset = 0; - // Radians the surface noise is rotated by; advanced over time by PlanetView so - // the planet's textured surface slowly spins. public rotation = 0; constructor( From ec579650d740a2057392e2696835dfe8b5005771 Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Thu, 11 Jun 2026 21:43:49 +0100 Subject: [PATCH 092/101] Even more improvements --- backend/src/players/npc.ts | 3 +- frontend/src/main.scss | 471 ++++++++++++++++-- .../scripts/objects/types/character-view.ts | 168 ++++++- .../src/scripts/objects/types/planet-view.ts | 144 ++++-- shared/src/settings.ts | 47 +- 5 files changed, 724 insertions(+), 109 deletions(-) diff --git a/backend/src/players/npc.ts b/backend/src/players/npc.ts index bd2dee9..7bcb3f7 100644 --- a/backend/src/players/npc.ts +++ b/backend/src/players/npc.ts @@ -311,7 +311,8 @@ export class NPC extends PlayerBase { const leadTime = distance / projectileSpeed; const aim = vec2.scaleAndAdd(vec2.create(), target.center, velocity, leadTime); - (npcTuning.spreadBase + distance * npcTuning.spreadPerDistance) * + const spread = + (npcTuning.spreadBase + distance * npcTuning.spreadPerDistance) * (npcTuning.spreadAggressionFalloff - this.aggression); aim.x += Random.getRandomInRange(-spread, spread); aim.y += Random.getRandomInRange(-spread, spread); diff --git a/frontend/src/main.scss b/frontend/src/main.scss index 4231090..08e6889 100644 --- a/frontend/src/main.scss +++ b/frontend/src/main.scss @@ -20,6 +20,7 @@ html { font-size: 0.85rem; + @media (max-width: $breakpoint) { font-size: 0.6rem; } @@ -30,17 +31,21 @@ img { } h1 { + &, * { font-family: 'Comfortaa', sans-serif; font-weight: 400; } + font-size: 6rem; text-align: center; padding-bottom: $medium-padding; + @media (max-width: $height-breakpoint) { font-size: 4.5rem; } + @media (max-height: $height-breakpoint) { display: none; } @@ -48,6 +53,7 @@ h1 { .red { color: $accent; + &::selection { color: $accent; background-color: white; @@ -75,8 +81,10 @@ body { top: 0; @include background; + #spinner { @include square(20vmax); + @media (max-width: $breakpoint) { @include square(20vmax); } @@ -107,7 +115,7 @@ body { overflow: hidden; - & > * { + &>* { display: inline-block; position: absolute; top: 0; @@ -120,8 +128,10 @@ body { &.decla { color: $bright-decla; - div:first-child { + + .health { background-color: $bright-decla; + &:before { background-color: $bright-decla; opacity: 0.3; @@ -131,8 +141,10 @@ body { &.red { color: $bright-red; - div:first-child { + + .health { background-color: $bright-red; + &:before { background-color: $bright-red; opacity: 0.4; @@ -140,7 +152,7 @@ body { } } - div:first-child { + .health { position: relative; height: 5px; border-radius: 1000px; @@ -155,9 +167,33 @@ body { } } - div:not(:first-child) { - letter-spacing: 2px; + .charge { + height: 3px; + margin-top: 2px; + border-radius: 1000px; + background-color: rgba(255, 255, 255, 0.65); + } + + .stats { + display: flex; + align-items: center; + gap: 8px; font-size: 0.8em; + font-weight: 700; + text-shadow: 0 0 4px rgba(0, 0, 0, 0.9); + + .stat { + display: inline-flex; + align-items: center; + gap: 3px; + } + + .icon { + width: 1.1em; + height: 1.1em; + fill: currentColor; + filter: drop-shadow(0 0 2px rgba(0, 0, 0, 0.9)); + } } } @@ -172,9 +208,13 @@ body { .falling-point { font-size: 1.2em; + font-weight: 700; + animation: falling-point 2s ease-out forwards; + &.decla { color: $bright-decla; } + &.red { color: $bright-red; } @@ -184,6 +224,7 @@ body { transition: transform 150ms; @include square($large-icon); + @media (max-width: $breakpoint) { @include square($small-icon); } @@ -219,6 +260,56 @@ body { } } + .touch-button { + display: none; + pointer-events: auto; + touch-action: none; + cursor: pointer; + + $size: $large-icon * 1.6; + @include square($size); + top: auto; + left: auto; + bottom: $medium-padding; + border-radius: 1000px; + background-color: rgba(255, 255, 255, 0.12); + box-shadow: inset 0 0 8px 3px rgba(0, 0, 0, 0.33); + border: $border-width solid rgba(255, 255, 255, 0.4); + + font-size: 1.6rem; + line-height: $size - 2 * $border-width; + text-align: center; + text-shadow: 0 0 6px rgba(0, 0, 0, 0.8); + + @media (hover: none) and (pointer: coarse) { + display: inline-block; + } + + &.fire { + right: $medium-padding; + + &::after { + content: '\25C9'; + } + } + + .strength-ring { + position: absolute; + top: -3px; + left: -3px; + width: calc(100% + 6px); + height: calc(100% + 6px); + border-radius: 1000px; + pointer-events: none; + -webkit-mask: radial-gradient(farthest-side, + transparent calc(100% - 5px), + #000 calc(100% - 5px)); + mask: radial-gradient(farthest-side, + transparent calc(100% - 5px), + #000 calc(100% - 5px)); + } + } + .announcement { top: 25%; transform: translateX(calc(-50% + 50vw)) translateY(-50%); @@ -242,20 +333,65 @@ body { } } + .tutorial-hint { + top: auto; + bottom: calc(#{$medium-padding} + #{$large-icon} * 1.6 + #{$medium-padding}); + left: 50%; + transform: translateX(-50%); + white-space: nowrap; + + font-size: 1.6rem; + @include background; + z-index: 1000; + padding: $small-padding $medium-padding; + border-radius: 1000px; + opacity: 0.9; + + &:empty { + display: none; + } + } + .planet-progress { top: $small-padding; left: 50%; transform: translateX(-50%); width: 50%; - display: flex; - $height: 8px; + $height: 20px; height: $height; - justify-content: space-between; - box-shadow: inset 0 0 3px 0px rgba(0, 0, 0, 0.2); - - border-radius: 4px; z-index: 100; + pointer-events: none; + + background-color: rgba(0, 0, 0, 0.35); + box-shadow: inset 0 0 3px 0px rgba(0, 0, 0, 0.4); + border-radius: 1000px; + + .fill { + position: absolute; + top: 0; + height: $height; + transition: width $animation-time; + } + + .fill.decla { + right: 50%; + background: $bright-decla; + color: $bright-decla; + border-radius: 1000px 0 0 1000px; + } + + .fill.red { + left: 50%; + background: $bright-red; + color: $bright-red; + border-radius: 0 1000px 1000px 0; + } + + .fill.match-point { + z-index: 1; + animation: match-point-pulse 1.2s ease-in-out infinite; + } &::before { content: ''; @@ -263,38 +399,87 @@ body { left: 50%; top: 50%; transform: translateX(-50%) translateY(-50%); - background-color: #888; - height: 24px; - width: 4px; + background-color: #fff; + height: $height + 8px; + width: 3px; border-radius: 1000px; + z-index: 2; } - &::after { - content: ''; + .score { position: absolute; - left: 50%; top: 50%; - transform: translateX(-50%) translateY(50%); - - @include square(24px); - - background-image: url('../static/flag.svg'); - background-size: contain; + transform: translateY(-50%); + z-index: 3; + font-size: 0.95rem; + font-weight: 700; + line-height: 1; + color: #fff; + text-shadow: + 0 0 3px rgba(0, 0, 0, 0.95), + 0 0 6px rgba(0, 0, 0, 0.8); + opacity: 0.8; + transition: + opacity $animation-time, + text-shadow $animation-time, + font-size $animation-time; } - div { - height: $height; - box-shadow: inset 0 0 3px 0px rgba(0, 0, 0, 0.2); + .score.decla { + right: calc(50% + #{$small-padding}); } - div:nth-child(1) { - background: $bright-decla; - border-radius: 100px 0 0 100px; + .score.red { + left: calc(50% + #{$small-padding}); } - div:nth-child(2) { - background: $bright-red; - border-radius: 0 100px 100px 0; + .score.leading { + opacity: 1; + font-size: 1.2rem; + } + + .score.decla.leading { + text-shadow: + 0 0 3px rgba(0, 0, 0, 0.95), + 0 0 8px $bright-decla; + } + + .score.red.leading { + text-shadow: + 0 0 3px rgba(0, 0, 0, 0.95), + 0 0 8px $bright-red; + } + + .you-marker { + position: absolute; + top: 100%; + margin-top: 4px; + font-size: 0.7rem; + font-weight: 700; + letter-spacing: 0.08em; + white-space: nowrap; + text-shadow: 0 0 4px rgba(0, 0, 0, 0.9); + + &::after { + content: ''; + position: absolute; + left: 50%; + bottom: 100%; + transform: translateX(-50%); + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-bottom: 5px solid currentColor; + } + + &.decla { + right: calc(50% + #{$small-padding}); + color: $bright-decla; + } + + &.red { + left: calc(50% + #{$small-padding}); + color: $bright-red; + } } } } @@ -308,6 +493,7 @@ body { background-color: transparent; width: 3px; } + &::-webkit-scrollbar-thumb { background-color: $accent; border-radius: $border-radius; @@ -321,6 +507,10 @@ body { bottom: 0; left: 0; + @media (hover: none) and (pointer: coarse) { + display: none; + } + box-sizing: content-box; user-select: none; @@ -328,6 +518,7 @@ body { padding: $medium-padding; @include square($large-icon); + @media (max-width: $breakpoint) { @include square($small-icon); padding: $small-padding; @@ -338,3 +529,217 @@ body { } } } + +.feedback-hud { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + pointer-events: none; + user-select: none; + z-index: 2000; + overflow: hidden; + + .hitmarker { + position: absolute; + transform: translate(-50%, -50%); + @include square(26px); + opacity: 0.9; + + &::before, + &::after { + content: ''; + position: absolute; + top: 50%; + left: 50%; + width: 12px; + height: 2px; + background-color: white; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.8); + transform-origin: center; + } + + &::before { + transform: translate(-50%, -50%) rotate(45deg); + } + + &::after { + transform: translate(-50%, -50%) rotate(-45deg); + } + + animation: hitmarker-pop 250ms ease-out forwards; + } + + .kill-popup { + position: absolute; + transform: translate(-50%, -50%); + font-weight: 700; + font-size: 1.4rem; + white-space: nowrap; + color: $bright-neutral; + text-shadow: 0 0 6px rgba(0, 0, 0, 0.9); + animation: kill-popup-rise 1200ms ease-out forwards; + + .heal { + color: #6fcf6f; + } + } + + .streak-callout { + position: absolute; + top: 33%; + left: 50%; + transform: translateX(-50%); + font-weight: 700; + font-size: 2.6rem; + color: $accent; + text-shadow: 0 0 12px rgba(0, 0, 0, 0.9); + white-space: nowrap; + animation: streak-pop 1400ms ease-out forwards; + } + + .killfeed { + position: absolute; + top: calc(#{$small-padding} + 36px); + right: $medium-padding; + display: flex; + flex-direction: column; + align-items: flex-end; + gap: 6px; + + .kill-entry { + font-size: 1rem; + padding: 4px 10px; + border-radius: 1000px; + @include background; + text-shadow: 0 0 4px rgba(0, 0, 0, 0.9); + animation: kill-entry-fade 4500ms ease-out forwards; + + b { + color: $accent; + } + } + } +} + +.charge-ring { + position: fixed; + @include square(56px); + margin: -28px 0 0 -28px; + border-radius: 1000px; + pointer-events: none; + user-select: none; + z-index: 2000; + opacity: 0; + transition: opacity 100ms; + -webkit-mask: radial-gradient(farthest-side, + transparent calc(100% - 6px), + #000 calc(100% - 6px)); + mask: radial-gradient(farthest-side, + transparent calc(100% - 6px), + #000 calc(100% - 6px)); + + &.full { + filter: drop-shadow(0 0 6px rgba(255, 255, 255, 0.8)); + } +} + +@keyframes match-point-pulse { + 0%, + 100% { + box-shadow: 0 0 4px 0 currentColor; + } + + 50% { + box-shadow: 0 0 14px 3px currentColor; + } +} + +@keyframes falling-point { + 0% { + opacity: 1; + transform: translate(-50%, -50%); + } + + 100% { + opacity: 0; + transform: translate(-50%, calc(-50% - 90px)); + } +} + +@keyframes hitmarker-pop { + 0% { + opacity: 0; + transform: translate(-50%, -50%) scale(1.6); + } + + 25% { + opacity: 1; + transform: translate(-50%, -50%) scale(1); + } + + 100% { + opacity: 0; + transform: translate(-50%, -50%) scale(0.9); + } +} + +@keyframes kill-popup-rise { + 0% { + opacity: 0; + transform: translate(-50%, -30%) scale(0.8); + } + + 20% { + opacity: 1; + transform: translate(-50%, -60%) scale(1); + } + + 100% { + opacity: 0; + transform: translate(-50%, -160%) scale(1); + } +} + +@keyframes streak-pop { + 0% { + opacity: 0; + transform: translateX(-50%) scale(0.6); + } + + 20% { + opacity: 1; + transform: translateX(-50%) scale(1.1); + } + + 70% { + opacity: 1; + transform: translateX(-50%) scale(1); + } + + 100% { + opacity: 0; + transform: translateX(-50%) scale(1); + } +} + +@keyframes kill-entry-fade { + 0% { + opacity: 0; + transform: translateX(20px); + } + + 10% { + opacity: 1; + transform: translateX(0); + } + + 80% { + opacity: 1; + } + + 100% { + opacity: 0; + } +} \ No newline at end of file diff --git a/frontend/src/scripts/objects/types/character-view.ts b/frontend/src/scripts/objects/types/character-view.ts index d06d56e..034d97a 100644 --- a/frontend/src/scripts/objects/types/character-view.ts +++ b/frontend/src/scripts/objects/types/character-view.ts @@ -1,4 +1,5 @@ import { vec2 } from 'gl-matrix'; +import { CircleLight, Renderer } from 'sdf-2d'; import { Circle, @@ -6,6 +7,9 @@ import { CharacterBase, CharacterTeam, settings, + clamp, + clamp01, + mix, CommandExecutors, UpdatePropertyCommand, } from 'shared'; @@ -13,15 +17,36 @@ import { BeforeDestroyCommand } from '../../commands/types/before-destroy'; import { RenderCommand } from '../../commands/types/render'; import { StepCommand } from '../../commands/types/step'; import { CircleExtrapolator } from '../../helper/extrapolators/circle-extrapolator'; -import { BlobShape } from '../../shapes/blob-shape'; +import { LinearExtrapolator } from '../../helper/extrapolators/linear-extrapolator'; +import { Pointer } from '../../helper/pointer'; +import { CharacterShape } from '../../shapes/character-shape'; import { SoundHandler, Sounds } from '../../sound-handler'; import { VibrationHandler } from '../../vibration-handler'; +import { FeedbackHud } from '../../feedback-hud'; + +const muzzleFlashDecaySeconds = 0.12; +const hitFlashDecaySeconds = 0.15; + +const killIcon = + ''; +const deathIcon = + ''; export class CharacterView extends CharacterBase { - private shape: BlobShape; + private shape: CharacterShape; + private muzzleFlash: CircleLight; + private muzzleFlashIntensity = 0; + private hitFlashIntensity = 0; + private strength = settings.playerMaxStrength; + private strengthExtrapolator = new LinearExtrapolator(settings.playerMaxStrength); private nameElement: HTMLElement = document.createElement('div'); private statsElement: HTMLElement = document.createElement('div'); + private killCountElement: HTMLElement = document.createElement('span'); + private deathCountElement: HTMLElement = document.createElement('span'); private healthElement: HTMLElement = document.createElement('div'); + private chargeElement: HTMLElement = document.createElement('div'); public isMainCharacter = false; @@ -48,7 +73,12 @@ export class CharacterView extends CharacterBase { rightFoot?: Circle, ) { super(id, name, killCount, deathCount, team, health, head, leftFoot, rightFoot); - this.shape = new BlobShape(settings.colorIndices[team]); + this.shape = new CharacterShape(settings.colorIndices[team]); + this.muzzleFlash = new CircleLight( + vec2.clone(this.head!.center), + settings.paletteDim[settings.colorIndices[team]], + 0, + ); this.leftFootExtrapolator = new CircleExtrapolator(this.leftFoot!); this.rightFootExtrapolator = new CircleExtrapolator(this.rightFoot!); @@ -56,7 +86,24 @@ export class CharacterView extends CharacterBase { this.nameElement.className = 'player-tag ' + this.team; this.nameElement.innerText = this.name; + this.healthElement.className = 'health'; + this.chargeElement.className = 'charge'; + + this.statsElement.className = 'stats'; + this.killCountElement.className = 'value'; + this.deathCountElement.className = 'value'; + const killStat = document.createElement('span'); + killStat.className = 'stat kills'; + killStat.innerHTML = killIcon; + killStat.appendChild(this.killCountElement); + const deathStat = document.createElement('span'); + deathStat.className = 'stat deaths'; + deathStat.innerHTML = deathIcon; + deathStat.appendChild(this.deathCountElement); + this.statsElement.append(killStat, deathStat); + this.nameElement.appendChild(this.healthElement); + this.nameElement.appendChild(this.chargeElement); this.nameElement.appendChild(this.statsElement); } @@ -64,6 +111,29 @@ export class CharacterView extends CharacterBase { return this.head!.center; } + public get bodyCenter(): vec2 { + const center = vec2.add(vec2.create(), this.head!.center, this.leftFoot!.center); + vec2.add(center, center, this.rightFoot!.center); + return vec2.scale(center, center, 1 / 3); + } + + public get facingDirection(): vec2 { + const footAverage = vec2.add( + vec2.create(), + this.leftFoot!.center, + this.rightFoot!.center, + ); + vec2.scale(footAverage, footAverage, 0.5); + const forward = vec2.subtract(footAverage, this.head!.center, footAverage); + return vec2.length(forward) > 0 + ? vec2.normalize(forward, forward) + : vec2.fromValues(0, 1); + } + + public get strengthFraction(): number { + return clamp01(this.strength / settings.playerMaxStrength); + } + private updateProperty({ propertyKey, propertyValue, @@ -78,18 +148,25 @@ export class CharacterView extends CharacterBase { if (propertyKey === 'rightFoot') { this.rightFootExtrapolator.addFrame(propertyValue, rateOfChange); } + if (propertyKey === 'strength') { + this.strengthExtrapolator.addFrame(propertyValue, rateOfChange); + } } public setHealth(health: number) { - const previousHealth = this.health; + const damage = this.health - health; super.setHealth(health); - SoundHandler.play( - Sounds.hit, - (0.4 * 2 * (previousHealth - health)) / settings.playerMaxStrength, - ); - if (this.isMainCharacter) { - VibrationHandler.vibrate(Math.min(200, (previousHealth - this.health) * 4)); + if (damage > 0) { + SoundHandler.play( + Sounds.hit, + Math.min(1, (0.8 * damage) / settings.playerMaxStrength), + ); + this.hitFlashIntensity = Math.min(1, 0.4 + damage / settings.playerMaxStrength); + + if (this.isMainCharacter) { + VibrationHandler.vibrate(Math.min(200, damage * 4)); + } } } @@ -99,14 +176,58 @@ export class CharacterView extends CharacterBase { } } + public onHitConfirmed() { + if (!this.isMainCharacter) { + return; + } + SoundHandler.play(Sounds.click, 0.4, 1.7); + FeedbackHud.hitMarker(); + } + + public onKillConfirmed(victimName?: string, streak = 1) { + if (!this.isMainCharacter) { + return; + } + SoundHandler.play(Sounds.click, 1, 0.7); + VibrationHandler.vibrate(60); + FeedbackHud.killConfirmed(victimName, streak); + } + private step({ deltaTimeInSeconds }: StepCommand): void { this.head! = this.headExtrapolator.getValue(deltaTimeInSeconds); this.leftFoot! = this.leftFootExtrapolator.getValue(deltaTimeInSeconds); this.rightFoot! = this.rightFootExtrapolator.getValue(deltaTimeInSeconds); + + this.strength = clamp( + this.strengthExtrapolator.getValue(deltaTimeInSeconds), + 0, + settings.playerMaxStrength, + ); + + if (this.muzzleFlashIntensity > 0) { + this.muzzleFlashIntensity = Math.max( + 0, + this.muzzleFlashIntensity - deltaTimeInSeconds / muzzleFlashDecaySeconds, + ); + this.muzzleFlash.center = this.head!.center; + this.muzzleFlash.intensity = this.muzzleFlashIntensity; + } + + if (this.hitFlashIntensity > 0) { + this.hitFlashIntensity = Math.max( + 0, + this.hitFlashIntensity - deltaTimeInSeconds / hitFlashDecaySeconds, + ); + } } public onShoot(strength: number) { - SoundHandler.play(Sounds.shoot, (0.6 * strength) / settings.playerMaxStrength); + const q = clamp01( + (strength - settings.chargeShotStrengthMin) / + (settings.chargeShotStrengthMax - settings.chargeShotStrengthMin), + ); + SoundHandler.play(Sounds.shoot, mix(0.55, 1, q), mix(1.15, 0.8, q)); + this.muzzleFlashIntensity = mix(0.35, 1, q); } private beforeDestroy(): void { @@ -127,15 +248,34 @@ export class CharacterView extends CharacterBase { this.healthElement.style.width = (50 * this.health) / settings.playerMaxHealth + 'px'; - this.statsElement.innerText = this.getStatsText(); + this.chargeElement.style.width = + (50 * this.strength) / settings.playerMaxStrength + 'px'; + this.killCountElement.innerText = String(this.killCount); + this.deathCountElement.innerText = String(this.deathCount); } + this.shape.hitFlash = this.hitFlashIntensity; + this.shape.gazeTarget = this.calculateGazeTarget(renderer); this.shape.setCircles([this.head!, this.leftFoot!, this.rightFoot!]); renderer.addDrawable(this.shape); + + if (this.muzzleFlashIntensity > 0) { + renderer.addDrawable(this.muzzleFlash); + } } - private getStatsText(): string { - return `${this.killCount}⚔/${this.deathCount}☠`; + private calculateGazeTarget(renderer: Renderer): vec2 { + const cursor = Pointer.getDisplayPosition(); + if (this.isMainCharacter && cursor) { + return renderer.displayToWorldCoordinates(cursor); + } + + return vec2.scaleAndAdd( + vec2.create(), + this.head!.center, + this.facingDirection, + this.head!.radius * 8, + ); } private calculateTextPosition(): vec2 { diff --git a/frontend/src/scripts/objects/types/planet-view.ts b/frontend/src/scripts/objects/types/planet-view.ts index fbae00f..9c38963 100644 --- a/frontend/src/scripts/objects/types/planet-view.ts +++ b/frontend/src/scripts/objects/types/planet-view.ts @@ -1,21 +1,49 @@ -import { vec2 } from 'gl-matrix'; -import { Id, Random, PlanetBase, UpdatePropertyCommand, CommandExecutors } from 'shared'; +import { vec2, vec3 } from 'gl-matrix'; +import { CircleLight } from 'sdf-2d'; +import { + Id, + Random, + PlanetBase, + UpdatePropertyCommand, + CommandExecutors, + CharacterTeam, + settings, +} from 'shared'; import { BeforeDestroyCommand } from '../../commands/types/before-destroy'; import { RenderCommand } from '../../commands/types/render'; import { StepCommand } from '../../commands/types/step'; import { PlanetShape } from '../../shapes/planet-shape'; -type FallingPoint = { - velocity: vec2; - position: vec2; - element: HTMLElement; - addedToOverlay: boolean; - timeToLive: number; -}; +const fallingPointLifetimeMs = 2000; + +// Global budget for simultaneously-lit capture flares, so a clustered wave of +// captures can never white out the SDF exposure — excess flips still pulse the +// ring and toast, they just skip the extra light. The acquire/release pair keeps +// the count in one place instead of being hand-maintained at every call site. +abstract class FlareBudget { + private static active = 0; + + public static tryAcquire(): boolean { + if (FlareBudget.active >= settings.maxConcurrentFlipFlares) { + return false; + } + FlareBudget.active++; + return true; + } + + public static release(): void { + FlareBudget.active = Math.max(0, FlareBudget.active - 1); + } +} export class PlanetView extends PlanetBase { private shape: PlanetShape; private ownershipProgress: HTMLElement; + private readonly rotationSpeed: number; + + private flareLight?: CircleLight; + private flareIntensity = 0; + private holdsFlareSlot = false; protected commandExecutors: CommandExecutors = { [RenderCommand.type]: this.draw.bind(this), @@ -27,45 +55,69 @@ export class PlanetView extends PlanetBase { constructor(id: Id, vertices: Array, ownership: number) { super(id, vertices); this.shape = new PlanetShape(vertices, ownership); - (this.shape as any).randomOffset = Random.getRandom(); + this.shape.randomOffset = Random.getRandom(); + this.rotationSpeed = + (0.05 + Random.getRandom() * 0.07) * (Random.getRandom() < 0.5 ? -1 : 1); this.ownershipProgress = document.createElement('div'); this.ownershipProgress.className = 'ownership'; } private step({ deltaTimeInSeconds }: StepCommand): void { - this.shape.randomOffset += deltaTimeInSeconds / 4; + this.shape.rotation += deltaTimeInSeconds * this.rotationSpeed; this.shape.colorMixQ = this.ownership; - this.generatedPointElements.forEach((p) => { - vec2.add( - p.velocity, - p.velocity, - vec2.scale(vec2.create(), vec2.fromValues(0, 50), deltaTimeInSeconds), + if (this.flareIntensity > 0) { + this.flareIntensity = Math.max( + 0, + this.flareIntensity - deltaTimeInSeconds / settings.lampFlareDecaySeconds, ); - vec2.add( - p.position, - p.position, - vec2.scale(vec2.create(), p.velocity, deltaTimeInSeconds), - ); + if (this.flareLight) { + this.flareLight.intensity = + settings.lampFlareIntensity * this.flareIntensity * this.flareIntensity; + } - p.timeToLive -= deltaTimeInSeconds; - }); + if (this.flareIntensity === 0) { + this.releaseFlareSlot(); + } + } } - private generatedPointElements: Array = []; + private releaseFlareSlot(): void { + if (this.holdsFlareSlot) { + this.holdsFlareSlot = false; + FlareBudget.release(); + } + } private lastGeneratedPoint?: number; public generatedPoints(value: number) { this.lastGeneratedPoint = value; } + public onFlipped(team: CharacterTeam): void { + const color = settings.palette[settings.colorIndices[team]]; + + if (!this.flareLight) { + this.flareLight = new CircleLight(vec2.clone(this.center), vec3.clone(color), 0); + } else { + this.flareLight.color = vec3.clone(color); + } + + if (!this.holdsFlareSlot) { + if (!FlareBudget.tryAcquire()) { + return; + } + this.holdsFlareSlot = true; + } + + this.flareIntensity = 1; + } + private beforeDestroy(): void { this.ownershipProgress.parentElement?.removeChild(this.ownershipProgress); - this.generatedPointElements.forEach((p) => - p.element.parentElement?.removeChild(p.element), - ); + this.releaseFlareSlot(); } private updateProperty({ propertyValue }: UpdatePropertyCommand): void { @@ -80,26 +132,6 @@ export class PlanetView extends PlanetBase { const screenPosition = renderer.worldToDisplayCoordinates(this.center); - this.generatedPointElements.forEach((p) => { - if (!p.addedToOverlay) { - overlay.appendChild(p.element); - } - - p.element.style.transform = `translateX(${ - screenPosition.x + p.position.x - }px) translateY(${screenPosition.y + p.position.y}px)`; - - if (p.timeToLive <= 0) { - p.element.parentElement?.removeChild(p.element); - } else { - p.element.style.opacity = Math.min(1, p.timeToLive).toString(); - } - }); - - this.generatedPointElements = this.generatedPointElements.filter( - (p) => p.timeToLive > 0, - ); - this.ownershipProgress.style.transform = `translateX(${screenPosition.x}px) translateY(${screenPosition.y}px) translateX(-50%) translateY(-50%)`; this.ownershipProgress.style.background = this.getGradient(); @@ -107,19 +139,23 @@ export class PlanetView extends PlanetBase { const element = document.createElement('div'); element.className = 'falling-point ' + (this.ownership < 0.5 ? 'decla' : 'red'); element.innerText = '+' + this.lastGeneratedPoint; - this.generatedPointElements.push({ - element, - addedToOverlay: false, - timeToLive: Random.getRandomInRange(2, 3), - position: vec2.create(), - velocity: vec2.fromValues(Random.getRandomInRange(-30, 30), 0), - }); + element.style.left = `${screenPosition.x}px`; + element.style.top = `${screenPosition.y}px`; + overlay.appendChild(element); + setTimeout( + () => element.parentElement?.removeChild(element), + fallingPointLifetimeMs, + ); this.lastGeneratedPoint = undefined; } } renderer.addDrawable(this.shape); + + if (this.flareIntensity > 0 && this.flareLight) { + renderer.addDrawable(this.flareLight); + } } private getGradient(): string { diff --git a/shared/src/settings.ts b/shared/src/settings.ts index 96a6275..f38bd81 100644 --- a/shared/src/settings.ts +++ b/shared/src/settings.ts @@ -6,39 +6,62 @@ const neutralColor = rgb255(82, 165, 64); const redColor = rgb255(209, 86, 82); const q = 2.5; const declaColorDim = rgb255(64 * q, 105 * q, 165 * q); -const redColorDim = rgb255(209 * q, 8 * q, 82 * q); +const redColorDim = rgb255(209 * q, 86 * q, 82 * q); const declaPlanetColor = declaColorDim; const redPlanetColor = redColorDim; export const settings = { lightCutoffDistance: 600, + lightOverlapReduction: 0.85, radiusSteps: 500, spawnDespawnTime: 0.7, - worldRadius: 10000, + worldRadius: 4000, objectsOnCircleLength: 0.002, updateMessageInterval: 1 / 25, planetEdgeCount: 7, - playerKillPoint: 10, - takeControlTimeInSeconds: 4, - loseControlTimeInSeconds: 24, + playerKillPoint: 25, + takeControlTimeInSeconds: 2.5, + loseControlTimeInSeconds: 16, planetPointGenerationInterval: 1.5, planetPointGenerationValue: 1, + planetSizePointMultiplierMax: 4, + captureFlipPointReward: 12, maxGravityDistance: 800, + minGravityDistance: 1, maxGravityQ: 5000, planetControlThreshold: 0.2, playerMaxHealth: 100, maxGravityStrength: 50000, + planetMinReferenceRadius: 150, + planetMaxReferenceRadius: 1200, maxAcceleration: 120000, playerMaxStrength: 80, endGameDeltaScaling: 2, playerDiedTimeout: 5, playerStrengthRegenerationPerSeconds: 80, + playerOutOfCombatDelaySeconds: 5, + playerHealthRegenerationPerSeconds: 8, + playerKillHealthReward: 25, + spawnInvulnerabilityExtraSeconds: 0.4, + spawnSafetyDistance: 2000, + touchAimRange: 1000, + postureHeadStiffness: 12, + postureFeetStiffness: 10, + planetDetachmentSeconds: 0.5, + planetDetachmentForceThreshold: 100, + climbDotThreshold: 0.8, + climbGravityScale: 0.35, projectileMaxStrength: 40, - projectileSpeed: 2500, projectileMaxBounceCount: 2, - projectileTimeout: 3, projectileFadeSpeed: 20, projectileCreationInterval: 0.1, + chargeShotFullHoldSeconds: 0.7, + chargeShotStrengthMin: 40, + chargeShotStrengthMax: 100, + chargeShotRadiusMin: 20, + chargeShotRadiusMax: 32, + chargeShotSpeedMin: 2500, + chargeShotSpeedMax: 3400, playerColorIndexOffset: 3, backgroundGradient: [rgb255(90, 38, 43), rgb255(43, 39, 73)], declaColor, @@ -104,4 +127,14 @@ export const settings = { paletteDim: [declaColorDim, neutralColor, redColorDim], targetPhysicsDeltaTimeInSeconds: 1 / 200, inViewAreaSize: 1920 * 1080 * 4, + scoreboardHalfWidthPercent: 50, + scoreboardMinFillPercent: 1.5, + matchPointScoreRatio: 0.9, + lampLerpSeconds: 0.5, + lampMinLightness: 0.4, + lampMaxLightness: 1, + lampFlareIntensity: 1.2, + lampFlareDecaySeconds: 0.6, + maxConcurrentFlipFlares: 3, + announcementVisibleSeconds: 2, }; From 1f10b9c750955778e979eb315f84140fd49c392c Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Fri, 12 Jun 2026 21:46:47 +0100 Subject: [PATCH 093/101] Rebrand --- .vscode/settings.json | 2 +- Dockerfile | 2 +- README.md | 10 ++-- backend/deployment/README.md | 14 ----- backend/deployment/declared-servers.service | 11 ---- backend/deployment/declared-servers.sh | 5 -- backend/deployment/nginx.conf | 49 ---------------- backend/deployment/setup.sh | 28 --------- backend/package.json | 6 +- backend/src/commands/generate-points.ts | 2 +- backend/src/game-server.ts | 18 +++--- backend/src/objects/character-physical.ts | 40 ++++++++++++- backend/src/objects/circle-physical.ts | 3 + backend/src/players/player-container.ts | 6 +- frontend/.firebaserc | 5 -- frontend/firebase.json | 16 ------ frontend/package-lock.json | 4 +- frontend/package.json | 2 +- frontend/src/index.html | 10 ++-- frontend/src/main.scss | 57 ++++++++++--------- frontend/src/scripts/analytics.ts | 2 +- frontend/src/scripts/configuration.ts | 6 +- frontend/src/scripts/scoreboard.ts | 28 ++++----- frontend/src/scripts/tutorial.ts | 2 +- frontend/src/styles/_vars.scss | 4 +- .../src/commands/types/update-game-state.ts | 4 +- shared/src/objects/types/character-base.ts | 2 +- shared/src/settings.ts | 16 +++--- 28 files changed, 134 insertions(+), 220 deletions(-) delete mode 100644 backend/deployment/README.md delete mode 100644 backend/deployment/declared-servers.service delete mode 100644 backend/deployment/declared-servers.sh delete mode 100644 backend/deployment/nginx.conf delete mode 100644 backend/deployment/setup.sh delete mode 100644 frontend/.firebaserc delete mode 100644 frontend/firebase.json diff --git a/.vscode/settings.json b/.vscode/settings.json index 2561c01..57b1058 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -3,7 +3,7 @@ "Deserializable", "Deserialization", "Respawn", - "decla", + "doppler", "overridable", "serializable" ] diff --git a/Dockerfile b/Dockerfile index 83f7922..327d1f2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1 -# decla.red game server (the `declared-server` package). +# doppler game server (the `doppler-server` package). # The frontend is a static site and is NOT built here — see .forgejo/workflows. # ---- Stage 1: build the shared lib, then bundle the server ------------------- diff --git a/README.md b/README.md index c7f1f53..ce57285 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -# [decla.red](https://decla.red) +# doppler A 2-dimensional multiplayer game utilising ray tracing. -> **Available at [decla.red](https://decla.red).** +> **Available at [doppler.schmelczer.dev](https://doppler.schmelczer.dev).** ![screenshot of in-game fight](media/game-pc.png) ![three screenshots taken at iPhone SE screen size](media/collage-iphone.png) @@ -15,7 +15,7 @@ CI/CD runs on Forgejo Actions (`.forgejo/workflows/deploy.yml`). On a push to `main` it: - builds the static frontend and rsyncs `frontend/dist/` to the `/pages/declared` - mount on the runner host, and + mount on the runner host (the mount keeps its pre-rebrand name), and - builds the server image from the root `Dockerfile` and pushes it to the Forgejo container registry as `//-server`. @@ -30,6 +30,6 @@ edit it to add or remove game-server origins. Run the server image locally: ```sh -docker build -t declared-server . -docker run -p 3000:3000 declared-server --name "My server" --playerLimit 16 +docker build -t doppler-server . +docker run -p 3000:3000 doppler-server --name "My server" --playerLimit 16 ``` diff --git a/backend/deployment/README.md b/backend/deployment/README.md deleted file mode 100644 index 4e2c7d9..0000000 --- a/backend/deployment/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Setup a decla.red server on a fresh debian/ubuntu machine - -> The method was tested on Debian 10 DigitalOcean droplets. - -- Copy the files from this directory to the target machine. -- Execute the following commands. -- ```sh - chmod +x setup.sh - ./setup.sh serverX - ``` - - > Where `serverX` is the serverX.decla.red subdomain pointing to the server. - -- Optionally, change the arguments in [declared-servers.sh](declared-servers.sh). diff --git a/backend/deployment/declared-servers.service b/backend/deployment/declared-servers.service deleted file mode 100644 index 678942d..0000000 --- a/backend/deployment/declared-servers.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=declared-server - -Requires=basic.target network.target - -[Service] -Type=simple -ExecStart=/bin/sh /root/declared-servers.sh - -[Install] -WantedBy=multi-user.target diff --git a/backend/deployment/declared-servers.sh b/backend/deployment/declared-servers.sh deleted file mode 100644 index 166ef8b..0000000 --- a/backend/deployment/declared-servers.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -set -e - -NODE_ENV=production declared-server --port=3000 --name="Simonyi" --playerLimit=256 --npcCount=48 --scoreLimit=20000 diff --git a/backend/deployment/nginx.conf b/backend/deployment/nginx.conf deleted file mode 100644 index 1fbf3b5..0000000 --- a/backend/deployment/nginx.conf +++ /dev/null @@ -1,49 +0,0 @@ -user www-data; -worker_processes auto; -pid /run/nginx.pid; - -events { - worker_connections 768; -} - -http { - sendfile on; - tcp_nopush on; - tcp_nodelay on; - keepalive_timeout 65; - types_hash_max_size 2048; - server_tokens off; - - include /etc/nginx/mime.types; - default_type application/octet-stream; - - ssl_protocols TLSv1 TLSv1.1 TLSv1.2; - ssl_prefer_server_ciphers on; - - access_log /var/log/nginx/access.log; - error_log /var/log/nginx/error.log; - - map $http_upgrade $connection_upgrade { - default upgrade; - '' close; - } - - server { - listen 443 ssl; - - include /etc/letsencrypt/options-ssl-nginx.conf; - ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; - ssl_certificate /etc/letsencrypt/live/serverName.decla.red/fullchain.pem; - ssl_certificate_key /etc/letsencrypt/live/serverName.decla.red/privkey.pem; - - server_name serverName.decla.red; - - location / { - proxy_pass http://127.0.0.1:3000/; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection $connection_upgrade; - proxy_set_header Host $host; - } - } -} \ No newline at end of file diff --git a/backend/deployment/setup.sh b/backend/deployment/setup.sh deleted file mode 100644 index 017e599..0000000 --- a/backend/deployment/setup.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh - -set -e - -if [ -z "$1" ]; then - echo "Please specify a domain" 1>&2 - exit 1 -fi - -domain="$1" - -apt install -y curl -curl -sL https://deb.nodesource.com/setup_15.x | bash - -apt update -apt install -y nodejs nginx certbot python3-certbot-nginx -npm i -g declared-server - -certbot certonly --nginx -m schmelczerandras@gmail.com -d "$domain".decla.red --agree-tos --non-interactive - -mv nginx.conf /etc/nginx/nginx.conf -sed -i "s/serverName/$domain/g" /etc/nginx/nginx.conf -nginx -s reload - -chmod +x /root/declared-servers.sh -chown root:root /root/declared-servers.sh -cp declared-servers.service /etc/systemd/system/declared-servers.service -systemctl enable declared-servers.service -systemctl start declared-servers diff --git a/backend/package.json b/backend/package.json index 9ccaec3..50cd443 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,12 +1,12 @@ { - "name": "declared-server", + "name": "doppler-server", "version": "0.1.0", - "description": "Game server for decla.red", + "description": "Game server for doppler", "keywords": [], "author": "András Schmelczer (https://schmelczer.dev/)", "main": "dist/main.js", "bin": { - "declared-server": "dist/main.js" + "doppler-server": "dist/main.js" }, "scripts": { "build": "npx webpack --mode production", diff --git a/backend/src/commands/generate-points.ts b/backend/src/commands/generate-points.ts index b639d4c..3f1ac98 100644 --- a/backend/src/commands/generate-points.ts +++ b/backend/src/commands/generate-points.ts @@ -2,7 +2,7 @@ import { Command } from 'shared'; export class GeneratePointsCommand extends Command { public constructor( - public readonly decla: number, + public readonly blue: number, public readonly red: number, ) { super(); diff --git a/backend/src/game-server.ts b/backend/src/game-server.ts index 1b51a35..dd8f0d1 100644 --- a/backend/src/game-server.ts +++ b/backend/src/game-server.ts @@ -30,7 +30,7 @@ export class GameServer extends CommandReceiver { private deltaTimes!: Array; private deltaTimeCalculator!: DeltaTimeCalculator; - private declaPoints = 0; + private bluePoints = 0; private redPoints = 0; private matchPointAnnounced: Partial> = {}; @@ -52,7 +52,7 @@ export class GameServer extends CommandReceiver { ); this.deltaTimeCalculator = new DeltaTimeCalculator(); this.deltaTimes = []; - this.declaPoints = 0; + this.bluePoints = 0; this.redPoints = 0; this.matchPointAnnounced = {}; this.isInEndGame = false; @@ -118,19 +118,19 @@ export class GameServer extends CommandReceiver { this.handlePhysics(); } - private addPoints({ decla, red }: GeneratePointsCommand) { + private addPoints({ blue, red }: GeneratePointsCommand) { if (this.isInEndGame) { return; } - this.declaPoints += decla; + this.bluePoints += blue; this.redPoints += red; - if (this.declaPoints >= this.options.scoreLimit) { - this.endGame(CharacterTeam.decla); + if (this.bluePoints >= this.options.scoreLimit) { + this.endGame(CharacterTeam.blue); } else if (this.redPoints >= this.options.scoreLimit) { this.endGame(CharacterTeam.red); } else { - this.announceMatchPointOnce(CharacterTeam.decla, this.declaPoints); + this.announceMatchPointOnce(CharacterTeam.blue, this.bluePoints); this.announceMatchPointOnce(CharacterTeam.red, this.redPoints); } } @@ -179,7 +179,7 @@ export class GameServer extends CommandReceiver { if ((this.timeSinceLastPointUpdate += delta) > 0.5) { this.timeSinceLastPointUpdate = 0; this.players.queueCommandForEachClient( - new UpdateGameState(this.declaPoints, this.redPoints, this.options.scoreLimit), + new UpdateGameState(this.bluePoints, this.redPoints, this.options.scoreLimit), ); } @@ -224,7 +224,7 @@ export class GameServer extends CommandReceiver { } private get gameProgress(): number { - return (Math.max(this.declaPoints, this.redPoints) / this.options.scoreLimit) * 100; + return (Math.max(this.bluePoints, this.redPoints) / this.options.scoreLimit) * 100; } public get serverInfo(): ServerInformation { diff --git a/backend/src/objects/character-physical.ts b/backend/src/objects/character-physical.ts index bd46282..8425f93 100644 --- a/backend/src/objects/character-physical.ts +++ b/backend/src/objects/character-physical.ts @@ -151,10 +151,10 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical private getPoints(game: CommandReceiver) { if (!this.isAlive && !this.hasGeneratedPoints) { this.hasGeneratedPoints = true; - const decla = this.team === CharacterTeam.decla ? 0 : settings.playerKillPoint; + const blue = this.team === CharacterTeam.blue ? 0 : settings.playerKillPoint; const red = this.team === CharacterTeam.red ? 0 : settings.playerKillPoint; - game.handleCommand(new GeneratePointsCommand(decla, red)); + game.handleCommand(new GeneratePointsCommand(blue, red)); } } @@ -405,7 +405,7 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical this.projectileStrength = Math.min( settings.playerMaxStrength, this.projectileStrength + - settings.playerStrengthRegenerationPerSeconds * deltaTimeInSeconds, + settings.playerStrengthRegenerationPerSeconds * deltaTimeInSeconds, ); this.regenerateHealth(deltaTimeInSeconds); @@ -443,6 +443,8 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical this.setDirection(vec2.length(sumForce) === 0 ? vec2.fromValues(0, -1) : sumForce); } else { + this.carryWithRotatingPlanet(deltaTimeInSeconds); + const leftFootGravity = this.currentPlanet!.getForce(this.leftFoot.center); const rightFootGravity = this.currentPlanet!.getForce(this.rightFoot.center); @@ -493,6 +495,38 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical ); } + // While standing on a planet, ride its spin: rigidly rotate the whole body + // around the planet centre by the same per-tick angle the renderer and the + // collision SDF use, so the player is carried around and turned with the + // surface instead of it sliding frictionlessly underneath. The positional + // change becomes velocity in setPropertyUpdates, so the motion syncs and the + // client extrapolates it smoothly. + private carryWithRotatingPlanet(deltaTimeInSeconds: number) { + const planet = this.currentPlanet; + if (!planet) { + return; + } + + // Negative: the rendered/collidable surface turns by R(-rotation) — see + // PlanetPhysical.distance (toLocalFrame) and planet-shape.ts. + const angle = -planet.angularVelocity * deltaTimeInSeconds; + const center = planet.center; + + this.head.center = vec2.rotate(vec2.create(), this.head.center, center, angle); + this.leftFoot.center = vec2.rotate( + vec2.create(), + this.leftFoot.center, + center, + angle, + ); + this.rightFoot.center = vec2.rotate( + vec2.create(), + this.rightFoot.center, + center, + angle, + ); + } + private keepPosture() { const center = this.center; this.springMove( diff --git a/backend/src/objects/circle-physical.ts b/backend/src/objects/circle-physical.ts index 2a36215..fcc912f 100644 --- a/backend/src/objects/circle-physical.ts +++ b/backend/src/objects/circle-physical.ts @@ -8,6 +8,7 @@ import { } from 'shared'; import { BoundingBox } from '../physics/bounding-boxes/bounding-box'; import { BoundingBoxBase } from '../physics/bounding-boxes/bounding-box-base'; +import { depenetrateCircle } from '../physics/functions/depenetrate-circle'; import { moveCircle } from '../physics/functions/move-circle'; import { PhysicalContainer } from '../physics/containers/physical-container'; import { DynamicPhysical } from '../physics/physicals/dynamic-physical'; @@ -100,6 +101,8 @@ export class CirclePhysical extends CommandReceiver implements Circle, DynamicPh .filter((b) => b.gameObject !== this.gameObject && b.canCollide); this.radius -= vec2.length(delta); + depenetrateCircle(this, intersecting); + const { normal, hitSurface, hitObject } = moveCircle(this, delta, intersecting); if (hitSurface) { diff --git a/backend/src/players/player-container.ts b/backend/src/players/player-container.ts index 5faea71..afc67bb 100644 --- a/backend/src/players/player-container.ts +++ b/backend/src/players/player-container.ts @@ -79,11 +79,11 @@ export class PlayerContainer { private getTeamOfNextPlayer(isNpc = false): CharacterTeam { const players = isNpc ? this.players : this._players; - const declaCount = players.filter((p) => p.team === CharacterTeam.decla).length; + const blueCount = players.filter((p) => p.team === CharacterTeam.blue).length; const redCount = players.filter((p) => p.team === CharacterTeam.red).length; - if ((declaCount === redCount && Random.getRandom() >= 0.5) || declaCount < redCount) { - return CharacterTeam.decla; + if ((blueCount === redCount && Random.getRandom() >= 0.5) || blueCount < redCount) { + return CharacterTeam.blue; } else { return CharacterTeam.red; } diff --git a/frontend/.firebaserc b/frontend/.firebaserc deleted file mode 100644 index 2f95982..0000000 --- a/frontend/.firebaserc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "projects": { - "default": "decla-red - } -} \ No newline at end of file diff --git a/frontend/firebase.json b/frontend/firebase.json deleted file mode 100644 index 2c33c29..0000000 --- a/frontend/firebase.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "hosting": { - "public": "dist", - "ignore": [ - "firebase.json", - "**/.*", - "**/node_modules/**" - ], - "rewrites": [ - { - "source": "**", - "destination": "/index.html" - } - ] - } -} diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 9652017..bfa9f49 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,11 +1,11 @@ { - "name": "decla.red-frontend", + "name": "doppler-frontend", "version": "0.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "decla.red-frontend", + "name": "doppler-frontend", "version": "0.0.0", "devDependencies": { "@plausible-analytics/tracker": "^0.4.5", diff --git a/frontend/package.json b/frontend/package.json index 6dc2f68..fbf1d72 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,5 +1,5 @@ { - "name": "decla.red-frontend", + "name": "doppler-frontend", "version": "0.0.0", "description": "", "keywords": [], diff --git a/frontend/src/index.html b/frontend/src/index.html index e04a9bc..0d4d201 100644 --- a/frontend/src/index.html +++ b/frontend/src/index.html @@ -9,13 +9,13 @@ /> - - + + - decla.red + doppler @@ -37,7 +37,7 @@
    -

    decla.red

    +

    doppler

    Join a game diff --git a/frontend/src/main.scss b/frontend/src/main.scss index 08e6889..2e2e60e 100644 --- a/frontend/src/main.scss +++ b/frontend/src/main.scss @@ -41,6 +41,18 @@ h1 { font-size: 6rem; text-align: center; padding-bottom: $medium-padding; + width: fit-content; + margin-inline: auto; + background: linear-gradient(90deg, $bright-blue, $bright-red); + background-clip: text; + -webkit-background-clip: text; + color: transparent; + + &::selection { + color: white; + -webkit-text-fill-color: white; + background-color: $accent; + } @media (max-width: $height-breakpoint) { font-size: 4.5rem; @@ -51,15 +63,6 @@ h1 { } } -.red { - color: $accent; - - &::selection { - color: $accent; - background-color: white; - } -} - html, body, canvas { @@ -126,14 +129,14 @@ body { border-radius: 1000px; transition: transform 200ms; - &.decla { - color: $bright-decla; + &.blue { + color: $bright-blue; .health { - background-color: $bright-decla; + background-color: $bright-blue; &:before { - background-color: $bright-decla; + background-color: $bright-blue; opacity: 0.3; } } @@ -211,8 +214,8 @@ body { font-weight: 700; animation: falling-point 2s ease-out forwards; - &.decla { - color: $bright-decla; + &.blue { + color: $bright-blue; } &.red { @@ -232,8 +235,8 @@ body { mask-image: url('../static/chevron.svg'); mask-size: contain; - &.decla { - background-color: $bright-decla; + &.blue { + background-color: $bright-blue; } &.red { @@ -324,8 +327,8 @@ body { display: none; } - .decla { - color: $bright-decla; + .blue { + color: $bright-blue; } .red { @@ -374,10 +377,10 @@ body { transition: width $animation-time; } - .fill.decla { + .fill.blue { right: 50%; - background: $bright-decla; - color: $bright-decla; + background: $bright-blue; + color: $bright-blue; border-radius: 1000px 0 0 1000px; } @@ -425,7 +428,7 @@ body { font-size $animation-time; } - .score.decla { + .score.blue { right: calc(50% + #{$small-padding}); } @@ -438,10 +441,10 @@ body { font-size: 1.2rem; } - .score.decla.leading { + .score.blue.leading { text-shadow: 0 0 3px rgba(0, 0, 0, 0.95), - 0 0 8px $bright-decla; + 0 0 8px $bright-blue; } .score.red.leading { @@ -471,9 +474,9 @@ body { border-bottom: 5px solid currentColor; } - &.decla { + &.blue { right: calc(50% + #{$small-padding}); - color: $bright-decla; + color: $bright-blue; } &.red { diff --git a/frontend/src/scripts/analytics.ts b/frontend/src/scripts/analytics.ts index 474cb7a..e732cc4 100644 --- a/frontend/src/scripts/analytics.ts +++ b/frontend/src/scripts/analytics.ts @@ -1,7 +1,7 @@ import { init as plausibleInit } from '@plausible-analytics/tracker'; const ANALYTICS_AUTO_CAPTURE_PAGEVIEWS = true; -const ANALYTICS_DOMAIN = 'decla.red'; +const ANALYTICS_DOMAIN = 'doppler.schmelczer.dev'; const ANALYTICS_ENDPOINT = 'https://stats.schmelczer.dev/status'; const ANALYTICS_LOGGING = process.env.NODE_ENV !== 'production'; diff --git a/frontend/src/scripts/configuration.ts b/frontend/src/scripts/configuration.ts index d3b16fe..9ab3fb6 100644 --- a/frontend/src/scripts/configuration.ts +++ b/frontend/src/scripts/configuration.ts @@ -1,18 +1,20 @@ /** * Hardcoded list of game servers the landing page offers to players. * - * Each entry is the public origin of a dockerized `declared-server` instance. + * Each entry is the public origin of a dockerized `doppler-server` instance. * The join screen polls `/state` (see `serverInformationEndpoint`) and * only shows a server once it responds, so listing an offline origin here is * harmless. Add or remove origins as you deploy more server containers. */ +// This origin predates the rebrand; update it once the game server is +// redeployed under a doppler subdomain. const productionServers: Array = ['https://declared.schmelczer.dev']; /** * When the page is served from localhost (i.e. the webpack-dev-server), also * offer the local backend so a `npm start` server can be joined during * development. The backend's default port is 3000 (see backend/src/options.ts). - * In production the hostname is `declared.schmelczer.dev`, so this never leaks. + * In production the page is served from its own hostname, so this never leaks. */ const isDevelopment = typeof location !== 'undefined' && diff --git a/frontend/src/scripts/scoreboard.ts b/frontend/src/scripts/scoreboard.ts index 38dff4e..41b02ba 100644 --- a/frontend/src/scripts/scoreboard.ts +++ b/frontend/src/scripts/scoreboard.ts @@ -8,35 +8,35 @@ import { CharacterTeam, UpdateGameState, clamp, settings } from 'shared'; export class Scoreboard { public readonly element = document.createElement('div'); - private readonly declaFill = document.createElement('div'); + private readonly blueFill = document.createElement('div'); private readonly redFill = document.createElement('div'); - private readonly declaScore = document.createElement('span'); + private readonly blueScore = document.createElement('span'); private readonly redScore = document.createElement('span'); private readonly youMarker = document.createElement('div'); constructor() { this.element.className = 'planet-progress'; - this.declaFill.className = 'fill decla'; + this.blueFill.className = 'fill blue'; this.redFill.className = 'fill red'; - this.declaScore.className = 'score decla'; + this.blueScore.className = 'score blue'; this.redScore.className = 'score red'; this.youMarker.className = 'you-marker'; this.youMarker.innerText = 'YOU'; this.element.append( - this.declaFill, + this.blueFill, this.redFill, - this.declaScore, + this.blueScore, this.redScore, this.youMarker, ); } public update( - { declaCount, redCount, limit }: UpdateGameState, + { blueCount, redCount, limit }: UpdateGameState, localTeam: CharacterTeam | undefined, ) { const { scoreboardHalfWidthPercent, scoreboardMinFillPercent } = settings; @@ -46,23 +46,23 @@ export class Scoreboard { clamp(count / limit, 0, 1) * scoreboardHalfWidthPercent, ); - this.declaFill.style.width = fraction(declaCount) + '%'; + this.blueFill.style.width = fraction(blueCount) + '%'; this.redFill.style.width = fraction(redCount) + '%'; const isMatchPoint = (count: number) => count / limit >= settings.matchPointScoreRatio; - this.declaFill.classList.toggle('match-point', isMatchPoint(declaCount)); + this.blueFill.classList.toggle('match-point', isMatchPoint(blueCount)); this.redFill.classList.toggle('match-point', isMatchPoint(redCount)); - this.declaScore.innerText = String(Math.round(declaCount)); + this.blueScore.innerText = String(Math.round(blueCount)); this.redScore.innerText = String(Math.round(redCount)); - this.declaScore.classList.toggle('leading', declaCount > redCount); - this.redScore.classList.toggle('leading', redCount > declaCount); + this.blueScore.classList.toggle('leading', blueCount > redCount); + this.redScore.classList.toggle('leading', redCount > blueCount); - if (localTeam === CharacterTeam.decla || localTeam === CharacterTeam.red) { + if (localTeam === CharacterTeam.blue || localTeam === CharacterTeam.red) { this.youMarker.style.display = ''; - this.youMarker.classList.toggle('decla', localTeam === CharacterTeam.decla); + this.youMarker.classList.toggle('blue', localTeam === CharacterTeam.blue); this.youMarker.classList.toggle('red', localTeam === CharacterTeam.red); } else { this.youMarker.style.display = 'none'; diff --git a/frontend/src/scripts/tutorial.ts b/frontend/src/scripts/tutorial.ts index 823ef40..64befb5 100644 --- a/frontend/src/scripts/tutorial.ts +++ b/frontend/src/scripts/tutorial.ts @@ -86,7 +86,7 @@ export class Tutorial extends CommandReceiver { } if (standing) { const drift = standing.ownership - this.standingBaseline; - const progress = player.team === CharacterTeam.decla ? -drift : drift; + const progress = player.team === CharacterTeam.blue ? -drift : drift; if (progress > captureProgressThreshold) { this.finish(); } diff --git a/frontend/src/styles/_vars.scss b/frontend/src/styles/_vars.scss index 377d9db..f19825b 100644 --- a/frontend/src/styles/_vars.scss +++ b/frontend/src/styles/_vars.scss @@ -11,12 +11,12 @@ $breakpoint: 700px; $height-breakpoint: 500px; $large-icon: 48px; $small-icon: 32px; -$bright-decla: #4069a5; +$bright-blue: #4069a5; $bright-red: #d15652; $bright-neutral: #ccc; :root { - --bright-decla: #{$bright-decla}; + --bright-blue: #{$bright-blue}; --bright-red: #{$bright-red}; --bright-neutral: #{$bright-neutral}; } diff --git a/shared/src/commands/types/update-game-state.ts b/shared/src/commands/types/update-game-state.ts index 40ce4e1..7e66c19 100644 --- a/shared/src/commands/types/update-game-state.ts +++ b/shared/src/commands/types/update-game-state.ts @@ -4,7 +4,7 @@ import { Command } from '../command'; @serializable export class UpdateGameState extends Command { public constructor( - public readonly declaCount: number, + public readonly blueCount: number, public readonly redCount: number, public readonly limit: number, ) { @@ -12,6 +12,6 @@ export class UpdateGameState extends Command { } public toArray(): Array { - return [this.declaCount, this.redCount, this.limit]; + return [this.blueCount, this.redCount, this.limit]; } } diff --git a/shared/src/objects/types/character-base.ts b/shared/src/objects/types/character-base.ts index 69cc670..e6414b8 100644 --- a/shared/src/objects/types/character-base.ts +++ b/shared/src/objects/types/character-base.ts @@ -4,7 +4,7 @@ import { serializable } from '../../serialization/serializable'; import { GameObject } from '../game-object'; export enum CharacterTeam { - decla = 'decla', + blue = 'blue', neutral = 'neutral', red = 'red', } diff --git a/shared/src/settings.ts b/shared/src/settings.ts index f38bd81..3a1a157 100644 --- a/shared/src/settings.ts +++ b/shared/src/settings.ts @@ -1,13 +1,13 @@ import { rgb255 } from './helper/rgb255'; import { CharacterTeam } from './objects/types/character-base'; -const declaColor = rgb255(64, 105, 165); +const blueColor = rgb255(64, 105, 165); const neutralColor = rgb255(82, 165, 64); const redColor = rgb255(209, 86, 82); const q = 2.5; -const declaColorDim = rgb255(64 * q, 105 * q, 165 * q); +const blueColorDim = rgb255(64 * q, 105 * q, 165 * q); const redColorDim = rgb255(209 * q, 86 * q, 82 * q); -const declaPlanetColor = declaColorDim; +const bluePlanetColor = blueColorDim; const redPlanetColor = redColorDim; export const settings = { @@ -64,8 +64,8 @@ export const settings = { chargeShotSpeedMax: 3400, playerColorIndexOffset: 3, backgroundGradient: [rgb255(90, 38, 43), rgb255(43, 39, 73)], - declaColor, - declaPlanetColor, + blueColor, + bluePlanetColor, npcNames: [ 'Adam', 'Andrew', @@ -119,12 +119,12 @@ export const settings = { redColor, redPlanetColor, colorIndices: { - [CharacterTeam.decla]: 0, + [CharacterTeam.blue]: 0, [CharacterTeam.neutral]: 1, [CharacterTeam.red]: 2, }, - palette: [declaColor, neutralColor, redColor], - paletteDim: [declaColorDim, neutralColor, redColorDim], + palette: [blueColor, neutralColor, redColor], + paletteDim: [blueColorDim, neutralColor, redColorDim], targetPhysicsDeltaTimeInSeconds: 1 / 200, inViewAreaSize: 1920 * 1080 * 4, scoreboardHalfWidthPercent: 50, From a1fb6755c70d7fe4aad970abe5629a6f03cba68d Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Sun, 14 Jun 2026 15:01:36 +0100 Subject: [PATCH 094/101] Fix net code --- backend/src/commands/announce.ts | 9 ++ backend/src/create-world.ts | 8 +- backend/src/game-server.ts | 32 ++++-- backend/src/helper/interpolate-angles.ts | 6 -- backend/src/objects/character-physical.ts | 4 +- backend/src/objects/planet-physical.ts | 90 ++++++++++++----- backend/src/physics/functions/evaluate-sdf.ts | 7 -- backend/src/physics/functions/move-circle.ts | 89 ----------------- backend/src/players/player.ts | 2 + frontend/src/scripts/game.ts | 7 ++ .../extrapolators/linear-extrapolator.ts | 36 ------- .../circle-interpolator.ts} | 14 +-- .../interpolators/linear-interpolator.ts | 99 +++++++++++++++++++ .../vec2-interpolator.ts} | 12 +-- .../src/scripts/helper/server-timeline.ts | 84 ++++++++++++++++ .../scripts/objects/game-object-container.ts | 9 +- frontend/src/scripts/objects/types/camera.ts | 18 ++++ .../scripts/objects/types/character-view.ts | 36 +++---- .../src/scripts/objects/types/planet-view.ts | 32 +++--- .../scripts/objects/types/projectile-view.ts | 10 +- frontend/src/scripts/shapes/planet-shape.ts | 27 ++--- .../types/property-updates-for-objects.ts | 9 +- shared/src/settings.ts | 4 + 23 files changed, 408 insertions(+), 236 deletions(-) create mode 100644 backend/src/commands/announce.ts delete mode 100644 backend/src/helper/interpolate-angles.ts delete mode 100644 backend/src/physics/functions/evaluate-sdf.ts delete mode 100644 backend/src/physics/functions/move-circle.ts delete mode 100644 frontend/src/scripts/helper/extrapolators/linear-extrapolator.ts rename frontend/src/scripts/helper/{extrapolators/circle-extrapolator.ts => interpolators/circle-interpolator.ts} (53%) create mode 100644 frontend/src/scripts/helper/interpolators/linear-interpolator.ts rename frontend/src/scripts/helper/{extrapolators/vec2-extrapolator.ts => interpolators/vec2-interpolator.ts} (57%) create mode 100644 frontend/src/scripts/helper/server-timeline.ts diff --git a/backend/src/commands/announce.ts b/backend/src/commands/announce.ts new file mode 100644 index 0000000..2e8aadf --- /dev/null +++ b/backend/src/commands/announce.ts @@ -0,0 +1,9 @@ +import { Command } from 'shared'; + +// Internal request from a game object (e.g. a keystone planet flipping) asking +// the GameServer to broadcast a one-off announcement to every connected client. +export class AnnounceCommand extends Command { + public constructor(public readonly text: string) { + super(); + } +} diff --git a/backend/src/create-world.ts b/backend/src/create-world.ts index b3941a0..a1039fc 100644 --- a/backend/src/create-world.ts +++ b/backend/src/create-world.ts @@ -1,9 +1,8 @@ import { vec2 } from 'gl-matrix'; -import { Random, PlanetBase, hsl, settings } from 'shared'; +import { Random, PlanetBase, hsl, settings, evaluateSdf } from 'shared'; import { LampPhysical } from './objects/lamp-physical'; import { PlanetPhysical } from './objects/planet-physical'; import { PhysicalContainer } from './physics/containers/physical-container'; -import { evaluateSdf } from './physics/functions/evaluate-sdf'; import { Physical } from './physics/physicals/physical'; export const createWorld = (objectContainer: PhysicalContainer) => { @@ -45,13 +44,16 @@ export const createWorld = (objectContainer: PhysicalContainer) => { ) { const planet = objects.length === 0 - ? new PlanetPhysical( + ? // The first, central giant is the keystone "Heart": a named, + // always-contested focal objective the whole match orbits. + new PlanetPhysical( PlanetBase.createPlanetVertices( position, Random.getRandomInRange(1600, 2400), Random.getRandomInRange(1600, 2400), Random.getRandomInRange(80, 300), ), + true, ) : new PlanetPhysical( PlanetBase.createPlanetVertices( diff --git a/backend/src/game-server.ts b/backend/src/game-server.ts index dd8f0d1..e321737 100644 --- a/backend/src/game-server.ts +++ b/backend/src/game-server.ts @@ -21,6 +21,7 @@ import { Options } from './options'; import { PlayerContainer } from './players/player-container'; import { StepCommand } from './commands/step'; import { GeneratePointsCommand } from './commands/generate-points'; +import { AnnounceCommand } from './commands/announce'; const gameStateSubscribedRoom = 'gameStateSubscribedRoom'; @@ -63,6 +64,8 @@ export class GameServer extends CommandReceiver { protected commandExecutors: CommandExecutors = { [GeneratePointsCommand.type]: this.addPoints.bind(this), + [AnnounceCommand.type]: ({ text }: AnnounceCommand) => + this.players.queueCommandForEachClient(new ServerAnnouncement(text)), }; constructor( @@ -164,6 +167,7 @@ export class GameServer extends CommandReceiver { } private timeSinceLastPointUpdate = 0; + private physicsAccumulator = 0; private handlePhysics() { const delta = this.deltaTimeCalculator.getNextDeltaTimeInSeconds({ setAsBase: true }); @@ -183,14 +187,28 @@ export class GameServer extends CommandReceiver { ); } - let scaledDelta = delta; - if (this.isInEndGame) { - this.timeScaling *= Math.pow(settings.endGameDeltaScaling, delta); - scaledDelta /= this.timeScaling; + const fixedDelta = settings.targetPhysicsDeltaTimeInSeconds; + const maxSubstepsPerFrame = 5; + + this.physicsAccumulator += delta; + let substeps = Math.floor(this.physicsAccumulator / fixedDelta); + if (substeps > maxSubstepsPerFrame) { + substeps = maxSubstepsPerFrame; + this.physicsAccumulator = 0; + } else { + this.physicsAccumulator -= substeps * fixedDelta; + } + + for (let i = 0; i < substeps; i++) { + let scaledDelta = fixedDelta; + if (this.isInEndGame) { + this.timeScaling *= Math.pow(settings.endGameDeltaScaling, fixedDelta); + scaledDelta /= this.timeScaling; + } + this.objects.handleCommand(new StepCommand(scaledDelta, this)); + this.players.step(scaledDelta); } - this.objects.handleCommand(new StepCommand(scaledDelta, this)); - this.players.step(scaledDelta); this.players.stepCommunication(delta); this.objects.resetRemoteCalls(); @@ -198,7 +216,7 @@ export class GameServer extends CommandReceiver { setTimeout( this.handlePhysics.bind(this), - Math.max(0, settings.targetPhysicsDeltaTimeInSeconds - physicsDelta) * 1000, + Math.max(0, fixedDelta - physicsDelta) * 1000, ); } diff --git a/backend/src/helper/interpolate-angles.ts b/backend/src/helper/interpolate-angles.ts deleted file mode 100644 index 1fb46d6..0000000 --- a/backend/src/helper/interpolate-angles.ts +++ /dev/null @@ -1,6 +0,0 @@ -export const interpolateAngles = (from: number, to: number, q: number) => { - const max = Math.PI * 2; - const possibleDistance = (to - from) % max; - const shorterDistance = ((2 * possibleDistance) % max) - possibleDistance; - return from + shorterDistance * q; -}; diff --git a/backend/src/objects/character-physical.ts b/backend/src/objects/character-physical.ts index 8425f93..63e0022 100644 --- a/backend/src/objects/character-physical.ts +++ b/backend/src/objects/character-physical.ts @@ -499,8 +499,8 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical // around the planet centre by the same per-tick angle the renderer and the // collision SDF use, so the player is carried around and turned with the // surface instead of it sliding frictionlessly underneath. The positional - // change becomes velocity in setPropertyUpdates, so the motion syncs and the - // client extrapolates it smoothly. + // change becomes velocity in setPropertyUpdates, keeping the streamed + // rate-of-change consistent with the streamed positions. private carryWithRotatingPlanet(deltaTimeInSeconds: number) { const planet = this.currentPlanet; if (!planet) { diff --git a/backend/src/objects/planet-physical.ts b/backend/src/objects/planet-physical.ts index 9e7b094..95a5e1b 100644 --- a/backend/src/objects/planet-physical.ts +++ b/backend/src/objects/planet-physical.ts @@ -5,6 +5,7 @@ import { clamp01, id, mix, + Random, serializesTo, settings, PlanetBase, @@ -28,6 +29,16 @@ export class PlanetPhysical extends PlanetBase implements StaticPhysical { public readonly sizePointMultiplier: number; + // Planets slowly spin. The angle is authoritative here and streamed to the + // client (see getPropertyUpdates), so the rendered outline and this collision + // polygon turn as one rigid body. cos/sin are memoised per angle because + // distance() is called many times per tick by the raymarcher and SDF sampling. + private rotation = 0; + private readonly rotationSpeed: number; + private cachedRotation = Number.NaN; + private cosRotation = 1; + private sinRotation = 0; + private _boundingBox?: ImmutableBoundingBox; private readonly lamps: Array = []; @@ -47,23 +58,30 @@ export class PlanetPhysical extends PlanetBase implements StaticPhysical { const sizeClass = clamp01( (this.radius - settings.planetMinReferenceRadius) / - (settings.planetMaxReferenceRadius - settings.planetMinReferenceRadius), + (settings.planetMaxReferenceRadius - settings.planetMinReferenceRadius), ); this.sizePointMultiplier = mix(1, settings.planetSizePointMultiplierMax, sizeClass); + + this.rotationSpeed = + (0.05 + Random.getRandom() * 0.07) * (Random.getRandom() < 0.5 ? -1 : 1); } public distance(target: vec2): number { + // Evaluate the SDF in the planet's own rotating frame so this collision + // outline turns in lockstep with the rendered planet (see planet-shape.ts). + const local = this.toLocalFrame(target); + const startEnd = this.vertices[0]; let vb = startEnd; - let d = vec2.squaredDistance(target, vb); + let d = vec2.dist(local, vb); let sign = 1; for (let i = 1; i <= this.vertices.length; i++) { const va = vb; vb = i === this.vertices.length ? startEnd : this.vertices[i]; - const targetFromDelta = vec2.subtract(vec2.create(), target, va); + const targetFromDelta = vec2.subtract(vec2.create(), local, va); const toFromDelta = vec2.subtract(vec2.create(), vb, va); const h = clamp01( vec2.dot(targetFromDelta, toFromDelta) / vec2.squaredLength(toFromDelta), @@ -75,8 +93,8 @@ export class PlanetPhysical extends PlanetBase implements StaticPhysical { ); if ( - (target.y >= va.y && target.y < vb.y && ds.y > 0) || - (target.y < va.y && target.y >= vb.y && ds.y <= 0) + (local.y >= va.y && local.y < vb.y && ds.y > 0) || + (local.y < va.y && local.y >= vb.y && ds.y <= 0) ) { sign *= -1; } @@ -87,11 +105,35 @@ export class PlanetPhysical extends PlanetBase implements StaticPhysical { return sign * d; } + // Rotate a world point by -rotation about the centre, matching the shader's + // `localTarget = center + R(rotation) * (target - center)` transform exactly. + private toLocalFrame(target: vec2): vec2 { + if (this.rotation !== this.cachedRotation) { + this.cachedRotation = this.rotation; + this.cosRotation = Math.cos(this.rotation); + this.sinRotation = Math.sin(this.rotation); + } + + const dx = target.x - this.center.x; + const dy = target.y - this.center.y; + + return vec2.fromValues( + this.center.x + this.cosRotation * dx - this.sinRotation * dy, + this.center.y + this.sinRotation * dx + this.cosRotation * dy, + ); + } + + // Signed angular velocity in rad/s, exposed so a character standing on the + // planet can ride its spin (see CharacterPhysical.carryWithRotatingPlanet). + public get angularVelocity(): number { + return this.rotationSpeed; + } + public get team(): CharacterTeam { return Math.abs(this.ownership - 0.5) < 0.1 ? CharacterTeam.neutral : this.ownership < 0.5 - ? CharacterTeam.decla + ? CharacterTeam.blue : CharacterTeam.red; } @@ -105,7 +147,7 @@ export class PlanetPhysical extends PlanetBase implements StaticPhysical { ); game.handleCommand( new GeneratePointsCommand( - this.team === CharacterTeam.decla ? value : 0, + this.team === CharacterTeam.blue ? value : 0, this.team === CharacterTeam.red ? value : 0, ), ); @@ -113,6 +155,7 @@ export class PlanetPhysical extends PlanetBase implements StaticPhysical { } private step({ deltaTimeInSeconds, game }: StepCommand) { + this.rotation += deltaTimeInSeconds * this.rotationSpeed; this.timeSinceLastPointGeneration += deltaTimeInSeconds; // In reverse order, so that teams can achieve a 100% control. @@ -135,7 +178,7 @@ export class PlanetPhysical extends PlanetBase implements StaticPhysical { this.remoteCall('generatedPoints', reward); game.handleCommand( new GeneratePointsCommand( - currentTeam === CharacterTeam.decla ? reward : 0, + currentTeam === CharacterTeam.blue ? reward : 0, currentTeam === CharacterTeam.red ? reward : 0, ), ); @@ -153,11 +196,14 @@ export class PlanetPhysical extends PlanetBase implements StaticPhysical { public getPropertyUpdates(): PropertyUpdatesForObject { return new PropertyUpdatesForObject(this.id, [ new UpdatePropertyCommand('ownership', this.ownership, 0), + // Stream rotation with rotationSpeed as the rate-of-change so the client + // can keep the angle moving when snapshots run late (see planet-view.ts). + new UpdatePropertyCommand('rotation', this.rotation, this.rotationSpeed), ]); } public takeControl(team: CharacterTeam, deltaTime: number) { - if (team === CharacterTeam.decla) { + if (team === CharacterTeam.blue) { this.ownership -= (0.5 / settings.takeControlTimeInSeconds) * deltaTime; } else if (team === CharacterTeam.red) { this.ownership += (0.5 / settings.takeControlTimeInSeconds) * deltaTime; @@ -180,22 +226,20 @@ export class PlanetPhysical extends PlanetBase implements StaticPhysical { public get boundingBox(): ImmutableBoundingBox { if (!this._boundingBox) { - const { xMin, xMax, yMin, yMax } = this.vertices.reduce( - (extremities, vertex) => ({ - xMin: Math.min(extremities.xMin, vertex.x), - xMax: Math.max(extremities.xMax, vertex.x), - yMin: Math.min(extremities.yMin, vertex.y), - yMax: Math.max(extremities.yMax, vertex.y), - }), - { - xMin: Infinity, - xMax: -Infinity, - yMin: Infinity, - yMax: -Infinity, - }, + // The polygon spins about its centre (see distance), so this static box + // has to cover every orientation, not just the spawn-time one: take the + // circumscribed circle around the rotation centre. + const maxVertexDistance = this.vertices.reduce( + (max, vertex) => Math.max(max, vec2.distance(this.center, vertex)), + 0, ); - this._boundingBox = new ImmutableBoundingBox(xMin, xMax, yMin, yMax); + this._boundingBox = new ImmutableBoundingBox( + this.center.x - maxVertexDistance, + this.center.x + maxVertexDistance, + this.center.y - maxVertexDistance, + this.center.y + maxVertexDistance, + ); } return this._boundingBox; diff --git a/backend/src/physics/functions/evaluate-sdf.ts b/backend/src/physics/functions/evaluate-sdf.ts deleted file mode 100644 index 16bc96c..0000000 --- a/backend/src/physics/functions/evaluate-sdf.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { vec2 } from 'gl-matrix'; -import { PhysicalBase } from '../physicals/physical-base'; - -export const evaluateSdf = (target: vec2, objects: Array) => - objects - .filter((i) => i.canCollide) - .reduce((min, i) => (min = Math.min(min, i.distance(target))), 1000000); diff --git a/backend/src/physics/functions/move-circle.ts b/backend/src/physics/functions/move-circle.ts deleted file mode 100644 index 7c82fdc..0000000 --- a/backend/src/physics/functions/move-circle.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { vec2 } from 'gl-matrix'; -import { GameObject } from 'shared'; -import { CirclePhysical } from '../../objects/circle-physical'; -import { evaluateSdf } from './evaluate-sdf'; -import { Physical } from '../physicals/physical'; -import { ReactToCollisionCommand } from '../../commands/react-to-collision'; - -export const moveCircle = ( - circle: CirclePhysical, - delta: vec2, - possibleIntersectors: Array, - ignoreCollision = false, -): { - hitSurface: boolean; - normal?: vec2; - hitObject?: GameObject; -} => { - const direction = vec2.clone(delta); - - if (vec2.length(delta) > 0) { - vec2.normalize(direction, direction); - } - - const deltaLength = vec2.length(delta); - let travelled = 0; - const rayEnd = vec2.create(); - let prevMinDistance = 0; - while (travelled < deltaLength) { - travelled += prevMinDistance; - vec2.add( - rayEnd, - circle.center, - vec2.scale(vec2.create(), direction, Math.min(travelled, deltaLength)), - ); - - const minDistance = evaluateSdf(rayEnd, possibleIntersectors); - - if (minDistance < circle.radius) { - const intersecting = possibleIntersectors.find( - (i) => i.distance(rayEnd) <= circle.radius, - )!; - - if (ignoreCollision) { - circle.center = vec2.add(circle.center, circle.center, delta); - } else { - intersecting.handleCommand(new ReactToCollisionCommand(circle.gameObject)); - circle.handleCommand(new ReactToCollisionCommand(intersecting.gameObject)); - } - - vec2.add( - rayEnd, - circle.center, - vec2.scale(vec2.create(), direction, travelled - prevMinDistance), - ); - - vec2.copy(circle.center, rayEnd); - - const dx = - evaluateSdf(vec2.add(vec2.create(), rayEnd, vec2.fromValues(0.01, 0)), [ - intersecting, - ]) - - evaluateSdf(vec2.add(vec2.create(), rayEnd, vec2.fromValues(-0.01, 0)), [ - intersecting, - ]); - const dy = - evaluateSdf(vec2.add(vec2.create(), rayEnd, vec2.fromValues(0, 0.01)), [ - intersecting, - ]) - - evaluateSdf(vec2.add(vec2.create(), rayEnd, vec2.fromValues(0, -0.01)), [ - intersecting, - ]); - const normal = vec2.fromValues(dx, dy); - vec2.normalize(normal, normal); - return { - hitSurface: true, - normal, - hitObject: intersecting?.gameObject, - }; - } - - prevMinDistance = minDistance; - } - - vec2.add(circle.center, circle.center, delta); - - return { - hitSurface: false, - }; -}; diff --git a/backend/src/players/player.ts b/backend/src/players/player.ts index 1478029..f5709bb 100644 --- a/backend/src/players/player.ts +++ b/backend/src/players/player.ts @@ -1,3 +1,4 @@ +import { performance } from 'perf_hooks'; import { vec2 } from 'gl-matrix'; import { CommandExecutors, @@ -126,6 +127,7 @@ export class Player extends PlayerBase { this.objectsPreviouslyInViewArea .map((o) => o.getPropertyUpdates()) .filter((u) => u) as Array, + performance.now() / 1000, ), ); } diff --git a/frontend/src/scripts/game.ts b/frontend/src/scripts/game.ts index bce7784..5afb42b 100644 --- a/frontend/src/scripts/game.ts +++ b/frontend/src/scripts/game.ts @@ -34,6 +34,7 @@ import { CharacterShape } from './shapes/character-shape'; import { PlanetShape } from './shapes/planet-shape'; import { RenderCommand } from './commands/types/render'; import { StepCommand } from './commands/types/step'; +import { serverTimeline } from './helper/server-timeline'; import { Tutorial } from './tutorial'; import { Scoreboard } from './scoreboard'; @@ -74,6 +75,7 @@ export class Game extends CommandReceiver { this.isBetweenGames = true; this.socket?.close(); + serverTimeline.reset(); this.gameObjects = new GameObjectContainer(this); this.overlay.innerHTML = ''; this.arrows = {}; @@ -274,6 +276,11 @@ export class Game extends CommandReceiver { this.resolveStarted(); deltaTime /= 1000; + // Stepped before the end-game time scaling on purpose: the slow motion is + // already baked into the snapshots the server sends, so the playback + // cursor itself must keep running on wall-clock time. + serverTimeline.step(deltaTime); + let shouldChangeLayout = false; if (++this.framesSinceLastLayoutUpdate > 1) { shouldChangeLayout = true; diff --git a/frontend/src/scripts/helper/extrapolators/linear-extrapolator.ts b/frontend/src/scripts/helper/extrapolators/linear-extrapolator.ts deleted file mode 100644 index 9154fc1..0000000 --- a/frontend/src/scripts/helper/extrapolators/linear-extrapolator.ts +++ /dev/null @@ -1,36 +0,0 @@ -export class LinearExtrapolator { - private velocity = 0; - private compensationVelocity = 0; - private timeSinceSet = 0; - - constructor(private currentValue: number) {} - - public addFrame(value: number, rateOfChange: number) { - this.timeSinceSet = 0; - const differenceFromCurrent = value - this.currentValue; - - if (Math.abs(differenceFromCurrent) > 200) { - this.currentValue = value; - this.compensationVelocity = 0; - } else { - this.compensationVelocity = differenceFromCurrent / (1 / 30); - } - - this.velocity = rateOfChange; - } - - public getValue(deltaTime: number): number { - this.currentValue += deltaTime * this.velocity; - - const compensationTimeLeft = 1 / 30 - this.timeSinceSet; - - if (compensationTimeLeft > 0) { - this.currentValue += - Math.min(compensationTimeLeft, deltaTime) * this.compensationVelocity; - } - - this.timeSinceSet += deltaTime; - - return this.currentValue; - } -} diff --git a/frontend/src/scripts/helper/extrapolators/circle-extrapolator.ts b/frontend/src/scripts/helper/interpolators/circle-interpolator.ts similarity index 53% rename from frontend/src/scripts/helper/extrapolators/circle-extrapolator.ts rename to frontend/src/scripts/helper/interpolators/circle-interpolator.ts index e5b4d45..62816e5 100644 --- a/frontend/src/scripts/helper/extrapolators/circle-extrapolator.ts +++ b/frontend/src/scripts/helper/interpolators/circle-interpolator.ts @@ -1,14 +1,14 @@ import { Circle } from 'shared'; -import { LinearExtrapolator } from './linear-extrapolator'; -import { Vec2Extrapolator } from './vec2-extrapolator'; +import { LinearInterpolator } from './linear-interpolator'; +import { Vec2Interpolator } from './vec2-interpolator'; -export class CircleExtrapolator { - private center: Vec2Extrapolator; - private radius: LinearExtrapolator; +export class CircleInterpolator { + private center: Vec2Interpolator; + private radius: LinearInterpolator; constructor(currentValue: Circle) { - this.center = new Vec2Extrapolator(currentValue.center); - this.radius = new LinearExtrapolator(currentValue.radius); + this.center = new Vec2Interpolator(currentValue.center); + this.radius = new LinearInterpolator(currentValue.radius); } public addFrame(value: Circle, rateOfChange: Circle) { diff --git a/frontend/src/scripts/helper/interpolators/linear-interpolator.ts b/frontend/src/scripts/helper/interpolators/linear-interpolator.ts new file mode 100644 index 0000000..bcc23b5 --- /dev/null +++ b/frontend/src/scripts/helper/interpolators/linear-interpolator.ts @@ -0,0 +1,99 @@ +import { last, mix } from 'shared'; +import { serverTimeline } from '../server-timeline'; + +interface Frame { + time: number; + value: number; + velocity: number; +} + +// How far past the newest snapshot the value may coast on its last known +// velocity (network hiccup) before freezing in place. +const maxCoastSeconds = 0.06; + +// When fresh snapshots arrive after a coast, they usually disagree with where +// the coast ended up; the difference decays away with this time constant +// instead of being shown as a jump. +const blendSeconds = 0.12; + +// At 25 snapshots per second this spans over a second of state, far more than +// rendering ever needs; it only bounds memory while the tab is hidden and +// snapshots keep arriving without being consumed. +const maxFrames = 32; + +/** + * Replays a server-streamed scalar by interpolating between timestamped + * snapshots at the shared timeline's render time, which trails the newest + * snapshot. The streamed rate of change is only used to coast briefly when + * the buffer runs dry. + */ +export class LinearInterpolator { + private frames: Array = []; + private blendOffset = 0; + private lastValue: number; + private isCoasting = false; + + constructor(private readonly initialValue: number) { + this.lastValue = initialValue; + } + + public addFrame(value: number, rateOfChange: number) { + const time = serverTimeline.snapshotTime; + const newest = last(this.frames); + const wasCoasting = this.isCoasting; + + if (newest && time <= newest.time) { + this.frames[this.frames.length - 1] = { + time: newest.time, + value, + velocity: rateOfChange, + }; + } else { + this.frames.push({ time, value, velocity: rateOfChange }); + if (this.frames.length > maxFrames) { + this.frames.shift(); + } + } + + if (wasCoasting) { + // Continue from where the coast left off and let the offset decay, + // instead of jumping onto the freshly revealed trajectory. + this.blendOffset = this.lastValue - this.sample(serverTimeline.renderTime); + } + } + + public getValue(deltaTimeInSeconds: number): number { + this.blendOffset *= Math.exp(-deltaTimeInSeconds / blendSeconds); + return (this.lastValue = this.sample(serverTimeline.renderTime) + this.blendOffset); + } + + private sample(time: number): number { + if (this.frames.length === 0) { + return this.initialValue; + } + + while (this.frames.length >= 2 && this.frames[1].time <= time) { + this.frames.shift(); + } + + const [current, next] = this.frames; + this.isCoasting = false; + + if (time <= current.time) { + return current.value; + } + + if (next) { + return mix( + current.value, + next.value, + (time - current.time) / (next.time - current.time), + ); + } + + this.isCoasting = true; + return ( + current.value + current.velocity * Math.min(time - current.time, maxCoastSeconds) + ); + } +} diff --git a/frontend/src/scripts/helper/extrapolators/vec2-extrapolator.ts b/frontend/src/scripts/helper/interpolators/vec2-interpolator.ts similarity index 57% rename from frontend/src/scripts/helper/extrapolators/vec2-extrapolator.ts rename to frontend/src/scripts/helper/interpolators/vec2-interpolator.ts index 72ae904..ae6fb52 100644 --- a/frontend/src/scripts/helper/extrapolators/vec2-extrapolator.ts +++ b/frontend/src/scripts/helper/interpolators/vec2-interpolator.ts @@ -1,13 +1,13 @@ import { vec2 } from 'gl-matrix'; -import { LinearExtrapolator } from './linear-extrapolator'; +import { LinearInterpolator } from './linear-interpolator'; -export class Vec2Extrapolator { - private x: LinearExtrapolator; - private y: LinearExtrapolator; +export class Vec2Interpolator { + private x: LinearInterpolator; + private y: LinearInterpolator; constructor(currentValue: vec2) { - this.x = new LinearExtrapolator(currentValue.x); - this.y = new LinearExtrapolator(currentValue.y); + this.x = new LinearInterpolator(currentValue.x); + this.y = new LinearInterpolator(currentValue.y); } public addFrame(value: vec2, rateOfChange: vec2) { diff --git a/frontend/src/scripts/helper/server-timeline.ts b/frontend/src/scripts/helper/server-timeline.ts new file mode 100644 index 0000000..28aab75 --- /dev/null +++ b/frontend/src/scripts/helper/server-timeline.ts @@ -0,0 +1,84 @@ +import { clamp, settings } from 'shared'; + +// Convergence rate of the playback cursor towards its target; a deviation +// decays with a time constant of 1 / rateGain seconds. +const rateGain = 2; + +// Playback speed stays within [0.75, 1.25]× so corrections are invisible. +const maxRateAdjustment = 0.25; + +// Beyond this divergence (tab was in the background, server changed) chasing +// the target is pointless: jump straight to it. +const resyncSeconds = 0.3; + +/** + * The playback clock for state streamed from the server. + * + * Snapshot timestamps estimate the server's clock: the newest received + * timestamp plus the time elapsed since it arrived. Rendering happens + * settings.interpolationDelaySeconds behind that estimate, so there is + * normally a newer snapshot to interpolate towards and network jitter is + * absorbed by the buffer instead of being shown. + * + * The cursor never jumps under normal operation: it runs at a gently adjusted + * rate to stay on target and only snaps after a long divergence. + */ +class ServerTimeline { + private cursor?: number; + private newestSnapshotTime?: number; + private sinceNewestSnapshot = 0; + private _snapshotTime = 0; + + /** Timestamp of the update batch currently being applied. */ + public get snapshotTime(): number { + return this._snapshotTime; + } + + /** The point on the server's clock that should be rendered this frame. */ + public get renderTime(): number { + return this.cursor ?? 0; + } + + public onSnapshot(timestamp: number) { + this._snapshotTime = timestamp; + if (this.newestSnapshotTime === undefined || timestamp > this.newestSnapshotTime) { + this.newestSnapshotTime = timestamp; + this.sinceNewestSnapshot = 0; + } + } + + // Must be called with unscaled wall-clock time, even during the end-game + // slow motion: the slowdown is already baked into the snapshots. + public step(deltaTimeInSeconds: number) { + if (this.newestSnapshotTime === undefined) { + return; + } + + this.sinceNewestSnapshot += deltaTimeInSeconds; + const target = + this.newestSnapshotTime + + this.sinceNewestSnapshot - + settings.interpolationDelaySeconds; + + if (this.cursor === undefined || Math.abs(target - this.cursor) > resyncSeconds) { + this.cursor = target; + return; + } + + const rate = clamp( + 1 + (target - this.cursor) * rateGain, + 1 - maxRateAdjustment, + 1 + maxRateAdjustment, + ); + this.cursor += deltaTimeInSeconds * rate; + } + + public reset() { + this.cursor = undefined; + this.newestSnapshotTime = undefined; + this.sinceNewestSnapshot = 0; + this._snapshotTime = 0; + } +} + +export const serverTimeline = new ServerTimeline(); diff --git a/frontend/src/scripts/objects/game-object-container.ts b/frontend/src/scripts/objects/game-object-container.ts index eb6b3dc..5abd5ef 100644 --- a/frontend/src/scripts/objects/game-object-container.ts +++ b/frontend/src/scripts/objects/game-object-container.ts @@ -13,6 +13,7 @@ import { import { BeforeDestroyCommand } from '../commands/types/before-destroy'; import { StepCommand } from '../commands/types/step'; import { Game } from '../game'; +import { serverTimeline } from '../helper/server-timeline'; import { Camera } from './types/camera'; import { CharacterView } from './types/character-view'; import { PlanetView } from './types/planet-view'; @@ -36,7 +37,7 @@ export class GameObjectContainer extends CommandReceiver { this.defaultCommandExecutor(c); if (this.player) { - this.camera.center = this.player.position; + this.camera.follow(this.player.position, c.deltaTimeInSeconds); } }, @@ -45,10 +46,12 @@ export class GameObjectContainer extends CommandReceiver { this.objects.get(c.id)?.processRemoteCalls(c.calls), ), - [PropertyUpdatesForObjects.type]: (c: PropertyUpdatesForObjects) => + [PropertyUpdatesForObjects.type]: (c: PropertyUpdatesForObjects) => { + serverTimeline.onSnapshot(c.timestamp); c.updates.forEach((u) => u.updates.forEach((au) => this.objects.get(u.id)?.handleCommand(au)), - ), + ); + }, [DeleteObjectsCommand.type]: (c: DeleteObjectsCommand) => c.ids.forEach((id: Id) => this.deleteObject(id)), diff --git a/frontend/src/scripts/objects/types/camera.ts b/frontend/src/scripts/objects/types/camera.ts index 2d07048..f1cf670 100644 --- a/frontend/src/scripts/objects/types/camera.ts +++ b/frontend/src/scripts/objects/types/camera.ts @@ -13,10 +13,28 @@ export class Camera extends CommandReceiver { public center: vec2 = vec2.create(); private aspectRatio?: number; + // A short exponential lag masks any residual stepping in the followed + // position without the camera noticeably trailing during normal movement. + private static readonly followSeconds = 0.08; + + // Swooshing across half the map after a respawn would be disorienting; + // beyond this distance the camera cuts instead. + private static readonly snapDistance = 1500; + constructor(private game: Game) { super(); } + public follow(target: vec2, deltaTimeInSeconds: number) { + if (vec2.distance(target, this.center) > Camera.snapDistance) { + vec2.copy(this.center, target); + return; + } + + const q = 1 - Math.exp(-deltaTimeInSeconds / Camera.followSeconds); + vec2.lerp(this.center, this.center, target, q); + } + protected commandExecutors: CommandExecutors = { [RenderCommand.type]: this.draw.bind(this), }; diff --git a/frontend/src/scripts/objects/types/character-view.ts b/frontend/src/scripts/objects/types/character-view.ts index 034d97a..65424d9 100644 --- a/frontend/src/scripts/objects/types/character-view.ts +++ b/frontend/src/scripts/objects/types/character-view.ts @@ -16,8 +16,8 @@ import { import { BeforeDestroyCommand } from '../../commands/types/before-destroy'; import { RenderCommand } from '../../commands/types/render'; import { StepCommand } from '../../commands/types/step'; -import { CircleExtrapolator } from '../../helper/extrapolators/circle-extrapolator'; -import { LinearExtrapolator } from '../../helper/extrapolators/linear-extrapolator'; +import { CircleInterpolator } from '../../helper/interpolators/circle-interpolator'; +import { LinearInterpolator } from '../../helper/interpolators/linear-interpolator'; import { Pointer } from '../../helper/pointer'; import { CharacterShape } from '../../shapes/character-shape'; import { SoundHandler, Sounds } from '../../sound-handler'; @@ -40,7 +40,7 @@ export class CharacterView extends CharacterBase { private muzzleFlashIntensity = 0; private hitFlashIntensity = 0; private strength = settings.playerMaxStrength; - private strengthExtrapolator = new LinearExtrapolator(settings.playerMaxStrength); + private strengthInterpolator = new LinearInterpolator(settings.playerMaxStrength); private nameElement: HTMLElement = document.createElement('div'); private statsElement: HTMLElement = document.createElement('div'); private killCountElement: HTMLElement = document.createElement('span'); @@ -50,9 +50,9 @@ export class CharacterView extends CharacterBase { public isMainCharacter = false; - private leftFootExtrapolator: CircleExtrapolator; - private rightFootExtrapolator: CircleExtrapolator; - private headExtrapolator: CircleExtrapolator; + private leftFootInterpolator: CircleInterpolator; + private rightFootInterpolator: CircleInterpolator; + private headInterpolator: CircleInterpolator; protected commandExecutors: CommandExecutors = { [RenderCommand.type]: this.draw.bind(this), @@ -80,9 +80,9 @@ export class CharacterView extends CharacterBase { 0, ); - this.leftFootExtrapolator = new CircleExtrapolator(this.leftFoot!); - this.rightFootExtrapolator = new CircleExtrapolator(this.rightFoot!); - this.headExtrapolator = new CircleExtrapolator(this.head!); + this.leftFootInterpolator = new CircleInterpolator(this.leftFoot!); + this.rightFootInterpolator = new CircleInterpolator(this.rightFoot!); + this.headInterpolator = new CircleInterpolator(this.head!); this.nameElement.className = 'player-tag ' + this.team; this.nameElement.innerText = this.name; @@ -140,16 +140,16 @@ export class CharacterView extends CharacterBase { rateOfChange, }: UpdatePropertyCommand) { if (propertyKey === 'head') { - this.headExtrapolator.addFrame(propertyValue, rateOfChange); + this.headInterpolator.addFrame(propertyValue, rateOfChange); } if (propertyKey === 'leftFoot') { - this.leftFootExtrapolator.addFrame(propertyValue, rateOfChange); + this.leftFootInterpolator.addFrame(propertyValue, rateOfChange); } if (propertyKey === 'rightFoot') { - this.rightFootExtrapolator.addFrame(propertyValue, rateOfChange); + this.rightFootInterpolator.addFrame(propertyValue, rateOfChange); } if (propertyKey === 'strength') { - this.strengthExtrapolator.addFrame(propertyValue, rateOfChange); + this.strengthInterpolator.addFrame(propertyValue, rateOfChange); } } @@ -194,12 +194,12 @@ export class CharacterView extends CharacterBase { } private step({ deltaTimeInSeconds }: StepCommand): void { - this.head! = this.headExtrapolator.getValue(deltaTimeInSeconds); - this.leftFoot! = this.leftFootExtrapolator.getValue(deltaTimeInSeconds); - this.rightFoot! = this.rightFootExtrapolator.getValue(deltaTimeInSeconds); + this.head! = this.headInterpolator.getValue(deltaTimeInSeconds); + this.leftFoot! = this.leftFootInterpolator.getValue(deltaTimeInSeconds); + this.rightFoot! = this.rightFootInterpolator.getValue(deltaTimeInSeconds); this.strength = clamp( - this.strengthExtrapolator.getValue(deltaTimeInSeconds), + this.strengthInterpolator.getValue(deltaTimeInSeconds), 0, settings.playerMaxStrength, ); @@ -224,7 +224,7 @@ export class CharacterView extends CharacterBase { public onShoot(strength: number) { const q = clamp01( (strength - settings.chargeShotStrengthMin) / - (settings.chargeShotStrengthMax - settings.chargeShotStrengthMin), + (settings.chargeShotStrengthMax - settings.chargeShotStrengthMin), ); SoundHandler.play(Sounds.shoot, mix(0.55, 1, q), mix(1.15, 0.8, q)); this.muzzleFlashIntensity = mix(0.35, 1, q); diff --git a/frontend/src/scripts/objects/types/planet-view.ts b/frontend/src/scripts/objects/types/planet-view.ts index 9c38963..a926237 100644 --- a/frontend/src/scripts/objects/types/planet-view.ts +++ b/frontend/src/scripts/objects/types/planet-view.ts @@ -12,6 +12,7 @@ import { import { BeforeDestroyCommand } from '../../commands/types/before-destroy'; import { RenderCommand } from '../../commands/types/render'; import { StepCommand } from '../../commands/types/step'; +import { LinearInterpolator } from '../../helper/interpolators/linear-interpolator'; import { PlanetShape } from '../../shapes/planet-shape'; const fallingPointLifetimeMs = 2000; @@ -39,7 +40,10 @@ abstract class FlareBudget { export class PlanetView extends PlanetBase { private shape: PlanetShape; private ownershipProgress: HTMLElement; - private readonly rotationSpeed: number; + // Rotation is owned by the backend (it drives the collision polygon too) and + // streamed in; the interpolator replays the angle on the shared snapshot + // timeline, in sync with the characters standing on the surface. + private readonly rotationInterpolator = new LinearInterpolator(0); private flareLight?: CircleLight; private flareIntensity = 0; @@ -56,15 +60,13 @@ export class PlanetView extends PlanetBase { super(id, vertices); this.shape = new PlanetShape(vertices, ownership); this.shape.randomOffset = Random.getRandom(); - this.rotationSpeed = - (0.05 + Random.getRandom() * 0.07) * (Random.getRandom() < 0.5 ? -1 : 1); this.ownershipProgress = document.createElement('div'); this.ownershipProgress.className = 'ownership'; } private step({ deltaTimeInSeconds }: StepCommand): void { - this.shape.rotation += deltaTimeInSeconds * this.rotationSpeed; + this.shape.rotation = this.rotationInterpolator.getValue(deltaTimeInSeconds); this.shape.colorMixQ = this.ownership; if (this.flareIntensity > 0) { @@ -120,8 +122,16 @@ export class PlanetView extends PlanetBase { this.releaseFlareSlot(); } - private updateProperty({ propertyValue }: UpdatePropertyCommand): void { - this.ownership = propertyValue; + private updateProperty({ + propertyKey, + propertyValue, + rateOfChange, + }: UpdatePropertyCommand): void { + if (propertyKey === 'rotation') { + this.rotationInterpolator.addFrame(propertyValue, rateOfChange); + } else { + this.ownership = propertyValue; + } } private draw({ renderer, overlay, shouldChangeLayout }: RenderCommand): void { @@ -137,7 +147,7 @@ export class PlanetView extends PlanetBase { if (this.lastGeneratedPoint !== undefined) { const element = document.createElement('div'); - element.className = 'falling-point ' + (this.ownership < 0.5 ? 'decla' : 'red'); + element.className = 'falling-point ' + (this.ownership < 0.5 ? 'blue' : 'red'); element.innerText = '+' + this.lastGeneratedPoint; element.style.left = `${screenPosition.x}px`; element.style.top = `${screenPosition.y}px`; @@ -159,12 +169,12 @@ export class PlanetView extends PlanetBase { } private getGradient(): string { - const sideDecla = this.ownership < 0.5; + const sideBlue = this.ownership < 0.5; const sidePercent = (Math.abs(this.ownership - 0.5) / 0.5) * 100; - return sideDecla + return sideBlue ? `conic-gradient( - var(--bright-decla) ${sidePercent}%, - var(--bright-decla) ${sidePercent}%, + var(--bright-blue) ${sidePercent}%, + var(--bright-blue) ${sidePercent}%, rgba(0, 0, 0, 0) ${sidePercent}%, rgba(0, 0, 0, 0) 100% )` diff --git a/frontend/src/scripts/objects/types/projectile-view.ts b/frontend/src/scripts/objects/types/projectile-view.ts index 7a246fe..5843e59 100644 --- a/frontend/src/scripts/objects/types/projectile-view.ts +++ b/frontend/src/scripts/objects/types/projectile-view.ts @@ -10,12 +10,12 @@ import { } from 'shared'; import { RenderCommand } from '../../commands/types/render'; import { StepCommand } from '../../commands/types/step'; -import { Vec2Extrapolator } from '../../helper/extrapolators/vec2-extrapolator'; +import { Vec2Interpolator } from '../../helper/interpolators/vec2-interpolator'; export class ProjectileView extends ProjectileBase { private light: CircleLight; - private centerExtrapolator: Vec2Extrapolator; + private centerInterpolator: Vec2Interpolator; protected commandExecutors: CommandExecutors = { [RenderCommand.type]: this.draw.bind(this), @@ -36,17 +36,17 @@ export class ProjectileView extends ProjectileBase { settings.paletteDim[settings.colorIndices[team]], 0, ); - this.centerExtrapolator = new Vec2Extrapolator(center); + this.centerInterpolator = new Vec2Interpolator(center); } private updateProperty({ propertyValue, rateOfChange }: UpdatePropertyCommand): void { - this.centerExtrapolator.addFrame(propertyValue, rateOfChange); + this.centerInterpolator.addFrame(propertyValue, rateOfChange); } private handleStep({ deltaTimeInSeconds }: StepCommand): void { this.step(deltaTimeInSeconds); - this.center = this.centerExtrapolator.getValue(deltaTimeInSeconds); + this.center = this.centerInterpolator.getValue(deltaTimeInSeconds); this.light.center = this.center; this.light.intensity = Math.min( 0.1, diff --git a/frontend/src/scripts/shapes/planet-shape.ts b/frontend/src/scripts/shapes/planet-shape.ts index 6fa7565..7a3bee5 100644 --- a/frontend/src/scripts/shapes/planet-shape.ts +++ b/frontend/src/scripts/shapes/planet-shape.ts @@ -54,19 +54,24 @@ export class PlanetShape extends PolygonFactory(settings.planetEdgeCount, 0) { float l = planetLengths[j]; float randomOffset = planetRandoms[j]; float rotation = planetRotations[j]; - vec2 targetCenterDelta = target - center; - float targetDistance = length(targetCenterDelta); - vec2 targetTangent = targetCenterDelta / clamp(targetDistance, 0.01, 1000.0); float cr = cos(rotation); float sr = sin(rotation); - vec2 rotatedTangent = vec2( - cr * targetTangent.x - sr * targetTangent.y, - sr * targetTangent.x + cr * targetTangent.y + + // Spin the whole planet: evaluate the SDF in the planet's own + // rotating frame so the polygon outline turns together with its + // terrain, instead of the terrain sliding over a fixed outline. + vec2 targetCenterDelta = target - center; + float targetDistance = length(targetCenterDelta); + vec2 localTarget = center + vec2( + cr * targetCenterDelta.x - sr * targetCenterDelta.y, + sr * targetCenterDelta.x + cr * targetCenterDelta.y ); - vec2 noisyTarget = target - ( + vec2 targetTangent = (localTarget - center) / clamp(targetDistance, 0.01, 1000.0); + + vec2 noisyTarget = localTarget - ( targetTangent * planetTerrain(vec2( - l * abs(atan(rotatedTangent.y, rotatedTangent.x)), + l * abs(atan(targetTangent.y, targetTangent.x)), randomOffset )) / 12.0 ); @@ -97,9 +102,9 @@ export class PlanetShape extends PolygonFactory(settings.planetEdgeCount, 0) { if (dist < minDistance) { minDistance = dist; - color = mix(${colorToString(settings.declaPlanetColor)}, ${colorToString( - settings.redPlanetColor, - )}, planetColorMixQ[j]); + color = mix(${colorToString(settings.bluePlanetColor)}, ${colorToString( + settings.redPlanetColor, + )}, planetColorMixQ[j]); } } diff --git a/shared/src/commands/types/property-updates-for-objects.ts b/shared/src/commands/types/property-updates-for-objects.ts index a9e4985..bef2d6b 100644 --- a/shared/src/commands/types/property-updates-for-objects.ts +++ b/shared/src/commands/types/property-updates-for-objects.ts @@ -4,11 +4,16 @@ import { Command } from '../command'; @serializable export class PropertyUpdatesForObjects extends Command { - constructor(public readonly updates: Array) { + constructor( + public readonly updates: Array, + // Seconds on the server's monotonic clock at the moment this state was + // captured. Only differences between timestamps are meaningful. + public readonly timestamp: number, + ) { super(); } public toArray(): Array { - return [this.updates]; + return [this.updates, this.timestamp]; } } diff --git a/shared/src/settings.ts b/shared/src/settings.ts index 3a1a157..66aa929 100644 --- a/shared/src/settings.ts +++ b/shared/src/settings.ts @@ -18,6 +18,10 @@ export const settings = { worldRadius: 4000, objectsOnCircleLength: 0.002, updateMessageInterval: 1 / 25, + // How far behind the estimated server time remote state is rendered: ~2.5 + // update intervals, so a late packet rarely leaves the client without a + // newer snapshot to interpolate towards. + interpolationDelaySeconds: 0.1, planetEdgeCount: 7, playerKillPoint: 25, takeControlTimeInSeconds: 2.5, From fc9df09ee19e6cab186a721986803b3825a2b575 Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Sun, 14 Jun 2026 20:58:42 +0100 Subject: [PATCH 095/101] More fun --- backend/src/objects/character-physical.ts | 308 ++++++++------- backend/src/objects/circle-physical.ts | 78 ++-- backend/src/objects/planet-physical.ts | 85 ++++- backend/src/objects/projectile-physical.ts | 35 +- .../functions/is-circle-intersecting.ts | 3 +- backend/src/players/npc.ts | 14 + backend/src/players/player.ts | 39 +- frontend/src/main.scss | 72 ++++ .../src/scripts/commands/keyboard-listener.ts | 21 +- .../src/scripts/commands/touch-listener.ts | 30 +- frontend/src/scripts/feedback-hud.ts | 12 +- frontend/src/scripts/game.ts | 76 ++++ .../prediction/client-character-world.ts | 138 +++++++ .../helper/prediction/input-history.ts | 47 +++ .../prediction/local-character-predictor.ts | 328 ++++++++++++++++ .../scripts/objects/game-object-container.ts | 57 ++- .../scripts/objects/types/character-view.ts | 25 +- .../src/scripts/objects/types/planet-view.ts | 39 +- frontend/src/scripts/shapes/planet-shape.ts | 25 +- frontend/src/scripts/tutorial.ts | 9 +- .../src/commands/types/actions/leap-action.ts | 19 + .../src/commands/types/actions/move-action.ts | 12 +- .../commands/types/input-acknowledgement.ts | 28 ++ shared/src/main.ts | 11 + shared/src/objects/types/character-base.ts | 8 +- shared/src/objects/types/planet-base.ts | 5 +- shared/src/physics/character-movement.ts | 354 ++++++++++++++++++ shared/src/physics/depenetrate-circle.ts | 36 ++ shared/src/physics/evaluate-sdf.ts | 7 + shared/src/physics/interpolate-angles.ts | 6 + shared/src/physics/march-circle.ts | 80 ++++ shared/src/physics/planet-sdf.ts | 80 ++++ shared/src/physics/resolve-circle-movement.ts | 58 +++ shared/src/physics/sdf-normal.ts | 19 + shared/src/physics/sdf.ts | 31 ++ shared/src/settings.ts | 67 +++- 36 files changed, 2011 insertions(+), 251 deletions(-) create mode 100644 frontend/src/scripts/helper/prediction/client-character-world.ts create mode 100644 frontend/src/scripts/helper/prediction/input-history.ts create mode 100644 frontend/src/scripts/helper/prediction/local-character-predictor.ts create mode 100644 shared/src/commands/types/actions/leap-action.ts create mode 100644 shared/src/commands/types/input-acknowledgement.ts create mode 100644 shared/src/physics/character-movement.ts create mode 100644 shared/src/physics/depenetrate-circle.ts create mode 100644 shared/src/physics/evaluate-sdf.ts create mode 100644 shared/src/physics/interpolate-angles.ts create mode 100644 shared/src/physics/march-circle.ts create mode 100644 shared/src/physics/planet-sdf.ts create mode 100644 shared/src/physics/resolve-circle-movement.ts create mode 100644 shared/src/physics/sdf-normal.ts create mode 100644 shared/src/physics/sdf.ts diff --git a/backend/src/objects/character-physical.ts b/backend/src/objects/character-physical.ts index 63e0022..2f60597 100644 --- a/backend/src/objects/character-physical.ts +++ b/backend/src/objects/character-physical.ts @@ -14,13 +14,18 @@ import { CommandReceiver, mix, clamp01, + stepCharacterMovement, + applyLeapImpulse, + decayMomentum, + CharacterMovementState, + CharacterWorld, + GroundSurface, } from 'shared'; import { DynamicPhysical } from '../physics/physicals/dynamic-physical'; import { CirclePhysical } from './circle-physical'; import { PhysicalContainer } from '../physics/containers/physical-container'; import { BoundingBoxBase } from '../physics/bounding-boxes/bounding-box-base'; import { ProjectilePhysical } from './projectile-physical'; -import { interpolateAngles } from '../helper/interpolate-angles'; import { forceAtPosition } from '../physics/functions/force-at-position'; import { getBoundingBoxOfCircle } from '../physics/functions/get-bounding-box-of-circle'; import { PlanetPhysical } from './planet-physical'; @@ -92,10 +97,16 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical private currentPlanet?: PlanetPhysical; private secondsSinceOnSurface = settings.planetDetachmentSeconds; + private bodyVelocity = vec2.create(); + private timeSinceLastLeap = settings.leapCooldownSeconds; + public head: CirclePhysical; public leftFoot: CirclePhysical; public rightFoot: CirclePhysical; + private movementState!: CharacterMovementState; + private movementWorld!: CharacterWorld; + private movementActions: Array = []; private lastMovementAction: MoveActionCommand = new MoveActionCommand(vec2.create()); @@ -138,6 +149,51 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical container.addObject(this.head); container.addObject(this.leftFoot); container.addObject(this.rightFoot); + + this.initMovementBridge(); + } + + private initMovementBridge() { + const self = this; + this.movementState = { + head: this.head, + leftFoot: this.leftFoot, + rightFoot: this.rightFoot, + get direction() { + return self.direction; + }, + set direction(value: number) { + self.direction = value; + }, + get currentPlanet() { + return self.currentPlanet; + }, + set currentPlanet(value: GroundSurface | undefined) { + // On the server every ground is a PlanetPhysical (the world only ever + // hands back planets), so this narrowing is safe. + self.currentPlanet = value as PlanetPhysical | undefined; + }, + get secondsSinceOnSurface() { + return self.secondsSinceOnSurface; + }, + set secondsSinceOnSurface(value: number) { + self.secondsSinceOnSurface = value; + }, + bodyVelocity: this.bodyVelocity, + }; + + this.movementWorld = { + // Same set and order forceAtPosition used: planets in the force field, + // in container-traversal order (so the f64 gravity sum is unchanged). + groundsNear: (center, radius) => + self.container + .findIntersecting(getBoundingBoxOfCircle(new Circle(center, radius))) + .filter((o): o is PlanetPhysical => o instanceof PlanetPhysical), + stepBody: (body, deltaTimeInSeconds) => { + const { hitObject } = (body as CirclePhysical).stepManually(deltaTimeInSeconds); + return hitObject instanceof PlanetPhysical ? hitObject : undefined; + }, + }; } private get isSpawnProtected(): boolean { @@ -170,7 +226,13 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical return this.currentPlanet; } - public addKill(victimName: string) { + // Persistent launch momentum, streamed to the owning client so its predictor + // can reproduce a leap/slingshot/recoil flight instead of only snapping to it. + public get launchMomentum(): vec2 { + return this.bodyVelocity; + } + + public addKill(victimName: string, charge = 0) { this.killCount++; this.killStreak++; this.remoteCall('setKillCount', this.killCount); @@ -180,11 +242,11 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical this.health + settings.playerKillHealthReward, ); this.syncHealth(); - this.remoteCall('onKillConfirmed', victimName, this.killStreak); + this.remoteCall('onKillConfirmed', victimName, this.killStreak, charge); } - public registerHit() { - this.remoteCall('onHitConfirmed'); + public registerHit(charge = 0) { + this.remoteCall('onHitConfirmed', charge); } private syncHealth() { @@ -197,6 +259,9 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical public onCollision({ other }: ReactToCollisionCommand) { if ( + // A corpse keeps its collidable circles for the despawn animation; the + // isAlive guard stops a flying corpse from eating shots aimed past it. + this.isAlive && other instanceof ProjectilePhysical && other.team !== this.team && other.isAlive @@ -213,10 +278,17 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical this.remoteCall('setHealth', this.health); if (this.health <= 0 && this.isAlive) { + // Throw the corpse along the killing shot, harder for charged hits. + vec2.scaleAndAdd( + this.bodyVelocity, + this.bodyVelocity, + other.direction, + mix(settings.deathImpulseMin, settings.deathImpulseMax, other.charge), + ); this.onDie(); - other.originator.addKill(this.name); + other.originator.addKill(this.name, other.charge); } else { - other.originator.registerHit(); + other.originator.registerHit(other.charge); } } } @@ -246,6 +318,8 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical const direction = vec2.subtract(vec2.create(), position, this.center); vec2.normalize(direction, direction); + // Keep the unit direction before vec2.scale repurposes it as the velocity. + const shotDirection = vec2.clone(direction); const velocity = vec2.scale(direction, direction, speed); const projectile = new ProjectilePhysical( vec2.clone(this.center), @@ -255,12 +329,42 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical velocity, this, this.container, + c, ); this.container.addObject(projectile); + if (c > 0) { + vec2.scaleAndAdd( + this.bodyVelocity, + this.bodyVelocity, + shotDirection, + -settings.chargeShotRecoilMax * c, + ); + } + this.remoteCall('onShoot', strength); } + public leap() { + if ( + !this.isAlive || + this.hasJustBorn || + !this.currentPlanet || + this.timeSinceLastLeap < settings.leapCooldownSeconds || + this.projectileStrength < settings.leapStrengthCost + ) { + return; + } + + this.timeSinceLastLeap = 0; + this.projectileStrength -= settings.leapStrengthCost; + + // Same impulse the client predicts with (shared), so a leap launches + // identically on both sides. + applyLeapImpulse(this.movementState, this.lastMovementAction.direction); + this.remoteCall('onLeap'); + } + public get boundingBox(): BoundingBoxBase { return getBoundingBoxOfCircle(new Circle(this.center, CharacterPhysical.boundRadius)); } @@ -363,6 +467,7 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical private step({ deltaTimeInSeconds, game }: StepCommand) { this.getPoints(game); this.timeAlive += deltaTimeInSeconds; + this.timeSinceLastLeap += deltaTimeInSeconds; const oldHead = new Circle(vec2.clone(this.head.center), this.head.radius); const oldLeftFoot = new Circle( vec2.clone(this.leftFoot.center), @@ -377,6 +482,7 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical if ((this.timeSinceDying += deltaTimeInSeconds) > settings.spawnDespawnTime) { this.destroy(); } else { + this.freeFallCorpse(deltaTimeInSeconds); this.animateScaling(1 - this.timeSinceDying / settings.spawnDespawnTime); } this.setPropertyUpdates(oldHead, oldLeftFoot, oldRightFoot, deltaTimeInSeconds); @@ -405,14 +511,33 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical this.projectileStrength = Math.min( settings.playerMaxStrength, this.projectileStrength + - settings.playerStrengthRegenerationPerSeconds * deltaTimeInSeconds, + settings.playerStrengthRegenerationPerSeconds * deltaTimeInSeconds, ); this.regenerateHealth(deltaTimeInSeconds); - this.currentPlanet?.takeControl(this.team, deltaTimeInSeconds); + // The planet tallies who is standing on it and resolves capture itself, so + // a contested rock can freeze instead of two squads silently cancelling. + this.currentPlanet?.registerPresence(this); - const intersectingWithForceField = this.container.findIntersecting( + // The whole walking model — gravity gather, movement force, on/off-planet + // branch, posture springs, body-momentum, and stepping the three parts — + // is the shared simulation the client predicts with, so the two can never + // drift. Server-only concerns (scoring, health, shooting, spawn/death, + // ownership) stay here around it. + const direction = this.averageAndResetMovementActions(); + stepCharacterMovement( + this.movementState, + this.movementWorld, + direction, + deltaTimeInSeconds, + ); + + this.setPropertyUpdates(oldHead, oldLeftFoot, oldRightFoot, deltaTimeInSeconds); + } + + private freeFallCorpse(deltaTime: number) { + const intersecting = this.container.findIntersecting( getBoundingBoxOfCircle( new Circle( this.center, @@ -420,151 +545,20 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical ), ), ); - - const direction = this.averageAndResetMovementActions(); - const movementForce = vec2.scale(direction, direction, settings.maxAcceleration); - this.leftFoot.applyForce(movementForce, deltaTimeInSeconds); - this.rightFoot.applyForce(movementForce, deltaTimeInSeconds); - - if (!this.currentPlanet) { - const leftFootGravity = forceAtPosition( - this.leftFoot.center, - intersectingWithForceField, - ); - const rightFootGravity = forceAtPosition( - this.rightFoot.center, - intersectingWithForceField, - ); - - this.leftFoot.applyForce(leftFootGravity, deltaTimeInSeconds); - this.rightFoot.applyForce(rightFootGravity, deltaTimeInSeconds); - - const sumForce = vec2.subtract(vec2.create(), leftFootGravity, movementForce); - - this.setDirection(vec2.length(sumForce) === 0 ? vec2.fromValues(0, -1) : sumForce); - } else { - this.carryWithRotatingPlanet(deltaTimeInSeconds); - - const leftFootGravity = this.currentPlanet!.getForce(this.leftFoot.center); - const rightFootGravity = this.currentPlanet!.getForce(this.rightFoot.center); - - vec2.add(leftFootGravity, leftFootGravity, rightFootGravity); - const gravity = vec2.scale(leftFootGravity, leftFootGravity, 0.5); - - if ( - vec2.dot(movementForce, gravity) < - -vec2.length(movementForce) * settings.climbDotThreshold - ) { - vec2.scale(gravity, gravity, settings.climbGravityScale); + let grounded = false; + for (const part of [this.leftFoot, this.rightFoot, this.head]) { + part.applyForce(forceAtPosition(part.center, intersecting), deltaTime); + vec2.add(part.velocity, part.velocity, this.bodyVelocity); + const { hitObject } = part.stepManually(deltaTime); + if (hitObject instanceof PlanetPhysical) { + grounded = true; } - - const scaledLeftFootGravity = vec2.scale( - vec2.create(), - this.leftFoot.lastNormal, - vec2.dot(this.leftFoot.lastNormal, gravity), - ); - this.leftFoot.applyForce(scaledLeftFootGravity, deltaTimeInSeconds); - - const scaledRightFootGravity = vec2.scale( - vec2.create(), - this.rightFoot.lastNormal, - vec2.dot(this.rightFoot.lastNormal, gravity), - ); - - this.rightFoot.applyForce(scaledRightFootGravity, deltaTimeInSeconds); - - if (vec2.length(gravity) <= settings.planetDetachmentForceThreshold) { - this.currentPlanet = undefined; - } - this.setDirection(gravity); } - - this.keepPosture(); - this.stepBodyPart(this.leftFoot, deltaTimeInSeconds); - this.stepBodyPart(this.rightFoot, deltaTimeInSeconds); - this.stepBodyPart(this.head, deltaTimeInSeconds); - - this.setPropertyUpdates(oldHead, oldLeftFoot, oldRightFoot, deltaTimeInSeconds); - } - - private setDirection(direction: vec2) { - this.direction = interpolateAngles( - this.direction, - Math.atan2(direction.y, direction.x) + Math.PI / 2, - 0.2, - ); - } - - // While standing on a planet, ride its spin: rigidly rotate the whole body - // around the planet centre by the same per-tick angle the renderer and the - // collision SDF use, so the player is carried around and turned with the - // surface instead of it sliding frictionlessly underneath. The positional - // change becomes velocity in setPropertyUpdates, keeping the streamed - // rate-of-change consistent with the streamed positions. - private carryWithRotatingPlanet(deltaTimeInSeconds: number) { - const planet = this.currentPlanet; - if (!planet) { - return; - } - - // Negative: the rendered/collidable surface turns by R(-rotation) — see - // PlanetPhysical.distance (toLocalFrame) and planet-shape.ts. - const angle = -planet.angularVelocity * deltaTimeInSeconds; - const center = planet.center; - - this.head.center = vec2.rotate(vec2.create(), this.head.center, center, angle); - this.leftFoot.center = vec2.rotate( - vec2.create(), - this.leftFoot.center, - center, - angle, - ); - this.rightFoot.center = vec2.rotate( - vec2.create(), - this.rightFoot.center, - center, - angle, - ); - } - - private keepPosture() { - const center = this.center; - this.springMove( - this.leftFoot, - center, - CharacterPhysical.leftFootOffset, - settings.postureFeetStiffness, - ); - this.springMove( - this.rightFoot, - center, - CharacterPhysical.rightFootOffset, - settings.postureFeetStiffness, - ); - - this.springMove( - this.head, - center, - CharacterPhysical.headOffset, - settings.postureHeadStiffness, - ); - } - - private springMove( - object: CirclePhysical, - center: vec2, - offset: vec2, - stiffness: number, - ) { - const desiredPosition = vec2.add(vec2.create(), center, offset); - vec2.rotate(desiredPosition, desiredPosition, center, this.direction); - const positionDelta = vec2.subtract(vec2.create(), desiredPosition, object.center); - - // First-order velocity relaxation toward the desired posture position, - // added to (not replacing) the gravity/movement velocity accumulated - // earlier this tick. stepManually applies it over deltaTime, so the - // per-tick displacement is positionDelta * stiffness * deltaTime. - vec2.scaleAndAdd(object.velocity, object.velocity, positionDelta, stiffness); + // Brake with the exact shared model the living body uses: stiff on contact + // so the corpse skids to rest, gentle in the air, plus the constant stop and + // the speed cap — so a flung corpse comes to a definite stop instead of + // sliding forever. + decayMomentum(this.bodyVelocity, grounded, deltaTime); } private regenerateHealth(deltaTimeInSeconds: number) { @@ -581,14 +575,6 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical } } - private stepBodyPart(part: CirclePhysical, deltaTime: number) { - const { hitObject } = part.stepManually(deltaTime); - if (hitObject instanceof PlanetPhysical) { - this.secondsSinceOnSurface = 0; - this.currentPlanet = hitObject; - } - } - public onDie() { this.isDestroyed = true; this.remoteCall('onDie'); diff --git a/backend/src/objects/circle-physical.ts b/backend/src/objects/circle-physical.ts index fcc912f..e1a6abf 100644 --- a/backend/src/objects/circle-physical.ts +++ b/backend/src/objects/circle-physical.ts @@ -4,14 +4,14 @@ import { CommandExecutors, CommandReceiver, GameObject, + resolveCircleMovement, serializesTo, } from 'shared'; import { BoundingBox } from '../physics/bounding-boxes/bounding-box'; import { BoundingBoxBase } from '../physics/bounding-boxes/bounding-box-base'; -import { depenetrateCircle } from '../physics/functions/depenetrate-circle'; -import { moveCircle } from '../physics/functions/move-circle'; import { PhysicalContainer } from '../physics/containers/physical-container'; import { DynamicPhysical } from '../physics/physicals/dynamic-physical'; +import { Physical } from '../physics/physicals/physical'; import { ReactToCollisionCommand } from '../commands/react-to-collision'; @serializesTo(Circle) @@ -33,7 +33,9 @@ export class CirclePhysical extends CommandReceiver implements Circle, DynamicPh private _radius: number, public owner: GameObject, private readonly container: PhysicalContainer, - private restitution = 0, + // Public + readonly so a CirclePhysical structurally satisfies the shared + // PhysicsBody interface the movement simulation operates on. + public readonly restitution = 0, ) { super(); this._boundingBox = new BoundingBox(); @@ -89,45 +91,49 @@ export class CirclePhysical extends CommandReceiver implements Circle, DynamicPh ); } - public stepManually(deltaTimeInSeconds: number): { + // Position-resolution for one tick. Delegates to the shared + // resolveCircleMovement so the server integrates a body with the exact same + // geometry the client predictor runs (shared/physics) — no parallel copy to + // keep in sync. The onHit callback dispatches the collision reactions at the + // same points the old inline move-circle did (both the initial march and the + // post-bounce slide). `possibleIntersectors`, when supplied, lets a caller + // that already broadphased (e.g. a projectile's gravity query) avoid a second + // container query; otherwise it is self-gathered from the swept bounding box. + public stepManually( + deltaTimeInSeconds: number, + possibleIntersectors?: Array, + ): { hitObject: GameObject | undefined; velocity: vec2; } { - let delta = vec2.scale(vec2.create(), this.velocity, deltaTimeInSeconds); + const intersecting = ( + possibleIntersectors ?? this.sweptBroadphase(deltaTimeInSeconds) + ).filter((b) => b.gameObject !== this.gameObject && b.canCollide); - this.radius += vec2.length(delta); - const intersecting = this.container - .findIntersecting(this.boundingBox) - .filter((b) => b.gameObject !== this.gameObject && b.canCollide); - this.radius -= vec2.length(delta); + const { hitObject, velocity } = resolveCircleMovement( + this, + deltaTimeInSeconds, + intersecting, + (intersected) => { + const physical = intersected as Physical; + physical.handleCommand(new ReactToCollisionCommand(this.gameObject)); + this.handleCommand(new ReactToCollisionCommand(physical.gameObject)); + }, + ); - depenetrateCircle(this, intersecting); + return { hitObject: (hitObject as Physical | undefined)?.gameObject, velocity }; + } - const { normal, hitSurface, hitObject } = moveCircle(this, delta, intersecting); - - if (hitSurface) { - vec2.copy(this.lastNormal, normal!); - - vec2.subtract( - this.velocity, - this.velocity, - vec2.scale( - normal!, - normal!, - (1 + this.restitution) * vec2.dot(normal!, this.velocity), - ), - ); - - if (vec2.length(this.velocity) > 50) { - delta = vec2.scale(vec2.create(), this.velocity, deltaTimeInSeconds); - moveCircle(this, delta, intersecting); - } - } - - const lastVelocity = vec2.clone(this.velocity); - vec2.zero(this.velocity); - - return { hitObject, velocity: lastVelocity }; + // Query the container with the bounding box grown by this tick's travel, so a + // fast-moving body still sees what it is about to sweep into. + private sweptBroadphase(deltaTimeInSeconds: number): Array { + const sweep = vec2.length( + vec2.scale(vec2.create(), this.velocity, deltaTimeInSeconds), + ); + this.radius += sweep; + const intersecting = this.container.findIntersecting(this.boundingBox); + this.radius -= sweep; + return intersecting; } public toArray(): Array { diff --git a/backend/src/objects/planet-physical.ts b/backend/src/objects/planet-physical.ts index 95a5e1b..4305b18 100644 --- a/backend/src/objects/planet-physical.ts +++ b/backend/src/objects/planet-physical.ts @@ -16,16 +16,21 @@ import { CommandReceiver, } from 'shared'; import { GeneratePointsCommand } from '../commands/generate-points'; +import { AnnounceCommand } from '../commands/announce'; import { StepCommand } from '../commands/step'; import { ImmutableBoundingBox } from '../physics/bounding-boxes/immutable-bounding-box'; import { StaticPhysical } from '../physics/physicals/static-physical'; import { LampPhysical } from './lamp-physical'; +import type { CharacterPhysical } from './character-physical'; @serializesTo(PlanetBase) export class PlanetPhysical extends PlanetBase implements StaticPhysical { public readonly canCollide = true; public readonly canMove = false; + // Marks this as standable ground for the shared movement simulation (a body + // landing on it latches it as currentPlanet). See shared GroundSurface. + public readonly isGround = true; public readonly sizePointMultiplier: number; @@ -45,6 +50,12 @@ export class PlanetPhysical extends PlanetBase implements StaticPhysical { private lastTeam: CharacterTeam = CharacterTeam.neutral; + // Characters standing on the planet this tick. Filled by registerPresence as + // each grounded character steps, drained when the planet resolves capture in + // its own step(). Drives the head-count tug-of-war. + private presentCharacters: Array = []; + private isContested = false; + protected commandExecutors: CommandExecutors = { [StepCommand.type]: this.step.bind(this), }; @@ -53,8 +64,8 @@ export class PlanetPhysical extends PlanetBase implements StaticPhysical { this.lamps.push(lamp); } - constructor(vertices: Array) { - super(id(), vertices); + constructor(vertices: Array, isKeystone = false) { + super(id(), vertices, 0.5, isKeystone); const sizeClass = clamp01( (this.radius - settings.planetMinReferenceRadius) / @@ -67,6 +78,12 @@ export class PlanetPhysical extends PlanetBase implements StaticPhysical { (0.05 + Random.getRandom() * 0.07) * (Random.getRandom() < 0.5 ? -1 : 1); } + // A grounded character announces itself each tick so the planet can resolve + // contested capture from the net head-count. + public registerPresence(character: CharacterPhysical) { + this.presentCharacters.push(character); + } + public distance(target: vec2): number { // Evaluate the SDF in the planet's own rotating frame so this collision // outline turns in lockstep with the rendered planet (see planet-shape.ts). @@ -124,13 +141,13 @@ export class PlanetPhysical extends PlanetBase implements StaticPhysical { } // Signed angular velocity in rad/s, exposed so a character standing on the - // planet can ride its spin (see CharacterPhysical.carryWithRotatingPlanet). + // planet can ride its spin (see carryWithRotatingPlanet in shared). public get angularVelocity(): number { return this.rotationSpeed; } public get team(): CharacterTeam { - return Math.abs(this.ownership - 0.5) < 0.1 + return Math.abs(this.ownership - 0.5) < settings.planetControlThreshold ? CharacterTeam.neutral : this.ownership < 0.5 ? CharacterTeam.blue @@ -160,8 +177,49 @@ export class PlanetPhysical extends PlanetBase implements StaticPhysical { // In reverse order, so that teams can achieve a 100% control. this.getPoints(game); - this.takeControl(CharacterTeam.neutral, deltaTimeInSeconds); + this.resolveCapture(deltaTimeInSeconds); this.detectFlip(game); + + this.presentCharacters = []; + } + + // One capture step per tick driven by the net team head-count, so grouping up + // pays off and an equal standoff freezes the planet (contested) instead of + // both sides silently cancelling with no feedback. + private resolveCapture(deltaTime: number) { + let blue = 0; + let red = 0; + for (const c of this.presentCharacters) { + if (c.team === CharacterTeam.blue) { + blue++; + } else if (c.team === CharacterTeam.red) { + red++; + } + } + const net = red - blue; + const occupied = blue + red > 0; + + if (net !== 0) { + const lead = Math.min(Math.abs(net), settings.maxContestLeadMultiplier); + this.takeControl( + net > 0 ? CharacterTeam.red : CharacterTeam.blue, + deltaTime * lead, + ); + } else if (!occupied) { + // Empty planets drift back to neutral; the keystone drifts much slower so + // it lingers as a live flashpoint. + this.takeControl( + CharacterTeam.neutral, + this.isKeystone ? deltaTime / settings.keystoneLoseControlScale : deltaTime, + ); + } + // occupied tie -> frozen tug-of-war: no ownership change, ring pulses. + + const contested = occupied && net === 0; + if (contested !== this.isContested) { + this.isContested = contested; + this.remoteCall('setContested', contested); + } } private detectFlip(game: CommandReceiver) { @@ -182,6 +240,14 @@ export class PlanetPhysical extends PlanetBase implements StaticPhysical { currentTeam === CharacterTeam.red ? reward : 0, ), ); + + if (this.isKeystone) { + game.handleCommand( + new AnnounceCommand( + `Team ${currentTeam} captured the Heart`, + ), + ); + } } const control = Math.abs(this.ownership - 0.5) / 0.5; @@ -196,8 +262,8 @@ export class PlanetPhysical extends PlanetBase implements StaticPhysical { public getPropertyUpdates(): PropertyUpdatesForObject { return new PropertyUpdatesForObject(this.id, [ new UpdatePropertyCommand('ownership', this.ownership, 0), - // Stream rotation with rotationSpeed as the rate-of-change so the client - // can keep the angle moving when snapshots run late (see planet-view.ts). + // Stream the spin rate as the rate-of-change so the client can keep the + // angle moving when snapshots run late (see planet-view.ts). new UpdatePropertyCommand('rotation', this.rotation, this.rotationSpeed), ]); } @@ -257,6 +323,11 @@ export class PlanetPhysical extends PlanetBase implements StaticPhysical { return vec2.scale(diff, diff, scale); } + // GroundSurface alias the shared movement simulation calls for gravity. + public gravityAt(position: vec2): vec2 { + return this.getForce(position); + } + public get gameObject(): this { return this; } diff --git a/backend/src/objects/projectile-physical.ts b/backend/src/objects/projectile-physical.ts index 51a7866..8a967f1 100644 --- a/backend/src/objects/projectile-physical.ts +++ b/backend/src/objects/projectile-physical.ts @@ -8,13 +8,16 @@ import { PropertyUpdatesForObject, UpdatePropertyCommand, CommandExecutors, + Circle, + marchCircle, } from 'shared'; import { ImmutableBoundingBox } from '../physics/bounding-boxes/immutable-bounding-box'; import { CirclePhysical } from './circle-physical'; import { DynamicPhysical } from '../physics/physicals/dynamic-physical'; import { PhysicalContainer } from '../physics/containers/physical-container'; import { CharacterPhysical } from './character-physical'; -import { moveCircle } from '../physics/functions/move-circle'; +import { forceAtPosition } from '../physics/functions/force-at-position'; +import { getBoundingBoxOfCircle } from '../physics/functions/get-bounding-box-of-circle'; import { StepCommand } from '../commands/step'; import { ReactToCollisionCommand } from '../commands/react-to-collision'; @@ -42,6 +45,9 @@ export class ProjectilePhysical extends ProjectileBase implements DynamicPhysica private velocity: vec2, public readonly originator: CharacterPhysical, readonly container: PhysicalContainer, + // Normalised charge (0..1) of the shot that fired this, used by the victim + // to scale hit/kill feedback and the death fling. + public readonly charge: number = 0, ) { super(id(), center, radius, team, strength); this.object = new CirclePhysical(center, radius, this, container, 0.9); @@ -71,7 +77,7 @@ export class ProjectilePhysical extends ProjectileBase implements DynamicPhysica const intersecting = this.container .findIntersecting(this.boundingBox) .filter((g) => g instanceof CharacterPhysical && g.team === this.team); - const { hitSurface } = moveCircle(this.object, delta, intersecting, true); + const { hitSurface } = marchCircle(this.object, delta, intersecting, true); wasCollision = hitSurface; } vec2.add(this.center, this.center, delta); @@ -124,8 +130,31 @@ export class ProjectilePhysical extends ProjectileBase implements DynamicPhysica return; } + // Curveball: the same planetary gravity that pulls on a free-falling + // character bends the shot, so slower (charged) shots arc and can be lobbed + // over a planet's horizon. Scale is tiny — near-surface gravity is huge. + // This single broadphase is reused for the step below: the gravity radius + // (maxGravityDistance) dwarfs one tick's travel, so the set is a superset of + // the swept-collision box and the step needn't query the container again. + const intersecting = settings.projectileGravityEnabled + ? this.container.findIntersecting( + getBoundingBoxOfCircle( + new Circle(this.center, this.object.radius + settings.maxGravityDistance), + ), + ) + : undefined; + + if (intersecting) { + vec2.scaleAndAdd( + this.velocity, + this.velocity, + forceAtPosition(this.center, intersecting), + settings.projectileGravityScale * deltaTimeInSeconds, + ); + } + vec2.copy(this.object.velocity, this.velocity); - const { velocity } = this.object.stepManually(deltaTimeInSeconds); + const { velocity } = this.object.stepManually(deltaTimeInSeconds, intersecting); vec2.copy(this.velocity, velocity); } } diff --git a/backend/src/physics/functions/is-circle-intersecting.ts b/backend/src/physics/functions/is-circle-intersecting.ts index 3f497fa..203eb1d 100644 --- a/backend/src/physics/functions/is-circle-intersecting.ts +++ b/backend/src/physics/functions/is-circle-intersecting.ts @@ -1,5 +1,4 @@ -import { Circle } from 'shared'; -import { evaluateSdf } from './evaluate-sdf'; +import { Circle, evaluateSdf } from 'shared'; import { PhysicalBase } from '../physicals/physical-base'; export const isCircleIntersecting = ( diff --git a/backend/src/players/npc.ts b/backend/src/players/npc.ts index 7bcb3f7..23177b6 100644 --- a/backend/src/players/npc.ts +++ b/backend/src/players/npc.ts @@ -60,6 +60,10 @@ const npcTuning = { spreadBase: 60, spreadPerDistance: 0.08, spreadAggressionFalloff: 1.3, + + // Per-second chance to hop while grounded and on the move, so bots use the + // leap verb too instead of being grounded targets. + leapChancePerSecond: 0.35, }; export class NPC extends PlayerBase { @@ -141,6 +145,16 @@ export class NPC extends PlayerBase { const movement = this.decideMovement(this.nearObjects); this.character.handleMovementAction(new MoveActionCommand(movement)); + if ( + !this.isComingBack && + this.character.groundPlanet && + vec2.length(movement) > 0 && + Random.getRandom() < + npcTuning.leapChancePerSecond * this.aggression * deltaTimeInSeconds + ) { + this.character.leap(); + } + if ( (this.timeSinceLastShoot += deltaTimeInSeconds) > npcTuning.shootIntervalSeconds ) { diff --git a/backend/src/players/player.ts b/backend/src/players/player.ts index f5709bb..ca563fc 100644 --- a/backend/src/players/player.ts +++ b/backend/src/players/player.ts @@ -23,6 +23,8 @@ import { PropertyUpdatesForObjects, PropertyUpdatesForObject, PrimaryActionCommand, + LeapActionCommand, + InputAcknowledgement, } from 'shared'; import { Socket } from 'socket.io'; import { BoundingBox } from '../physics/bounding-boxes/bounding-box'; @@ -37,14 +39,27 @@ export class Player extends PlayerBase { private timeUntilRespawn = 0; private timeSinceLastMessage = 0; private objectsPreviouslyInViewArea: Array = []; + private lastInputClientTimeMs = 0; + private lastLeapClientTimeMs = 0; protected commandExecutors: CommandExecutors = { [SetAspectRatioActionCommand.type]: (v: SetAspectRatioActionCommand) => (this.aspectRatio = v.aspectRatio), - [MoveActionCommand.type]: (c: MoveActionCommand) => - this.character?.handleMovementAction(c), + [MoveActionCommand.type]: (c: MoveActionCommand) => { + // Remember how far into this client's input timeline we've consumed, to + // echo back for client-side prediction reconciliation. + this.lastInputClientTimeMs = c.clientTimeMs; + this.character?.handleMovementAction(c); + }, [PrimaryActionCommand.type]: (c: PrimaryActionCommand) => this.character?.shootTowards(c.position, c.charge), + [LeapActionCommand.type]: (c: LeapActionCommand) => { + // Record receipt (whether or not leap() accepts it): either way its effect + // on bodyVelocity is now reflected in the streamed launch momentum, so the + // predictor must stop replaying this leap. + this.lastLeapClientTimeMs = c.clientTimeMs; + this.character?.leap(); + }, }; constructor( @@ -100,6 +115,13 @@ export class Player extends PlayerBase { new Set(this.objectContainer.findIntersecting(bb).map((o) => o.gameObject)), ); + // The owning character must always be in its own snapshot, regardless of the + // view-area query, so the client predictor never loses its authoritative + // anchor (the body can ride a fast spinner to the very edge of the box). + if (this.character && !objectsInViewArea.includes(this.character)) { + objectsInViewArea.push(this.character); + } + const newlyIntersecting = objectsInViewArea.filter( (o) => !this.objectsPreviouslyInViewArea.includes(o), ); @@ -130,6 +152,19 @@ export class Player extends PlayerBase { performance.now() / 1000, ), ); + + // Tell the client how much of its own input is reflected in the snapshot it + // just received, so its predictor can replay the rest. Only while alive — + // a dead player isn't predicting. + if (this.character) { + this.queueCommandSend( + new InputAcknowledgement( + this.lastInputClientTimeMs, + this.character.launchMomentum, + this.lastLeapClientTimeMs, + ), + ); + } } private getOtherPlayers(): Array { diff --git a/frontend/src/main.scss b/frontend/src/main.scss index 2e2e60e..5dcbb56 100644 --- a/frontend/src/main.scss +++ b/frontend/src/main.scss @@ -207,6 +207,14 @@ body { @include square(50px); border-radius: 1000px; mask-image: url('../static/mask.svg'); + + &.contested { + animation: contested-pulse 0.7s ease-in-out infinite; + } + + &.keystone { + @include square(72px); + } } .falling-point { @@ -244,6 +252,34 @@ body { } } + // Off-screen pointer to the keystone "Heart", tinted by its current owner. + .keystone-arrow { + transition: transform 150ms; + opacity: 0.9; + + @include square($large-icon); + + @media (max-width: $breakpoint) { + @include square($small-icon); + } + + mask-image: url('../static/chevron.svg'); + mask-size: contain; + background-color: $bright-neutral; + + &.blue { + background-color: $bright-blue; + } + + &.red { + background-color: $bright-red; + } + + &.neutral { + background-color: $bright-neutral; + } + } + .joystick { @include square($large-icon * 1.3); background-color: white; @@ -296,6 +332,15 @@ body { } } + &.leap { + right: $medium-padding; + bottom: $medium-padding + $large-icon * 1.6 + $small-padding; + + &::after { + content: '\25B2'; + } + } + .strength-ring { position: absolute; top: -3px; @@ -572,6 +617,16 @@ body { } animation: hitmarker-pop 250ms ease-out forwards; + + &.charged { + + &::before, + &::after { + width: 18px; + height: 3px; + background-color: $accent; + } + } } .kill-popup { @@ -584,6 +639,10 @@ body { text-shadow: 0 0 6px rgba(0, 0, 0, 0.9); animation: kill-popup-rise 1200ms ease-out forwards; + &.charged { + color: $accent; + } + .heal { color: #6fcf6f; } @@ -626,6 +685,18 @@ body { } } +@keyframes contested-pulse { + + 0%, + 100% { + opacity: 1; + } + + 50% { + opacity: 0.35; + } +} + .charge-ring { position: fixed; @include square(56px); @@ -649,6 +720,7 @@ body { } @keyframes match-point-pulse { + 0%, 100% { box-shadow: 0 0 4px 0 currentColor; diff --git a/frontend/src/scripts/commands/keyboard-listener.ts b/frontend/src/scripts/commands/keyboard-listener.ts index f16ce42..342d851 100644 --- a/frontend/src/scripts/commands/keyboard-listener.ts +++ b/frontend/src/scripts/commands/keyboard-listener.ts @@ -1,5 +1,6 @@ import { vec2 } from 'gl-matrix'; -import { CommandGenerator, MoveActionCommand } from 'shared'; +import { CommandGenerator, LeapActionCommand, MoveActionCommand } from 'shared'; +import { localCharacterPredictor } from '../helper/prediction/local-character-predictor'; export class KeyboardListener extends CommandGenerator { private keysDown: Set = new Set(); @@ -13,7 +14,14 @@ export class KeyboardListener extends CommandGenerator { } private keyDownListener = (event: KeyboardEvent) => { - this.keysDown.add(event.key.toLowerCase()); + const key = event.key.toLowerCase(); + // Space leaps (W / ArrowUp already cover walking up). Edge-triggered so a + // held key's auto-repeat doesn't spam leaps. + if ((key === ' ' || key === 'shift') && !this.keysDown.has(key)) { + const clientTimeMs = localCharacterPredictor.recordLeap(); + this.sendCommandToSubscribers(new LeapActionCommand(clientTimeMs)); + } + this.keysDown.add(key); this.generateCommands(); }; @@ -28,11 +36,7 @@ export class KeyboardListener extends CommandGenerator { }; private generateCommands() { - const up = ~~( - this.keysDown.has('w') || - this.keysDown.has('arrowup') || - this.keysDown.has(' ') - ); + const up = ~~(this.keysDown.has('w') || this.keysDown.has('arrowup')); const down = ~~(this.keysDown.has('s') || this.keysDown.has('arrowdown')); const left = ~~(this.keysDown.has('a') || this.keysDown.has('arrowleft')); const right = ~~(this.keysDown.has('d') || this.keysDown.has('arrowright')); @@ -42,7 +46,8 @@ export class KeyboardListener extends CommandGenerator { vec2.normalize(movement, movement); } - this.sendCommandToSubscribers(new MoveActionCommand(movement)); + const clientTimeMs = localCharacterPredictor.recordInput(movement); + this.sendCommandToSubscribers(new MoveActionCommand(movement, clientTimeMs)); } public destroy() { diff --git a/frontend/src/scripts/commands/touch-listener.ts b/frontend/src/scripts/commands/touch-listener.ts index 4ecb6bf..9dd2cfa 100644 --- a/frontend/src/scripts/commands/touch-listener.ts +++ b/frontend/src/scripts/commands/touch-listener.ts @@ -4,11 +4,13 @@ import { MoveActionCommand, last, PrimaryActionCommand, + LeapActionCommand, holdDurationToCharge, settings, } from 'shared'; import { Game } from '../game'; import { ChargeIndicator } from '../charge-indicator'; +import { localCharacterPredictor } from '../helper/prediction/local-character-predictor'; export class TouchListener extends CommandGenerator { private static readonly deadZone = 8; @@ -22,6 +24,7 @@ export class TouchListener extends CommandGenerator { private fireButton: HTMLElement; private fireStrengthRing: HTMLElement; + private leapButton: HTMLElement; private fireDownAt: number | null = null; @@ -46,7 +49,12 @@ export class TouchListener extends CommandGenerator { this.fireButton.addEventListener('touchstart', this.fireButtonDownListener); this.fireButton.addEventListener('touchend', this.fireButtonUpListener); + this.leapButton = document.createElement('div'); + this.leapButton.className = 'touch-button leap'; + this.leapButton.addEventListener('touchstart', this.leapButtonListener); + this.overlay.appendChild(this.fireButton); + this.overlay.appendChild(this.leapButton); target.addEventListener('touchstart', this.touchStartListener); target.addEventListener('touchmove', this.touchMoveListener); @@ -101,12 +109,17 @@ export class TouchListener extends CommandGenerator { vec2.set(delta, delta.x, -delta.y); if (deltaLength > TouchListener.deadZone) { const direction = vec2.normalize(delta, delta); - this.sendCommandToSubscribers(new MoveActionCommand(direction)); + this.sendMove(direction); } else { - this.sendCommandToSubscribers(new MoveActionCommand(vec2.create())); + this.sendMove(vec2.create()); } }; + private sendMove(direction: vec2) { + const clientTimeMs = localCharacterPredictor.recordInput(direction); + this.sendCommandToSubscribers(new MoveActionCommand(direction, clientTimeMs)); + } + private touchEndListener = (event: TouchEvent) => { event.preventDefault(); @@ -127,7 +140,7 @@ export class TouchListener extends CommandGenerator { } else if (event.touches.length === 0) { this.isJoystickActive = false; this.joystick.parentElement?.removeChild(this.joystick); - this.sendCommandToSubscribers(new MoveActionCommand(vec2.create())); + this.sendMove(vec2.create()); } }; @@ -136,6 +149,12 @@ export class TouchListener extends CommandGenerator { event.stopPropagation(); }; + private leapButtonListener = (event: TouchEvent) => { + this.swallowTouch(event); + const clientTimeMs = localCharacterPredictor.recordLeap(); + this.sendCommandToSubscribers(new LeapActionCommand(clientTimeMs)); + }; + private fireButtonDownListener = (event: TouchEvent) => { this.swallowTouch(event); this.fireDownAt = performance.now(); @@ -170,6 +189,9 @@ export class TouchListener extends CommandGenerator { if (!this.fireButton.parentElement) { this.overlay.appendChild(this.fireButton); } + if (!this.leapButton.parentElement) { + this.overlay.appendChild(this.leapButton); + } const character = this.game.gameObjects.player; if (character) { @@ -186,7 +208,9 @@ export class TouchListener extends CommandGenerator { this.fireButton.removeEventListener('touchstart', this.fireButtonDownListener); this.fireButton.removeEventListener('touchend', this.fireButtonUpListener); + this.leapButton.removeEventListener('touchstart', this.leapButtonListener); this.fireButton.parentElement?.removeChild(this.fireButton); + this.leapButton.parentElement?.removeChild(this.leapButton); } } diff --git a/frontend/src/scripts/feedback-hud.ts b/frontend/src/scripts/feedback-hud.ts index 801828b..316aecf 100644 --- a/frontend/src/scripts/feedback-hud.ts +++ b/frontend/src/scripts/feedback-hud.ts @@ -33,17 +33,19 @@ export abstract class FeedbackHud { setTimeout(() => element.parentElement?.removeChild(element), lifetimeMs); } - public static hitMarker() { + public static hitMarker(charge = 0) { const { x, y } = this.focusPoint(); const marker = document.createElement('div'); - marker.className = 'hitmarker'; + marker.className = + 'hitmarker' + (charge >= settings.chargedHitThreshold ? ' charged' : ''); marker.style.left = `${x}px`; marker.style.top = `${y}px`; this.addTransient(marker, 250); } - public static killConfirmed(victimName?: string, streak = 1) { + public static killConfirmed(victimName?: string, streak = 1, charge = 0) { const { killfeed } = this.ensureRoot(); + const charged = charge >= settings.chargedHitThreshold; const entry = document.createElement('div'); entry.className = 'kill-entry'; @@ -53,13 +55,13 @@ export abstract class FeedbackHud { const { x, y } = this.focusPoint(); const popup = document.createElement('div'); - popup.className = 'kill-popup'; + popup.className = 'kill-popup' + (charged ? ' charged' : ''); popup.innerHTML = `+${settings.playerKillPoint} +${settings.playerKillHealthReward}❤`; popup.style.left = `${x}px`; popup.style.top = `${y}px`; this.addTransient(popup, 1200); - const callout = this.streakName(streak); + const callout = this.streakName(streak) ?? (charged ? 'Charged Kill!' : undefined); if (callout) { const el = document.createElement('div'); el.className = 'streak-callout'; diff --git a/frontend/src/scripts/game.ts b/frontend/src/scripts/game.ts index 5afb42b..cad62cd 100644 --- a/frontend/src/scripts/game.ts +++ b/frontend/src/scripts/game.ts @@ -21,6 +21,7 @@ import { CommandExecutors, Command, settings, + InputAcknowledgement, } from 'shared'; import { io, Socket } from 'socket.io-client'; import { KeyboardListener } from './commands/keyboard-listener'; @@ -35,6 +36,7 @@ import { PlanetShape } from './shapes/planet-shape'; import { RenderCommand } from './commands/types/render'; import { StepCommand } from './commands/types/step'; import { serverTimeline } from './helper/server-timeline'; +import { localCharacterPredictor } from './helper/prediction/local-character-predictor'; import { Tutorial } from './tutorial'; import { Scoreboard } from './scoreboard'; @@ -54,6 +56,7 @@ export class Game extends CommandReceiver { private scoreboard = new Scoreboard(); private announcementText = document.createElement('h2'); private arrows: { [id: number]: HTMLElement } = {}; + private keystoneArrow?: HTMLElement; private socketReceiver!: CommandSocket; private tutorial!: Tutorial; @@ -76,9 +79,11 @@ export class Game extends CommandReceiver { this.socket?.close(); serverTimeline.reset(); + localCharacterPredictor.reset(); this.gameObjects = new GameObjectContainer(this); this.overlay.innerHTML = ''; this.arrows = {}; + this.keystoneArrow = undefined; this.isEnding = false; this.lastAnnouncementText = ''; this.overlay.appendChild(this.scoreboard.element); @@ -148,6 +153,12 @@ export class Game extends CommandReceiver { this.timeSinceLastAnnouncement = 0; }, [UpdateGameState.type]: (c: UpdateGameState) => (this.lastGameState = c), + [InputAcknowledgement.type]: (c: InputAcknowledgement) => + localCharacterPredictor.acknowledge( + c.clientTimeMs, + c.bodyVelocity, + c.lastLeapClientTimeMs, + ), [GameEndCommand.type]: () => (this.isEnding = true), [UpdateOtherPlayerDirections.type]: (c: UpdateOtherPlayerDirections) => (this.lastOtherPlayerDirections = c), @@ -325,6 +336,71 @@ export class Game extends CommandReceiver { this.handleOtherPlayerDirections(this.lastOtherPlayerDirections); } + this.handleKeystoneArrow(); + this.announcementText.innerHTML = this.lastAnnouncementText; } + + // Points an off-screen chevron toward the keystone "Heart" planet, tinted by + // who currently holds it, so the match's focal objective is always findable. + private handleKeystoneArrow() { + if (!this.renderer) { + return; + } + const keystone = this.gameObjects.planets.find((p) => p.isKeystone); + if (!keystone) { + if (this.keystoneArrow) { + this.keystoneArrow.style.display = 'none'; + } + return; + } + + if (!this.keystoneArrow) { + this.keystoneArrow = document.createElement('div'); + this.overlay.appendChild(this.keystoneArrow); + } + + const width = this.renderer.canvasSize.x; + const height = this.renderer.canvasSize.y; + const display = this.renderer.worldToDisplayCoordinates(keystone.center); + const margin = 48; + const onScreen = + display.x >= margin && + display.x <= width - margin && + display.y >= margin && + display.y <= height - margin; + + const control = Math.abs(keystone.ownership - 0.5); + const team = + control < settings.planetControlThreshold + ? 'neutral' + : keystone.ownership < 0.5 + ? 'blue' + : 'red'; + this.keystoneArrow.className = 'keystone-arrow ' + team; + + if (onScreen) { + this.keystoneArrow.style.display = 'none'; + return; + } + this.keystoneArrow.style.display = 'block'; + + const center = vec2.fromValues(width / 2, height / 2); + const dir = vec2.fromValues(display.x - center.x, display.y - center.y); + const angle = Math.atan2(dir.y, dir.x); + + const aspectRatio = width / height; + const directionRatio = dir.x / dir.y; + let deltaX: number, deltaY: number; + if (aspectRatio < Math.abs(directionRatio)) { + deltaX = (width / 2 - margin) * Math.sign(dir.x); + deltaY = deltaX / directionRatio; + } else { + deltaY = (height / 2 - margin) * Math.sign(dir.y); + deltaX = deltaY * directionRatio; + } + + const p = vec2.add(center, center, vec2.fromValues(deltaX, deltaY)); + this.keystoneArrow.style.transform = `translateX(${p.x}px) translateY(${p.y}px) translateX(-50%) translateY(-50%) rotate(${angle + Math.PI / 2}rad)`; + } } diff --git a/frontend/src/scripts/helper/prediction/client-character-world.ts b/frontend/src/scripts/helper/prediction/client-character-world.ts new file mode 100644 index 0000000..a08dbc5 --- /dev/null +++ b/frontend/src/scripts/helper/prediction/client-character-world.ts @@ -0,0 +1,138 @@ +import { vec2 } from 'gl-matrix'; +import { + CharacterWorld, + GroundSurface, + Id, + PhysicsBody, + planetDistance, + planetGravity, + resolveCircleMovement, +} from 'shared'; + +// What the predictor needs to know about a planet to collide and be pulled by +// it. The client reads this off its PlanetViews. +export interface PredictablePlanet { + id: Id; + vertices: Array; + center: vec2; + radius: number; + rotation: number; + rotationSpeed: number; +} + +// A planet collision/gravity surface whose rotation can be advanced during +// replay, so its outline turns in lockstep with the body the carry term moves — +// exactly as the server steps the planet before the character each tick. +class PlanetSurface implements GroundSurface { + public readonly canCollide = true; + public readonly isGround = true; + public readonly id: Id; + public center: vec2; + public angularVelocity: number; + private vertices: Array; + private radius: number; + private rotation = 0; + private cos = 1; + private sin = 0; + + constructor(planet: PredictablePlanet) { + this.id = planet.id; + this.center = planet.center; + this.vertices = planet.vertices; + this.radius = planet.radius; + this.angularVelocity = planet.rotationSpeed; + this.setRotation(planet.rotation); + } + + public sync(planet: PredictablePlanet) { + this.center = planet.center; + this.vertices = planet.vertices; + this.radius = planet.radius; + this.angularVelocity = planet.rotationSpeed; + this.setRotation(planet.rotation); + } + + private setRotation(rotation: number) { + this.rotation = rotation; + this.cos = Math.cos(rotation); + this.sin = Math.sin(rotation); + } + + public advance(deltaTimeInSeconds: number) { + this.setRotation(this.rotation + this.angularVelocity * deltaTimeInSeconds); + } + + public distance(target: vec2): number { + return planetDistance(target, this.vertices, this.center, this.cos, this.sin); + } + + public gravityAt(target: vec2): vec2 { + return planetGravity(this.center, this.radius, target); + } +} + +// The planets-only collision world the local predictor runs against. It holds +// persistent surfaces keyed by planet id (so a `currentPlanet` reference stays +// valid across frames) and never dispatches collision reactions — damage, +// scoring and the like are server-authoritative. +export class ClientCharacterWorld implements CharacterWorld { + private surfaces = new Map(); + private ordered: Array = []; + + // Refresh from the current PlanetViews. Far planets contribute zero gravity + // (the falloff clamps to 0 past maxGravityDistance) and never collide, so the + // whole set can be handed to every query without a range filter. Ordered by + // id so the (rare) two-surface contact picks a stable surface. + public sync(planets: Array) { + const seen = new Set(); + for (const planet of planets) { + seen.add(planet.id); + const existing = this.surfaces.get(planet.id); + if (existing) { + existing.sync(planet); + } else { + this.surfaces.set(planet.id, new PlanetSurface(planet)); + } + } + for (const id of [...this.surfaces.keys()]) { + if (!seen.has(id)) { + this.surfaces.delete(id); + } + } + this.ordered = [...this.surfaces.entries()] + .sort((a, b) => Number(a[0]) - Number(b[0])) + .map((e) => e[1]); + } + + // Advance every planet's collision frame by one replay substep, so surfaces + // and the carried body rotate together. The surfaces are re-synced to the + // newest snapshot rotation each frame (see sync), so the replay only ever + // steps forward from there. + public advance(deltaTimeInSeconds: number) { + for (const surface of this.ordered) { + surface.advance(deltaTimeInSeconds); + } + } + + public surfaceById(id: Id | undefined): GroundSurface | undefined { + return id == null ? undefined : this.surfaces.get(id); + } + + public idOf(surface: GroundSurface | undefined): Id | undefined { + return surface instanceof PlanetSurface ? surface.id : undefined; + } + + public groundsNear(): Array { + return this.ordered; + } + + public stepBody( + body: PhysicsBody, + deltaTimeInSeconds: number, + ): GroundSurface | undefined { + const { hitObject } = resolveCircleMovement(body, deltaTimeInSeconds, this.ordered); + return hitObject && (hitObject as GroundSurface).isGround + ? (hitObject as GroundSurface) + : undefined; + } +} diff --git a/frontend/src/scripts/helper/prediction/input-history.ts b/frontend/src/scripts/helper/prediction/input-history.ts new file mode 100644 index 0000000..3ec2604 --- /dev/null +++ b/frontend/src/scripts/helper/prediction/input-history.ts @@ -0,0 +1,47 @@ +import { vec2 } from 'gl-matrix'; + +interface InputSample { + timeMs: number; + direction: vec2; +} + +// Keep a little over a second of input — far more than any sane reconciliation +// window — so a brief stall (or a backgrounded tab catching up) can still be +// replayed, while old samples are pruned to bound memory. +const retainMs = 1500; + +// A timeline of the local player's movement directions in client-clock time. +// Each generated MoveActionCommand is stamped with the time this hands out, and +// the same sample is recorded here so the predictor replays exactly the input +// the server will eventually receive. Direction is piecewise-constant: the +// active direction at any instant is the most recent sample at or before it. +export class InputHistory { + private samples: Array = []; + + public record(direction: vec2, timeMs: number): void { + this.samples.push({ timeMs, direction: vec2.clone(direction) }); + + const cutoff = timeMs - retainMs; + while (this.samples.length > 1 && this.samples[1].timeMs <= cutoff) { + this.samples.shift(); + } + } + + // The held direction at `timeMs`: the latest sample at or before it, or zero + // before any input exists. + public directionAt(timeMs: number): vec2 { + let direction = vec2.create(); + for (const sample of this.samples) { + if (sample.timeMs <= timeMs) { + direction = sample.direction; + } else { + break; + } + } + return vec2.clone(direction); + } + + public reset(): void { + this.samples = []; + } +} diff --git a/frontend/src/scripts/helper/prediction/local-character-predictor.ts b/frontend/src/scripts/helper/prediction/local-character-predictor.ts new file mode 100644 index 0000000..c147477 --- /dev/null +++ b/frontend/src/scripts/helper/prediction/local-character-predictor.ts @@ -0,0 +1,328 @@ +import { vec2 } from 'gl-matrix'; +import { + Circle, + CharacterMovementState, + Id, + PhysicsBody, + settings, + stepCharacterMovement, + applyLeapImpulse, + tickPlanetDetachment, + feetRadius, + headRadius, +} from 'shared'; +import { ClientCharacterWorld, PredictablePlanet } from './client-character-world'; +import { InputHistory } from './input-history'; + +const stepMs = 1000 / 200; // match the server's 200 Hz fixed tick +const stepSeconds = 1 / 200; + +// Don't replay more than this far back: if the last acknowledged input is older +// (a stall, or a backgrounded tab catching up) snap to the authoritative pose +// instead of grinding through hundreds of steps. +const maxReplayMs = 300; + +// Render-side easing of the correction the reconciliation produces each frame, +// so a snapshot that disagrees with the prediction is smoothed out instead of +// popping. Short, so the local player still feels immediate. +const smoothSeconds = 0.06; + +// A correction bigger than this isn't prediction error — it's a respawn, +// teleport, or a server-side impulse (leap / slingshot / recoil / death throw) +// the predictor doesn't model. Snap to it rather than gliding across the gap. +const snapDistance = 250; + +const makeBody = (center: vec2, radius: number): PhysicsBody => ({ + center: vec2.clone(center), + radius, + velocity: vec2.create(), + lastNormal: vec2.fromValues(0, 1), + restitution: 0, +}); + +// Predicts the local player's character so it responds to input immediately, +// instead of lagging ~100 ms + RTT behind like the interpolated remote objects. +// Each frame it resets to the latest authoritative snapshot and replays the +// player's own un-acknowledged input through the SAME movement simulation the +// server runs (shared/stepCharacterMovement), then eases the rendered pose +// toward the result. Discrete server-side impulses it can't model show up as a +// large correction and snap rather than rubber-band. +export class LocalCharacterPredictor { + private readonly inputHistory = new InputHistory(); + private readonly world = new ClientCharacterWorld(); + + private authoritative?: { head: Circle; leftFoot: Circle; rightFoot: Circle }; + private lastAckClientTimeMs?: number; + // Wall-clock (client) time the latest authoritative snapshot was received. The + // replay predicts forward from HERE by the snapshot's age, so the local pose + // advances smoothly with real time between the 25 Hz snapshots. Anchoring to + // the last *acked input* time instead breaks when input is sent only on change + // (a held key sends nothing): that time freezes, the window pins to the + // maxReplayMs clamp, the replay displacement goes constant, and the pose + // stair-steps at the snapshot rate. + private authReceiptMs = 0; + // Authoritative launch momentum at the last snapshot — seeds each replay so a + // leap/slingshot/recoil flight is reproduced and continuously corrected. + private authoritativeBodyVelocity = vec2.create(); + // Wall-clock times the player issued a leap, replayed (with the impulse + // applied locally) so the launch is felt immediately, not after a round trip. + private leapHistory: Array = []; + // clientTimeMs of the last leap the server has folded into the streamed + // momentum. Leaps at or before this are already in authoritativeBodyVelocity; + // only newer ones are replayed, so a leap is never applied twice. + private lastLeapAckMs = -Infinity; + // Latest streamed shooting-strength, to gate predicted leaps as the server does. + private currentStrength = settings.playerMaxStrength; + + // Continuous state carried between replays (the snapshot carries only poses). + // The facing direction is NOT carried — it is re-derived from the pose each + // frame (see directionFromPose / simulate); only the latched planet and the + // time-since-surface persist. + private carriedPlanetId?: Id; + private carriedSecondsSinceSurface = 1; + + // The eased, rendered pose handed to the view. + private renderHead = new Circle(vec2.create(), headRadius); + private renderLeftFoot = new Circle(vec2.create(), feetRadius); + private renderRightFoot = new Circle(vec2.create(), feetRadius); + private hasRender = false; + + public get head(): Circle { + return this.renderHead; + } + public get leftFoot(): Circle { + return this.renderLeftFoot; + } + public get rightFoot(): Circle { + return this.renderRightFoot; + } + + // Stamp a movement command and record it for replay. Returns the wall-clock + // time the command should carry so the server can echo it back. + public recordInput(direction: vec2): number { + const timeMs = Math.round(performance.now()); + this.inputHistory.record(direction, timeMs); + return timeMs; + } + + public acknowledge( + clientTimeMs: number, + bodyVelocity: vec2, + lastLeapClientTimeMs: number, + ): void { + // Inputs only advance the acknowledgement forward; the launch momentum and + // leap boundary always adopt the latest authoritative values. + if (this.lastAckClientTimeMs === undefined || clientTimeMs > this.lastAckClientTimeMs) { + this.lastAckClientTimeMs = clientTimeMs; + } + vec2.set(this.authoritativeBodyVelocity, bodyVelocity[0], bodyVelocity[1]); + this.lastLeapAckMs = lastLeapClientTimeMs; + } + + public setAuthoritative(head: Circle, leftFoot: Circle, rightFoot: Circle): void { + this.authoritative = { head, leftFoot, rightFoot }; + this.authReceiptMs = Math.round(performance.now()); + } + + // The player pressed leap; remember when, so the replay applies the same + // impulse the server will. Recorded regardless of whether the server accepts + // it — a rejected leap (no strength/cooldown) self-corrects via the streamed + // authoritative momentum. + public recordLeap(): number { + const timeMs = Math.round(performance.now()); + this.leapHistory.push(timeMs); + const cutoff = timeMs - 1500; + while (this.leapHistory.length > 0 && this.leapHistory[0] <= cutoff) { + this.leapHistory.shift(); + } + return timeMs; + } + + public setStrength(strength: number): void { + this.currentStrength = strength; + } + + public reset(): void { + this.inputHistory.reset(); + this.leapHistory = []; + this.lastLeapAckMs = -Infinity; + this.authoritative = undefined; + this.lastAckClientTimeMs = undefined; + this.authReceiptMs = 0; + vec2.zero(this.authoritativeBodyVelocity); + this.currentStrength = settings.playerMaxStrength; + this.carriedPlanetId = undefined; + this.carriedSecondsSinceSurface = 1; + this.hasRender = false; + } + + public get canPredict(): boolean { + return this.authoritative !== undefined && this.lastAckClientTimeMs !== undefined; + } + + // During spawn-in and death the server freezes walking and only scales the + // body (CharacterPhysical.step returns early), so its head radius is below + // nominal. Predicting then would walk the body off a position the server is + // holding still — let interpolation show the animation instead. + private get isAnimatingInOrOut(): boolean { + return ( + this.authoritative !== undefined && + this.authoritative.head.radius < headRadius - 0.5 + ); + } + + // Run one frame of prediction. Returns true if it produced a rendered pose the + // caller should use (otherwise fall back to interpolation). `planets` is the + // current collision world; `frameSeconds` is the render delta. + public update(planets: Array, frameSeconds: number): boolean { + if (!this.canPredict || this.isAnimatingInOrOut) { + // Resume from the authoritative pose with a snap rather than gliding from + // a stale rendered one. + this.hasRender = false; + return false; + } + + this.world.sync(planets); + const predicted = this.simulate(); + + if (!this.hasRender) { + this.snapRenderTo(predicted); + this.hasRender = true; + } else { + this.easeRenderTo(predicted, frameSeconds); + } + return true; + } + + // The body's facing angle is encoded in the pose: each part is sprung toward + // center + R(direction)*offset and the head's offset points +y, so + // direction = atan2(head - center) - PI/2. Re-deriving it from the snapshot + // each frame (rather than carrying the previous frame's evolved value onto + // this past pose, re-evolved by a variable substep count) keeps the posture + // seed a pure function of the snapshot — carrying it fed a frame-rate-dependent + // loop that wobbled the rendered limbs. + private directionFromPose(head: Circle, leftFoot: Circle, rightFoot: Circle): number { + const cx = (head.center[0] + leftFoot.center[0] + rightFoot.center[0]) / 3; + const cy = (head.center[1] + leftFoot.center[1] + rightFoot.center[1]) / 3; + return Math.atan2(head.center[1] - cy, head.center[0] - cx) - Math.PI / 2; + } + + private simulate(): CharacterMovementState { + const auth = this.authoritative!; + const now = Math.round(performance.now()); + // Predict forward from the latest snapshot by its age, clamped so a stall + // (or a backgrounded tab catching up) snaps instead of grinding hundreds of + // steps. This advances with wall-clock time even while a held key sends no + // fresh input, so the pose no longer pins to the 25 Hz snapshot cadence. + const startMs = Math.max(this.authReceiptMs, now - maxReplayMs); + const windowMs = Math.max(0, now - startMs); + const steps = Math.floor(windowMs / stepMs); + const remainderSeconds = (windowMs - steps * stepMs) / 1000; + + const state: CharacterMovementState = { + head: makeBody(auth.head.center, auth.head.radius), + leftFoot: makeBody(auth.leftFoot.center, auth.leftFoot.radius), + rightFoot: makeBody(auth.rightFoot.center, auth.rightFoot.radius), + direction: this.directionFromPose(auth.head, auth.leftFoot, auth.rightFoot), + currentPlanet: this.world.surfaceById(this.carriedPlanetId), + secondsSinceOnSurface: this.carriedSecondsSinceSurface, + // Leaps before the replay window are already baked into this; leaps inside + // the window are re-applied below, so neither is double-counted. + bodyVelocity: vec2.clone(this.authoritativeBodyVelocity), + }; + + // The planet collision frames were synced (in update(), just before this) + // to the NEWEST snapshot's rotation — the same instant the authoritative + // body pose is from — so the body and the surface start the replay at the + // same phase. The loop below advances the surfaces FORWARD in lockstep with + // the body's carry from that shared phase, so no rewind is needed (and the + // persistent surfaces are re-synced next frame, so this never accumulates). + + const cooldownMs = settings.leapCooldownSeconds * 1000; + // Mirror the server: each accepted leap spends leapStrengthCost, so a burst + // of leaps in one replay window is gated by the running strength rather than + // a single up-front affordability check. + let availableStrength = this.currentStrength; + let lastLeapMs = -Infinity; + + let t = startMs; + for (let i = 0; i < steps; i++) { + const input = this.inputHistory.directionAt(t); + tickPlanetDetachment(state, stepSeconds); + stepCharacterMovement(state, this.world, input, stepSeconds); + this.world.advance(stepSeconds); + + // A leap issued during this step launches now (the next step injects the + // momentum), gated like the server: on a surface, off cooldown, with + // strength. applyLeapImpulse is a no-op off-surface. + for (const leapMs of this.leapHistory) { + if ( + leapMs >= t && + leapMs < t + stepMs && + // Only leaps the server hasn't yet folded into the seed, so a leap + // is never both seeded and replayed. + leapMs > this.lastLeapAckMs && + state.currentPlanet && + leapMs - lastLeapMs >= cooldownMs && + availableStrength >= settings.leapStrengthCost + ) { + applyLeapImpulse(state, this.inputHistory.directionAt(leapMs)); + availableStrength -= settings.leapStrengthCost; + lastLeapMs = leapMs; + } + } + + t += stepMs; + } + + // Final sub-tick of the leftover (< stepMs) so the predicted pose is a + // continuous function of the window length rather than advancing in 5 ms + // quanta — the floor() above would otherwise surface that as a per-frame + // wobble on top of the ~16.7 ms render cadence. + if (remainderSeconds > 0) { + tickPlanetDetachment(state, remainderSeconds); + stepCharacterMovement( + state, + this.world, + this.inputHistory.directionAt(now), + remainderSeconds, + ); + this.world.advance(remainderSeconds); + } + + this.carriedPlanetId = this.world.idOf(state.currentPlanet); + this.carriedSecondsSinceSurface = state.secondsSinceOnSurface; + + return state; + } + + private snapRenderTo(state: CharacterMovementState): void { + this.renderHead = new Circle(vec2.clone(state.head.center), state.head.radius); + this.renderLeftFoot = new Circle( + vec2.clone(state.leftFoot.center), + state.leftFoot.radius, + ); + this.renderRightFoot = new Circle( + vec2.clone(state.rightFoot.center), + state.rightFoot.radius, + ); + } + + private easeRenderTo(state: CharacterMovementState, frameSeconds: number): void { + const q = 1 - Math.exp(-frameSeconds / smoothSeconds); + this.easePart(this.renderHead, state.head, q); + this.easePart(this.renderLeftFoot, state.leftFoot, q); + this.easePart(this.renderRightFoot, state.rightFoot, q); + } + + private easePart(render: Circle, target: PhysicsBody, q: number): void { + if (vec2.distance(render.center, target.center) > snapDistance) { + vec2.copy(render.center, target.center); + } else { + vec2.lerp(render.center, render.center, target.center, q); + } + render.radius = target.radius; + } +} + +export const localCharacterPredictor = new LocalCharacterPredictor(); diff --git a/frontend/src/scripts/objects/game-object-container.ts b/frontend/src/scripts/objects/game-object-container.ts index 5abd5ef..81c1e2e 100644 --- a/frontend/src/scripts/objects/game-object-container.ts +++ b/frontend/src/scripts/objects/game-object-container.ts @@ -1,4 +1,5 @@ import { + Circle, Command, CommandExecutors, CommandReceiver, @@ -9,11 +10,15 @@ import { Id, PropertyUpdatesForObjects, RemoteCallsForObjects, + settings, + UpdatePropertyCommand, } from 'shared'; import { BeforeDestroyCommand } from '../commands/types/before-destroy'; import { StepCommand } from '../commands/types/step'; import { Game } from '../game'; import { serverTimeline } from '../helper/server-timeline'; +import { PredictablePlanet } from '../helper/prediction/client-character-world'; +import { localCharacterPredictor } from '../helper/prediction/local-character-predictor'; import { Camera } from './types/camera'; import { CharacterView } from './types/character-view'; import { PlanetView } from './types/planet-view'; @@ -28,6 +33,9 @@ export class GameObjectContainer extends CommandReceiver { this.player = c.character as CharacterView; this.player.isMainCharacter = true; this.addObject(this.player); + // Fresh character (first spawn or respawn at a far planet): drop any + // prediction state so it snaps to the new body instead of gliding across. + localCharacterPredictor.reset(); }, [CreateObjectsCommand.type]: (c: CreateObjectsCommand) => @@ -37,6 +45,18 @@ export class GameObjectContainer extends CommandReceiver { this.defaultCommandExecutor(c); if (this.player) { + // Override the interpolated pose of the local player with the predicted + // one so it responds to input immediately. Remote objects keep + // interpolating. A large correction (respawn / death) snaps inside the + // predictor rather than rubber-banding. + localCharacterPredictor.setStrength( + this.player.strengthFraction * settings.playerMaxStrength, + ); + if (localCharacterPredictor.update(this.predictablePlanets(), c.deltaTimeInSeconds)) { + this.player.head = localCharacterPredictor.head; + this.player.leftFoot = localCharacterPredictor.leftFoot; + this.player.rightFoot = localCharacterPredictor.rightFoot; + } this.camera.follow(this.player.position, c.deltaTimeInSeconds); } }, @@ -48,9 +68,12 @@ export class GameObjectContainer extends CommandReceiver { [PropertyUpdatesForObjects.type]: (c: PropertyUpdatesForObjects) => { serverTimeline.onSnapshot(c.timestamp); - c.updates.forEach((u) => - u.updates.forEach((au) => this.objects.get(u.id)?.handleCommand(au)), - ); + c.updates.forEach((u) => { + u.updates.forEach((au) => this.objects.get(u.id)?.handleCommand(au)); + if (this.player && u.id === this.player.id) { + this.feedPredictor(u.updates); + } + }); }, [DeleteObjectsCommand.type]: (c: DeleteObjectsCommand) => @@ -76,6 +99,34 @@ export class GameObjectContainer extends CommandReceiver { this.camera.handleCommand(c); } + // Hand the local player's raw authoritative pose to the predictor (the + // interpolated pose would already be ~100 ms stale). The three body parts + // arrive together in one snapshot. + private feedPredictor(updates: Array) { + let head: Circle | undefined; + let leftFoot: Circle | undefined; + let rightFoot: Circle | undefined; + for (const u of updates) { + if (u.propertyKey === 'head') head = u.propertyValue as Circle; + else if (u.propertyKey === 'leftFoot') leftFoot = u.propertyValue as Circle; + else if (u.propertyKey === 'rightFoot') rightFoot = u.propertyValue as Circle; + } + if (head && leftFoot && rightFoot) { + localCharacterPredictor.setAuthoritative(head, leftFoot, rightFoot); + } + } + + private predictablePlanets(): Array { + return this.planets.map((p) => ({ + id: p.id, + vertices: p.vertices, + center: p.center, + radius: p.radius, + rotation: p.predictionRotation, + rotationSpeed: p.predictionRotationSpeed, + })); + } + private addObject(object: GameObject) { this.objects.set(object.id, object); } diff --git a/frontend/src/scripts/objects/types/character-view.ts b/frontend/src/scripts/objects/types/character-view.ts index 65424d9..1806993 100644 --- a/frontend/src/scripts/objects/types/character-view.ts +++ b/frontend/src/scripts/objects/types/character-view.ts @@ -176,21 +176,32 @@ export class CharacterView extends CharacterBase { } } - public onHitConfirmed() { + public onHitConfirmed(charge = 0) { if (!this.isMainCharacter) { return; } - SoundHandler.play(Sounds.click, 0.4, 1.7); - FeedbackHud.hitMarker(); + // A charged hit lands lower and harder than a panic tap. + SoundHandler.play(Sounds.click, mix(0.4, 0.75, charge), mix(1.7, 1.05, charge)); + if (charge >= settings.chargedHitThreshold) { + VibrationHandler.vibrate(25); + } + FeedbackHud.hitMarker(charge); } - public onKillConfirmed(victimName?: string, streak = 1) { + public onKillConfirmed(victimName?: string, streak = 1, charge = 0) { if (!this.isMainCharacter) { return; } - SoundHandler.play(Sounds.click, 1, 0.7); - VibrationHandler.vibrate(60); - FeedbackHud.killConfirmed(victimName, streak); + SoundHandler.play(Sounds.click, 1, mix(0.7, 0.5, charge)); + VibrationHandler.vibrate(mix(60, 110, charge)); + FeedbackHud.killConfirmed(victimName, streak, charge); + } + + public onLeap() { + if (!this.isMainCharacter) { + return; + } + SoundHandler.play(Sounds.shoot, 0.3, 1.5); } private step({ deltaTimeInSeconds }: StepCommand): void { diff --git a/frontend/src/scripts/objects/types/planet-view.ts b/frontend/src/scripts/objects/types/planet-view.ts index a926237..06e6880 100644 --- a/frontend/src/scripts/objects/types/planet-view.ts +++ b/frontend/src/scripts/objects/types/planet-view.ts @@ -56,17 +56,39 @@ export class PlanetView extends PlanetBase { [UpdatePropertyCommand.type]: this.updateProperty.bind(this), }; - constructor(id: Id, vertices: Array, ownership: number) { - super(id, vertices); + constructor(id: Id, vertices: Array, ownership = 0.5, isKeystone = false) { + super(id, vertices, ownership, isKeystone); this.shape = new PlanetShape(vertices, ownership); this.shape.randomOffset = Random.getRandom(); this.ownershipProgress = document.createElement('div'); - this.ownershipProgress.className = 'ownership'; + this.ownershipProgress.className = 'ownership' + (isKeystone ? ' keystone' : ''); + } + + public setContested(contested: boolean) { + this.ownershipProgress.classList.toggle('contested', contested); + } + + private renderedRotation = 0; + private rotationSpeed = 0; + // Newest streamed rotation VALUE — the server-current angle at the latest + // snapshot — as opposed to renderedRotation, which the interpolator holds + // ~interpolationDelaySeconds in the PAST for drawing. The predictor seeds the + // local body from the same snapshot's pose, so it must collide against the + // planet at THIS (newest) phase and advance forward from it; using the drawn + // lagged angle biases the body off the surface by omega*delay*radius and + // wobbles it whenever the spin or the interpolator's rate cursor varies. + private latestRotation = 0; + public get predictionRotation(): number { + return this.latestRotation; + } + public get predictionRotationSpeed(): number { + return this.rotationSpeed; } private step({ deltaTimeInSeconds }: StepCommand): void { - this.shape.rotation = this.rotationInterpolator.getValue(deltaTimeInSeconds); + this.renderedRotation = this.rotationInterpolator.getValue(deltaTimeInSeconds); + this.shape.rotation = this.renderedRotation; this.shape.colorMixQ = this.ownership; if (this.flareIntensity > 0) { @@ -129,6 +151,8 @@ export class PlanetView extends PlanetBase { }: UpdatePropertyCommand): void { if (propertyKey === 'rotation') { this.rotationInterpolator.addFrame(propertyValue, rateOfChange); + this.latestRotation = propertyValue; + this.rotationSpeed = rateOfChange; } else { this.ownership = propertyValue; } @@ -170,7 +194,12 @@ export class PlanetView extends PlanetBase { private getGradient(): string { const sideBlue = this.ownership < 0.5; - const sidePercent = (Math.abs(this.ownership - 0.5) / 0.5) * 100; + // Keep the ring neutral through the same dead-band that gates scoring + // (settings.planetControlThreshold), so "the ring fills" and "this planet + // pays my team" happen together rather than disagreeing. + const control = Math.abs(this.ownership - 0.5); + const t = settings.planetControlThreshold; + const sidePercent = control <= t ? 0 : ((control - t) / (0.5 - t)) * 100; return sideBlue ? `conic-gradient( var(--bright-blue) ${sidePercent}%, diff --git a/frontend/src/scripts/shapes/planet-shape.ts b/frontend/src/scripts/shapes/planet-shape.ts index 7a3bee5..1d1ec9e 100644 --- a/frontend/src/scripts/shapes/planet-shape.ts +++ b/frontend/src/scripts/shapes/planet-shape.ts @@ -103,8 +103,8 @@ export class PlanetShape extends PolygonFactory(settings.planetEdgeCount, 0) { if (dist < minDistance) { minDistance = dist; color = mix(${colorToString(settings.bluePlanetColor)}, ${colorToString( - settings.redPlanetColor, - )}, planetColorMixQ[j]); + settings.redPlanetColor, + )}, planetColorMixQ[j]); } } @@ -129,11 +129,32 @@ export class PlanetShape extends PolygonFactory(settings.planetEdgeCount, 0) { public randomOffset = 0; public rotation = 0; + // Circle about the rotation centre (the vertex centroid, which is what the + // shader spins around — see planetMinDistance above). The vertices never + // change after construction, so cache it once. + private readonly cullCenter: vec2; + private readonly cullRadius: number; + constructor( public vertices: Array, public colorMixQ: number, ) { super(vertices); + + this.cullCenter = vertices.reduce( + (sum, v) => vec2.add(sum, sum, v), + vec2.create(), + ); + vec2.scale(this.cullCenter, this.cullCenter, 1 / vertices.length); + + this.cullRadius = vertices.reduce( + (max, v) => Math.max(max, vec2.distance(this.cullCenter, v)), + 0, + ); + } + + public minDistance(target: vec2): number { + return vec2.distance(target, this.cullCenter) - this.cullRadius; } protected getObjectToSerialize(transform2d: mat2d, _: number): any { diff --git a/frontend/src/scripts/tutorial.ts b/frontend/src/scripts/tutorial.ts index 64befb5..c0d1155 100644 --- a/frontend/src/scripts/tutorial.ts +++ b/frontend/src/scripts/tutorial.ts @@ -4,17 +4,19 @@ import { CommandExecutors, CommandReceiver, Id, + LeapActionCommand, MoveActionCommand, PrimaryActionCommand, } from 'shared'; import { GameObjectContainer } from './objects/game-object-container'; import { PlanetView } from './objects/types/planet-view'; -type StageTrigger = 'move' | 'shoot' | 'capture'; +type StageTrigger = 'move' | 'shoot' | 'leap' | 'capture'; const stages: ReadonlyArray<{ hint: string; clearsOn: StageTrigger }> = [ { hint: 'WASD / drag to walk', clearsOn: 'move' }, { hint: 'Click / tap to shoot', clearsOn: 'shoot' }, + { hint: 'Space / leap button to launch off a planet', clearsOn: 'leap' }, { hint: 'Stand on a planet to capture it', clearsOn: 'capture' }, ]; @@ -42,6 +44,11 @@ export class Tutorial extends CommandReceiver { this.advance(); } }, + [LeapActionCommand.type]: () => { + if (this.clearsOn() === 'leap') { + this.advance(); + } + }, }; constructor(overlay: HTMLElement) { diff --git a/shared/src/commands/types/actions/leap-action.ts b/shared/src/commands/types/actions/leap-action.ts new file mode 100644 index 0000000..0115e73 --- /dev/null +++ b/shared/src/commands/types/actions/leap-action.ts @@ -0,0 +1,19 @@ +import { serializable } from '../../../serialization/serializable'; +import { Command } from '../../command'; + +// Sent client -> server when the player triggers a leap (Space / leap button). +// The launch direction is derived server-side from the character's surface +// normal and current movement input. clientTimeMs is the client's wall-clock at +// the press, echoed back via InputAcknowledgement so the predictor knows which +// leaps the server has already folded into the streamed launch momentum and +// must not replay again. +@serializable +export class LeapActionCommand extends Command { + public constructor(public readonly clientTimeMs: number = 0) { + super(); + } + + public toArray(): Array { + return [this.clientTimeMs]; + } +} diff --git a/shared/src/commands/types/actions/move-action.ts b/shared/src/commands/types/actions/move-action.ts index 67674fe..117d3e3 100644 --- a/shared/src/commands/types/actions/move-action.ts +++ b/shared/src/commands/types/actions/move-action.ts @@ -4,11 +4,19 @@ import { Command } from '../../command'; @serializable export class MoveActionCommand extends Command { - public constructor(public readonly direction: vec2) { + // clientTimeMs is the client's wall-clock (integer ms, survives the + // serializer's toFixed(3)) when the input was generated. The server echoes + // the latest one back via InputAcknowledgement so the client knows how much + // of its input timeline is already baked into a snapshot and can replay the + // rest for prediction. Defaults to 0 for inputs the server itself synthesises. + public constructor( + public readonly direction: vec2, + public readonly clientTimeMs: number = 0, + ) { super(); } public toArray(): Array { - return [this.direction]; + return [this.direction, this.clientTimeMs]; } } diff --git a/shared/src/commands/types/input-acknowledgement.ts b/shared/src/commands/types/input-acknowledgement.ts new file mode 100644 index 0000000..3f488e7 --- /dev/null +++ b/shared/src/commands/types/input-acknowledgement.ts @@ -0,0 +1,28 @@ +import { vec2 } from 'gl-matrix'; +import { serializable } from '../../serialization/serializable'; +import { Command } from '../command'; + +// Sent server -> owning client only, alongside that client's own character +// snapshot. Carries the clientTimeMs of the most recent movement input the +// server had received when the snapshot was taken (so the client's predictor +// can reset to the snapshot and replay just the inputs the server hasn't seen +// yet) and the authoritative launch momentum (so the predictor reproduces a +// leap/slingshot/recoil flight rather than only snapping to it). See +// LocalCharacterPredictor. +@serializable +export class InputAcknowledgement extends Command { + public constructor( + public readonly clientTimeMs: number, + public readonly bodyVelocity: vec2, + // clientTimeMs of the most recent leap the server has received: any leap at + // or before it is already reflected in bodyVelocity, so the predictor must + // not replay it. + public readonly lastLeapClientTimeMs: number, + ) { + super(); + } + + public toArray(): Array { + return [this.clientTimeMs, this.bodyVelocity, this.lastLeapClientTimeMs]; + } +} diff --git a/shared/src/main.ts b/shared/src/main.ts index 949cc2d..d9af9ca 100644 --- a/shared/src/main.ts +++ b/shared/src/main.ts @@ -15,6 +15,7 @@ export * from './commands/command-executors'; export * from './commands/command-generator'; export * from './commands/types/actions/move-action'; export * from './commands/types/actions/primary-action'; +export * from './commands/types/actions/leap-action'; export * from './commands/types/actions/set-aspect-ratio-action'; export * from './helper/array'; export * from './helper/last'; @@ -46,3 +47,13 @@ export * from './objects/types/planet-base'; export * from './objects/types/projectile-base'; export * from './settings'; export * from './communication/transport-events'; +export * from './commands/types/input-acknowledgement'; +export * from './physics/sdf'; +export * from './physics/evaluate-sdf'; +export * from './physics/sdf-normal'; +export * from './physics/march-circle'; +export * from './physics/depenetrate-circle'; +export * from './physics/resolve-circle-movement'; +export * from './physics/planet-sdf'; +export * from './physics/interpolate-angles'; +export * from './physics/character-movement'; diff --git a/shared/src/objects/types/character-base.ts b/shared/src/objects/types/character-base.ts index e6414b8..b461127 100644 --- a/shared/src/objects/types/character-base.ts +++ b/shared/src/objects/types/character-base.ts @@ -28,9 +28,13 @@ export class CharacterBase extends GameObject { // eslint-disable-next-line @typescript-eslint/no-unused-vars public onShoot(strength: number) { } - public onHitConfirmed() { } + public onLeap() { } - public onKillConfirmed(victimName?: string, streak?: number) { } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + public onHitConfirmed(charge?: number) { } + + // eslint-disable-next-line @typescript-eslint/no-unused-vars + public onKillConfirmed(victimName?: string, streak?: number, charge?: number) { } public setHealth(health: number) { this.health = health; diff --git a/shared/src/objects/types/planet-base.ts b/shared/src/objects/types/planet-base.ts index ba90ff2..e3835e1 100644 --- a/shared/src/objects/types/planet-base.ts +++ b/shared/src/objects/types/planet-base.ts @@ -15,6 +15,7 @@ export class PlanetBase extends GameObject { id: Id, public readonly vertices: Array, public ownership: number = 0.5, + public readonly isKeystone: boolean = false, ) { super(id); this.center = vertices.reduce((sum, v) => vec2.add(sum, sum, v), vec2.create()); @@ -28,6 +29,8 @@ export class PlanetBase extends GameObject { public generatedPoints(value: number) {} // eslint-disable-next-line @typescript-eslint/no-unused-vars public onFlipped(team: CharacterTeam) {} + // eslint-disable-next-line @typescript-eslint/no-unused-vars + public setContested(contested: boolean) {} public static createPlanetVertices( center: vec2, @@ -54,6 +57,6 @@ export class PlanetBase extends GameObject { } public toArray(): Array { - return [this.id, this.vertices]; + return [this.id, this.vertices, this.ownership, this.isKeystone]; } } diff --git a/shared/src/physics/character-movement.ts b/shared/src/physics/character-movement.ts new file mode 100644 index 0000000..a5744b9 --- /dev/null +++ b/shared/src/physics/character-movement.ts @@ -0,0 +1,354 @@ +import { vec2 } from 'gl-matrix'; +import { settings } from '../settings'; +import { GroundSurface, PhysicsBody } from './sdf'; +import { interpolateAngles } from './interpolate-angles'; + +// Body layout, copied verbatim from CharacterPhysical so the predicted body +// matches the authoritative one to the bit. The head sits this far above the +// feet; offsets are measured from the centre of mass. +export const headRadius = 50; +export const feetRadius = 20; + +const desiredHeadOffset = vec2.fromValues(0, 55); +const desiredLeftFootOffset = vec2.fromValues(-20, 0); +const desiredRightFootOffset = vec2.fromValues(20, 0); +const centerOfMass = vec2.scale( + vec2.create(), + vec2.add( + vec2.create(), + vec2.add(vec2.create(), desiredHeadOffset, desiredLeftFootOffset), + desiredRightFootOffset, + ), + 1 / 3, +); +export const headOffset = vec2.subtract(vec2.create(), desiredHeadOffset, centerOfMass); +export const leftFootOffset = vec2.subtract( + vec2.create(), + desiredLeftFootOffset, + centerOfMass, +); +export const rightFootOffset = vec2.subtract( + vec2.create(), + desiredRightFootOffset, + centerOfMass, +); +export const boundRadius = (headRadius + feetRadius * 2) * 2; + +// The character's movement state: the three body parts plus the small amount of +// carried state the step reads and writes. Backend CharacterPhysical and the +// client predictor both expose this shape. +export interface CharacterMovementState { + readonly head: PhysicsBody; + readonly leftFoot: PhysicsBody; + readonly rightFoot: PhysicsBody; + direction: number; + currentPlanet: GroundSurface | undefined; + secondsSinceOnSurface: number; + // Persistent launch momentum (leap / slingshot / recoil / death throw). + // Walking rebuilds and zeroes each body part's velocity every tick, + // so anything that should carry accumulates here, is injected into the parts + // before they step, and decays by friction. Stays zero for ordinary walking. + // The client predictor leaves this zero and relies on the reconciliation snap + // to follow server-side impulses, but the field is here so the server can + // delegate its full movement to stepCharacterMovement unchanged. + bodyVelocity: vec2; +} + +// The collision/gravity world the movement queries. The server backs this with +// its spatial container (planets + dynamics, dispatching collision reactions); +// the client backs it with the planets it knows about, dispatching nothing. +export interface CharacterWorld { + // Planets within `radius` of `center` that exert gravity / can be stood on. + groundsNear(center: vec2, radius: number): Array; + // Resolve one body part's motion this tick; returns the ground it landed on. + stepBody(body: PhysicsBody, deltaTimeInSeconds: number): GroundSurface | undefined; +} + +const applyForce = (body: PhysicsBody, force: vec2, deltaTimeInSeconds: number) => { + vec2.add( + body.velocity, + body.velocity, + vec2.scale(vec2.create(), force, deltaTimeInSeconds), + ); +}; + +// ((head + leftFoot) + rightFoot) / 3, in the exact association the server uses +// everywhere it reads the character centre — do not reassociate. +export const characterCenter = (state: CharacterMovementState): vec2 => { + const center = vec2.add(vec2.create(), state.head.center, state.leftFoot.center); + vec2.add(center, center, state.rightFoot.center); + return vec2.scale(center, center, 1 / 3); +}; + +const setDirection = (state: CharacterMovementState, direction: vec2) => { + state.direction = interpolateAngles( + state.direction, + Math.atan2(direction[1], direction[0]) + Math.PI / 2, + 0.2, + ); +}; + +const springMove = ( + state: CharacterMovementState, + body: PhysicsBody, + center: vec2, + offset: vec2, + stiffness: number, +) => { + const desiredPosition = vec2.add(vec2.create(), center, offset); + vec2.rotate(desiredPosition, desiredPosition, center, state.direction); + const positionDelta = vec2.subtract(vec2.create(), desiredPosition, body.center); + // First-order velocity relaxation toward the desired posture position, added + // to the gravity/movement velocity already accumulated this tick. The dt + // arrives later when the body integrates velocity, so the per-tick + // displacement is positionDelta * stiffness * dt. + vec2.scaleAndAdd(body.velocity, body.velocity, positionDelta, stiffness); +}; + +const keepPosture = (state: CharacterMovementState) => { + const center = characterCenter(state); + springMove(state, state.leftFoot, center, leftFootOffset, settings.postureFeetStiffness); + springMove( + state, + state.rightFoot, + center, + rightFootOffset, + settings.postureFeetStiffness, + ); + springMove(state, state.head, center, headOffset, settings.postureHeadStiffness); +}; + +// While standing on a planet, ride its spin: rigidly rotate the whole body +// about the planet centre by the same per-tick angle the collision SDF turns +// by (negative, matching R(-rotation)), so the player is carried with the +// surface instead of sliding across it. +const carryWithRotatingPlanet = ( + state: CharacterMovementState, + deltaTimeInSeconds: number, +) => { + const planet = state.currentPlanet; + if (!planet) { + return; + } + const angle = -planet.angularVelocity * deltaTimeInSeconds; + const center = planet.center; + state.head.center = vec2.rotate(vec2.create(), state.head.center, center, angle); + state.leftFoot.center = vec2.rotate(vec2.create(), state.leftFoot.center, center, angle); + state.rightFoot.center = vec2.rotate( + vec2.create(), + state.rightFoot.center, + center, + angle, + ); +}; + +// Launch off the current surface: directed by the foot contact normals plus +// the movement input, slingshotted by the planet's spin. Mutates bodyVelocity +// (which the next tick injects into the body) and detaches. Shared so the +// server's leap() and the client's prediction apply the exact same impulse. +// The caller does the gating (strength, cooldown, alive); this is a no-op when +// not on a surface. +export const applyLeapImpulse = ( + state: CharacterMovementState, + moveDirection: vec2, +) => { + const planet = state.currentPlanet; + if (!planet) { + return; + } + + const up = vec2.add( + vec2.create(), + state.leftFoot.lastNormal, + state.rightFoot.lastNormal, + ); + if (vec2.length(up) === 0) { + vec2.set(up, 0, 1); + } else { + vec2.normalize(up, up); + } + + const launch = vec2.scale(vec2.create(), up, settings.leapUpBias); + if (vec2.length(moveDirection) > 0) { + vec2.scaleAndAdd( + launch, + launch, + vec2.normalize(vec2.create(), moveDirection), + settings.leapMoveBias, + ); + } + vec2.normalize(launch, launch); + vec2.scaleAndAdd(state.bodyVelocity, state.bodyVelocity, launch, settings.leapSpeed); + + // Slingshot: add the tangential velocity of the spinning surface under the + // body (the same motion carryWithRotatingPlanet imparts). + const center = characterCenter(state); + const omega = planet.angularVelocity; + const surfaceVelocity = vec2.fromValues( + omega * (center[1] - planet.center[1]), + -omega * (center[0] - planet.center[0]), + ); + vec2.scaleAndAdd( + state.bodyVelocity, + state.bodyVelocity, + surfaceVelocity, + settings.slingshotScale, + ); + + state.currentPlanet = undefined; + state.secondsSinceOnSurface = settings.planetDetachmentSeconds; +}; + +// Time-based detachment: a grounded body that hasn't touched a surface for a +// while floats free. Kept as its own step because on the server it runs before +// the ownership/scoring blocks; the client calls it at the head of each tick. +export const tickPlanetDetachment = ( + state: CharacterMovementState, + deltaTimeInSeconds: number, +) => { + if ((state.secondsSinceOnSurface += deltaTimeInSeconds) > settings.planetDetachmentSeconds) { + state.currentPlanet = undefined; + } +}; + +// Inject the persistent launch momentum onto every body part right before they +// step, so the whole body translates rigidly without disturbing the posture +// springs (which only set up relative offsets). No-op while walking. +const applyBodyMomentum = (state: CharacterMovementState) => { + if (vec2.squaredLength(state.bodyVelocity) === 0) { + return; + } + vec2.add(state.leftFoot.velocity, state.leftFoot.velocity, state.bodyVelocity); + vec2.add(state.rightFoot.velocity, state.rightFoot.velocity, state.bodyVelocity); + vec2.add(state.head.velocity, state.head.velocity, state.bodyVelocity); +}; + +// Decay one launch-momentum vector in place by one tick. Stiff on the ground +// (skid to a stop), gentle in the air so a leap or slingshot still carries +// across the gaps. The gentle exponential only asymptotes, though, so on top of +// it a constant deceleration brakes the momentum to a definite stop in a couple +// of seconds instead of leaving a 15+ second drift, and a hard cap stops stacked +// impulses (rapid recoil, a leap into a slingshot) from building without bound. +// Shared so the living body, the client predictor, and the ragdoll corpse all +// brake identically. +export const decayMomentum = ( + bodyVelocity: vec2, + onGround: boolean, + deltaTimeInSeconds: number, +) => { + const speed = vec2.length(bodyVelocity); + if (speed === 0) { + return; + } + const friction = onGround + ? settings.groundMomentumFriction + : settings.airMomentumFriction; + const target = Math.min( + speed * Math.exp(-friction * deltaTimeInSeconds) - + settings.momentumStopDeceleration * deltaTimeInSeconds, + settings.maxBodyMomentum, + ); + if (target <= 1) { + vec2.zero(bodyVelocity); + } else { + vec2.scale(bodyVelocity, bodyVelocity, target / speed); + } +}; + +const decayBodyMomentum = ( + state: CharacterMovementState, + deltaTimeInSeconds: number, +) => { + decayMomentum(state.bodyVelocity, !!state.currentPlanet, deltaTimeInSeconds); +}; + +const sumGravity = (grounds: Array, position: vec2): vec2 => + grounds.reduce( + (sum, ground) => vec2.add(sum, sum, ground.gravityAt(position)), + vec2.create(), + ); + +const latchGround = ( + state: CharacterMovementState, + ground: GroundSurface | undefined, +) => { + if (ground) { + state.secondsSinceOnSurface = 0; + state.currentPlanet = ground; + } +}; + +// One tick of character movement. This is the exact movement block of the +// authoritative CharacterPhysical.step (gravity gather → movement force → +// on/off-planet branch → posture → step the three body parts), with all +// server-only concerns (scoring, health, shooting, spawn/death animation, +// ownership) left to the caller. `inputDirection` is the already-averaged, +// already-normalized movement direction for this tick and is consumed in place. +export const stepCharacterMovement = ( + state: CharacterMovementState, + world: CharacterWorld, + inputDirection: vec2, + deltaTimeInSeconds: number, +) => { + const center = characterCenter(state); + const grounds = world.groundsNear(center, boundRadius + settings.maxGravityDistance); + + const movementForce = vec2.scale(inputDirection, inputDirection, settings.maxAcceleration); + applyForce(state.leftFoot, movementForce, deltaTimeInSeconds); + applyForce(state.rightFoot, movementForce, deltaTimeInSeconds); + + if (!state.currentPlanet) { + const leftFootGravity = sumGravity(grounds, state.leftFoot.center); + const rightFootGravity = sumGravity(grounds, state.rightFoot.center); + + applyForce(state.leftFoot, leftFootGravity, deltaTimeInSeconds); + applyForce(state.rightFoot, rightFootGravity, deltaTimeInSeconds); + + const sumForce = vec2.subtract(vec2.create(), leftFootGravity, movementForce); + setDirection(state, vec2.length(sumForce) === 0 ? vec2.fromValues(0, -1) : sumForce); + } else { + carryWithRotatingPlanet(state, deltaTimeInSeconds); + + const leftFootGravity = state.currentPlanet.gravityAt(state.leftFoot.center); + const rightFootGravity = state.currentPlanet.gravityAt(state.rightFoot.center); + + vec2.add(leftFootGravity, leftFootGravity, rightFootGravity); + const gravity = vec2.scale(leftFootGravity, leftFootGravity, 0.5); + + if ( + vec2.dot(movementForce, gravity) < + -vec2.length(movementForce) * settings.climbDotThreshold + ) { + vec2.scale(gravity, gravity, settings.climbGravityScale); + } + + const scaledLeftFootGravity = vec2.scale( + vec2.create(), + state.leftFoot.lastNormal, + vec2.dot(state.leftFoot.lastNormal, gravity), + ); + applyForce(state.leftFoot, scaledLeftFootGravity, deltaTimeInSeconds); + + const scaledRightFootGravity = vec2.scale( + vec2.create(), + state.rightFoot.lastNormal, + vec2.dot(state.rightFoot.lastNormal, gravity), + ); + applyForce(state.rightFoot, scaledRightFootGravity, deltaTimeInSeconds); + + if (vec2.length(gravity) <= settings.planetDetachmentForceThreshold) { + state.currentPlanet = undefined; + } + setDirection(state, gravity); + } + + keepPosture(state); + + applyBodyMomentum(state); + + latchGround(state, world.stepBody(state.leftFoot, deltaTimeInSeconds)); + latchGround(state, world.stepBody(state.rightFoot, deltaTimeInSeconds)); + latchGround(state, world.stepBody(state.head, deltaTimeInSeconds)); + + decayBodyMomentum(state, deltaTimeInSeconds); +}; diff --git a/shared/src/physics/depenetrate-circle.ts b/shared/src/physics/depenetrate-circle.ts new file mode 100644 index 0000000..7232f73 --- /dev/null +++ b/shared/src/physics/depenetrate-circle.ts @@ -0,0 +1,36 @@ +import { vec2 } from 'gl-matrix'; +import { PhysicsBody, Sdf } from './sdf'; +import { evaluateSdf } from './evaluate-sdf'; +import { sdfNormal } from './sdf-normal'; + +// Planet collision outlines rotate (see PlanetPhysical.distance), so a surface +// can sweep into a circle that hasn't itself moved. marchCircle assumes an +// overlap-free start — beginning inside, it registers a zero-distance hit and +// never moves again — so any overlap must be resolved here, before marching. +// Iterating handles concave spots, where leaving one face pushes into another; +// if no overlap-free position exists nearby (a crevice narrower than the +// circle), it gives up and leaves the rest to a later tick. +export const depenetrateCircle = ( + body: PhysicsBody, + possibleIntersectors: Array, +) => { + for (let i = 0; i < 4; i++) { + const distance = evaluateSdf(body.center, possibleIntersectors); + if (distance >= body.radius) { + return; + } + + const normal = sdfNormal(body.center, possibleIntersectors); + if (vec2.squaredLength(normal) === 0) { + return; + } + + vec2.copy(body.lastNormal, normal); + body.center = vec2.scaleAndAdd( + vec2.create(), + body.center, + normal, + body.radius - distance + 0.01, + ); + } +}; diff --git a/shared/src/physics/evaluate-sdf.ts b/shared/src/physics/evaluate-sdf.ts new file mode 100644 index 0000000..f3c60cf --- /dev/null +++ b/shared/src/physics/evaluate-sdf.ts @@ -0,0 +1,7 @@ +import { vec2 } from 'gl-matrix'; +import { Sdf } from './sdf'; + +export const evaluateSdf = (target: vec2, objects: Array) => + objects + .filter((i) => i.canCollide) + .reduce((min, i) => (min = Math.min(min, i.distance(target))), 1000000); diff --git a/shared/src/physics/interpolate-angles.ts b/shared/src/physics/interpolate-angles.ts new file mode 100644 index 0000000..1fb46d6 --- /dev/null +++ b/shared/src/physics/interpolate-angles.ts @@ -0,0 +1,6 @@ +export const interpolateAngles = (from: number, to: number, q: number) => { + const max = Math.PI * 2; + const possibleDistance = (to - from) % max; + const shorterDistance = ((2 * possibleDistance) % max) - possibleDistance; + return from + shorterDistance * q; +}; diff --git a/shared/src/physics/march-circle.ts b/shared/src/physics/march-circle.ts new file mode 100644 index 0000000..0a8f0c8 --- /dev/null +++ b/shared/src/physics/march-circle.ts @@ -0,0 +1,80 @@ +import { vec2 } from 'gl-matrix'; +import { PhysicsBody, Sdf } from './sdf'; +import { evaluateSdf } from './evaluate-sdf'; +import { sdfNormal } from './sdf-normal'; + +export interface MarchResult { + hitSurface: boolean; + normal?: vec2; + hitObject?: Sdf; +} + +// Raymarch a circle by `delta`, stopping at the first surface it would overlap. +// Extracted verbatim from the backend's move-circle so server and client +// resolve motion identically. The collision *reaction* is no longer dispatched +// here: on a real (non-ignored) hit, `onHit(intersecting)` is invoked at the +// exact point the backend used to dispatch its ReactToCollisionCommands, and +// the backend wrapper supplies that callback. The client passes none. +export const marchCircle = ( + body: PhysicsBody, + delta: vec2, + possibleIntersectors: Array, + ignoreCollision = false, + onHit?: (intersecting: Sdf) => void, +): MarchResult => { + const direction = vec2.clone(delta); + + if (vec2.length(delta) > 0) { + vec2.normalize(direction, direction); + } + + const deltaLength = vec2.length(delta); + let travelled = 0; + const rayEnd = vec2.create(); + let prevMinDistance = 0; + while (travelled < deltaLength) { + travelled += prevMinDistance; + vec2.add( + rayEnd, + body.center, + vec2.scale(vec2.create(), direction, Math.min(travelled, deltaLength)), + ); + + const minDistance = evaluateSdf(rayEnd, possibleIntersectors); + + if (minDistance < body.radius) { + const intersecting = possibleIntersectors.find( + (i) => i.distance(rayEnd) <= body.radius, + )!; + + if (ignoreCollision) { + body.center = vec2.add(body.center, body.center, delta); + } else { + onHit?.(intersecting); + } + + vec2.add( + rayEnd, + body.center, + vec2.scale(vec2.create(), direction, travelled - prevMinDistance), + ); + + vec2.copy(body.center, rayEnd); + + const normal = sdfNormal(rayEnd, [intersecting]); + return { + hitSurface: true, + normal, + hitObject: intersecting, + }; + } + + prevMinDistance = minDistance; + } + + vec2.add(body.center, body.center, delta); + + return { + hitSurface: false, + }; +}; diff --git a/shared/src/physics/planet-sdf.ts b/shared/src/physics/planet-sdf.ts new file mode 100644 index 0000000..24af49d --- /dev/null +++ b/shared/src/physics/planet-sdf.ts @@ -0,0 +1,80 @@ +import { vec2 } from 'gl-matrix'; +import { clamp, clamp01 } from '../helper/clamp'; +import { settings } from '../settings'; + +// Rotate a world point into the planet's own frame: R(-rotation) about the +// centre, matching the shader's localTarget = center + R(rotation)*(target-center). +// cos/sin are passed in so the server can keep memoising them per angle. +export const toPlanetLocalFrame = ( + target: vec2, + center: vec2, + cos: number, + sin: number, +): vec2 => { + const dx = target[0] - center[0]; + const dy = target[1] - center[1]; + return vec2.fromValues( + center[0] + cos * dx - sin * dy, + center[1] + sin * dx + cos * dy, + ); +}; + +// Signed distance to the (smooth, noise-free) planet polygon, evaluated in the +// planet's rotating frame. Extracted verbatim from PlanetPhysical.distance so +// the client collides against the exact same outline the server does. Indexed +// vector access keeps it independent of the .x/.y prototype plugin. +export const planetDistance = ( + target: vec2, + vertices: Array, + center: vec2, + cos: number, + sin: number, +): number => { + const local = toPlanetLocalFrame(target, center, cos, sin); + + const startEnd = vertices[0]; + let vb = startEnd; + + let d = vec2.dist(local, vb); + let sign = 1; + + for (let i = 1; i <= vertices.length; i++) { + const va = vb; + vb = i === vertices.length ? startEnd : vertices[i]; + const targetFromDelta = vec2.subtract(vec2.create(), local, va); + const toFromDelta = vec2.subtract(vec2.create(), vb, va); + const h = clamp01( + vec2.dot(targetFromDelta, toFromDelta) / vec2.squaredLength(toFromDelta), + ); + + const ds = vec2.fromValues( + vec2.dist(targetFromDelta, vec2.scale(vec2.create(), toFromDelta, h)), + toFromDelta[0] * targetFromDelta[1] - toFromDelta[1] * targetFromDelta[0], + ); + + if ( + (local[1] >= va[1] && local[1] < vb[1] && ds[1] > 0) || + (local[1] < va[1] && local[1] >= vb[1] && ds[1] <= 0) + ) { + sign *= -1; + } + + d = Math.min(d, ds[0]); + } + + return sign * d; +}; + +// Gravity a planet exerts at a world position. Verbatim from +// PlanetPhysical.getForce. +export const planetGravity = (center: vec2, radius: number, position: vec2): vec2 => { + const diff = vec2.subtract(vec2.create(), center, position); + const dist = Math.max(settings.minGravityDistance, vec2.length(diff) - radius); + vec2.normalize(diff, diff); + const scale = clamp( + settings.maxGravityQ * ((settings.maxGravityDistance / dist) ** 1.5 - 1), + 0, + settings.maxGravityStrength, + ); + return vec2.scale(diff, diff, scale); +}; diff --git a/shared/src/physics/resolve-circle-movement.ts b/shared/src/physics/resolve-circle-movement.ts new file mode 100644 index 0000000..47f0c1c --- /dev/null +++ b/shared/src/physics/resolve-circle-movement.ts @@ -0,0 +1,58 @@ +import { vec2 } from 'gl-matrix'; +import { PhysicsBody, Sdf } from './sdf'; +import { depenetrateCircle } from './depenetrate-circle'; +import { marchCircle } from './march-circle'; + +// The position-resolution half of the backend's CirclePhysical.stepManually, +// extracted so server and client integrate a body identically. The caller is +// responsible for the broadphase (gathering `possibleIntersectors`, including +// the swept-radius bump) because that depends on each side's spatial structure; +// everything from depenetration onward lives here. +// +// `onHit` is threaded through to marchCircle so the backend can dispatch its +// collision reactions at the same points as before (including the second, +// post-bounce slide march); the client passes none. Velocity is reset to zero +// at the end — the character re-applies all forces from zero every tick, so a +// body that retained velocity would double-integrate and diverge. +export const resolveCircleMovement = ( + body: PhysicsBody, + deltaTimeInSeconds: number, + possibleIntersectors: Array, + onHit?: (intersecting: Sdf) => void, +): { hitObject?: Sdf; velocity: vec2 } => { + let delta = vec2.scale(vec2.create(), body.velocity, deltaTimeInSeconds); + + depenetrateCircle(body, possibleIntersectors); + + const { normal, hitSurface, hitObject } = marchCircle( + body, + delta, + possibleIntersectors, + false, + onHit, + ); + + if (hitSurface) { + vec2.copy(body.lastNormal, normal!); + + vec2.subtract( + body.velocity, + body.velocity, + vec2.scale( + normal!, + normal!, + (1 + body.restitution) * vec2.dot(normal!, body.velocity), + ), + ); + + if (vec2.length(body.velocity) > 50) { + delta = vec2.scale(vec2.create(), body.velocity, deltaTimeInSeconds); + marchCircle(body, delta, possibleIntersectors, false, onHit); + } + } + + const lastVelocity = vec2.clone(body.velocity); + vec2.zero(body.velocity); + + return { hitObject, velocity: lastVelocity }; +}; diff --git a/shared/src/physics/sdf-normal.ts b/shared/src/physics/sdf-normal.ts new file mode 100644 index 0000000..507a8eb --- /dev/null +++ b/shared/src/physics/sdf-normal.ts @@ -0,0 +1,19 @@ +import { vec2 } from 'gl-matrix'; +import { Sdf } from './sdf'; +import { evaluateSdf } from './evaluate-sdf'; + +// Central-difference gradient of the combined SDF. Can be zero where the +// samples cancel out (e.g. on the medial axis of a shape) — callers must +// handle that case. Uses indexed access so it never depends on the vec2 .x/.y +// prototype plugin (identical numerically: .x === [0]). +export const sdfNormal = (target: vec2, objects: Array): vec2 => { + const dx = + evaluateSdf(vec2.fromValues(target[0] + 0.01, target[1]), objects) - + evaluateSdf(vec2.fromValues(target[0] - 0.01, target[1]), objects); + const dy = + evaluateSdf(vec2.fromValues(target[0], target[1] + 0.01), objects) - + evaluateSdf(vec2.fromValues(target[0], target[1] - 0.01), objects); + + const normal = vec2.fromValues(dx, dy); + return vec2.squaredLength(normal) > 0 ? vec2.normalize(normal, normal) : normal; +}; diff --git a/shared/src/physics/sdf.ts b/shared/src/physics/sdf.ts new file mode 100644 index 0000000..38bb74c --- /dev/null +++ b/shared/src/physics/sdf.ts @@ -0,0 +1,31 @@ +import { vec2 } from 'gl-matrix'; + +// Minimal signed-distance collider the geometry functions need. Backend +// Physicals and the client's planet surfaces both satisfy this structurally. +export interface Sdf { + readonly canCollide: boolean; + // Planets set this true so a body landing on one can latch it as ground; + // everything else leaves it falsy. Replaces the server's + // `instanceof PlanetPhysical` check with a structural flag both sides share. + readonly isGround?: boolean; + distance(target: vec2): number; +} + +// A movable circle the geometry resolves in place. Backend CirclePhysical and +// the client predictor's plain bodies both satisfy this. +export interface PhysicsBody { + center: vec2; + radius: number; + velocity: vec2; + lastNormal: vec2; + readonly restitution: number; +} + +// A planet-like surface: collidable, exerts gravity, and spins. Drives the +// character's on-surface movement branch. +export interface GroundSurface extends Sdf { + readonly isGround: true; + readonly center: vec2; + readonly angularVelocity: number; + gravityAt(target: vec2): vec2; +} diff --git a/shared/src/settings.ts b/shared/src/settings.ts index 66aa929..61041a5 100644 --- a/shared/src/settings.ts +++ b/shared/src/settings.ts @@ -33,7 +33,11 @@ export const settings = { maxGravityDistance: 800, minGravityDistance: 1, maxGravityQ: 5000, - planetControlThreshold: 0.2, + // Half-width of the neutral dead-band around 50% ownership. A planet only + // counts as captured (team(), point generation, flip) once |ownership-0.5| + // exceeds this, and the rendered ownership ring stays neutral until the same + // point — so what you see matches what scores. + planetControlThreshold: 0.12, playerMaxHealth: 100, maxGravityStrength: 50000, planetMinReferenceRadius: 150, @@ -141,4 +145,65 @@ export const settings = { lampFlareDecaySeconds: 0.6, maxConcurrentFlipFlares: 3, announcementVisibleSeconds: 2, + + chargedHitThreshold: 0.6, + + // Projectiles fall through planetary gravity like a free-falling character, + // so slower (charged) shots arc. Scale kept tiny: near a surface gravity is + // maxGravityStrength=50000, which at full strength would corkscrew a shot into + // the planet — 0.04 gives a readable bend instead. + projectileGravityEnabled: true, + projectileGravityScale: 0.04, + + // Speed the corpse is flung at along the killing shot's direction, lerped by + // that shot's charge. Added to whatever momentum the victim already carried. + deathImpulseMin: 280, + deathImpulseMax: 1300, + + // A planet's net team head-count drives a single capture step per tick; the + // lead multiplier is capped so a zerg can't flip instantly. Equal head-counts + // freeze the planet (contested) instead of silently cancelling. + maxContestLeadMultiplier: 2, + + // Persistent body momentum decays per second by these exponents. Airborne is + // near-frictionless so leaps and slingshots carry across the gaps; grounded is + // stiff so you skid to a stop on landing rather than sliding forever. + airMomentumFriction: 0.4, + + groundMomentumFriction: 7, + + // On top of the exponential frictions above, a constant deceleration (u/s^2) + // applied to body momentum. The exponential alone only asymptotes toward zero, + // so a fast launch keeps a slow tail for 15+ seconds — it reads as drifting + // forever with nothing slowing you. This constant brake brings the momentum to + // a definite stop in a couple of seconds, while the gentle exponential still + // lets the launch cover its distance first. + + momentumStopDeceleration: 400, + // Hard ceiling (u/s) on body momentum, so stacked impulses — rapid charged-shot + // recoil, or a leap chained into a spin slingshot — can't build speed without + // bound. Kept above the overcharge fling (1700) so single launches survive. + + maxBodyMomentum: 2000, + + // Leap: a charged-cost launch off a surface, paid from the shared shooting + // strength pool so it trades against firepower. + leapStrengthCost: 32, + + leapSpeed: 1350, + leapUpBias: 1, + leapMoveBias: 0.65, + leapCooldownSeconds: 0.35, + + // Fraction of the planet's tangential surface velocity you keep when you leave + // it (slingshot). Leap off a fast spinner to be flung far. + slingshotScale: 1, + + // Recoil speed imparted opposite a shot, scaled by its charge (0 for taps). + chargeShotRecoilMax: 650, + + // The central giant is a named, always-contested focus. Its neutral decay is + // slowed so control lingers and teams keep fighting over it; flips are + // announced to everyone and an off-screen arrow points the way. + keystoneLoseControlScale: 2.5, }; From 73f5f45322d263186974418be707e9d81c371fee Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Mon, 15 Jun 2026 08:10:54 +0100 Subject: [PATCH 096/101] Add minimap --- backend/src/players/player.ts | 46 ++----- frontend/src/main.scss | 32 ++--- frontend/src/scripts/game.ts | 76 ++--------- frontend/src/scripts/minimap.ts | 126 ++++++++++++++++++ .../scripts/objects/game-object-container.ts | 11 ++ ...player-directions.ts => update-minimap.ts} | 12 +- shared/src/main.ts | 3 +- 7 files changed, 184 insertions(+), 122 deletions(-) create mode 100644 frontend/src/scripts/minimap.ts rename shared/src/commands/types/{update-other-player-directions.ts => update-minimap.ts} (60%) diff --git a/backend/src/players/player.ts b/backend/src/players/player.ts index ca563fc..5081f48 100644 --- a/backend/src/players/player.ts +++ b/backend/src/players/player.ts @@ -13,10 +13,10 @@ import { settings, PlayerInformation, CharacterTeam, - UpdateOtherPlayerDirections, + UpdateMinimap, GameObject, Command, - OtherPlayerDirection, + MinimapPlayer, RemoteCallsForObject, RemoteCallsForObjects, ServerAnnouncement, @@ -29,7 +29,6 @@ import { import { Socket } from 'socket.io'; import { BoundingBox } from '../physics/bounding-boxes/bounding-box'; import { PhysicalContainer } from '../physics/containers/physical-container'; -import { CharacterPhysical } from '../objects/character-physical'; import { PlayerContainer } from './player-container'; import { PlayerBase } from './player-base'; @@ -142,7 +141,7 @@ export class Player extends PlayerBase { this.queueCommandSend(new CreateObjectsCommand(newlyIntersecting)); } - this.queueCommandSend(new UpdateOtherPlayerDirections(this.getOtherPlayers())); + this.queueCommandSend(new UpdateMinimap(this.getMinimapPlayers())); this.queueCommandSend( new PropertyUpdatesForObjects( @@ -167,36 +166,15 @@ export class Player extends PlayerBase { } } - private getOtherPlayers(): Array { - if (!this.character) { - return []; - } - - const viewArea = calculateViewArea(this.center, this.aspectRatio, 0.9); - const bb = new BoundingBox(); - bb.topLeft = viewArea.topLeft; - bb.size = viewArea.size; - - const playersInViewArea = this.objectContainer - .findIntersecting(bb) - .map((o) => o.gameObject) - .filter((g) => g instanceof CharacterPhysical); - - const otherPlayers = this.playerContainer.players.filter( - (p) => p.character?.isAlive && playersInViewArea.indexOf(p.character!) < 0, - ); - - return otherPlayers.map( - (p) => - new OtherPlayerDirection( - p.character!.id, - vec2.normalize( - vec2.create(), - vec2.subtract(vec2.create(), p.character!.center, this.character!.center), - ), - p.team, - ), - ); + // Every living player except this one, reported by absolute world position so + // the client can plot the whole circular arena on its minimap. + private getMinimapPlayers(): Array { + return this.playerContainer.players + .filter((p) => p !== this && p.character?.isAlive) + .map( + (p) => + new MinimapPlayer(p.character!.id, vec2.clone(p.character!.center), p.team), + ); } private commandsToBeSent: Array = []; diff --git a/frontend/src/main.scss b/frontend/src/main.scss index 5dcbb56..c8aab8f 100644 --- a/frontend/src/main.scss +++ b/frontend/src/main.scss @@ -231,25 +231,27 @@ body { } } - .other-player-arrow { - transition: transform 150ms; - - @include square($large-icon); + // Top-down radar of the whole arena (see Minimap). The circular border is + // the world boundary; dots are painted onto the canvas. + .minimap { + top: $small-padding; + left: $small-padding; + @include square(132px); + // On narrow screens the centred scoreboard bar reaches close to the left + // edge, so drop the minimap below it to avoid a corner overlap. @media (max-width: $breakpoint) { - @include square($small-icon); + @include square(96px); + top: calc(#{$small-padding} + 32px); } - mask-image: url('../static/chevron.svg'); - mask-size: contain; - - &.blue { - background-color: $bright-blue; - } - - &.red { - background-color: $bright-red; - } + border-radius: 1000px; + background-color: rgba(0, 0, 0, 0.35); + box-shadow: + inset 0 0 3px 0 rgba(0, 0, 0, 0.4), + 0 0 10px rgba(0, 0, 0, 0.3); + border: $border-width solid rgba(255, 255, 255, 0.25); + z-index: 100; } // Off-screen pointer to the keystone "Heart", tinted by its current owner. diff --git a/frontend/src/scripts/game.ts b/frontend/src/scripts/game.ts index cad62cd..a212d5a 100644 --- a/frontend/src/scripts/game.ts +++ b/frontend/src/scripts/game.ts @@ -11,8 +11,7 @@ import { deserialize, TransportEvents, SetAspectRatioActionCommand, - UpdateOtherPlayerDirections, - clamp, + UpdateMinimap, UpdateGameState, GameEndCommand, ServerAnnouncement, @@ -39,6 +38,7 @@ import { serverTimeline } from './helper/server-timeline'; import { localCharacterPredictor } from './helper/prediction/local-character-predictor'; import { Tutorial } from './tutorial'; import { Scoreboard } from './scoreboard'; +import { Minimap } from './minimap'; export class Game extends CommandReceiver { public gameObjects = new GameObjectContainer(this); @@ -54,8 +54,8 @@ export class Game extends CommandReceiver { private touchListener: TouchListener; private scoreboard = new Scoreboard(); + private minimap = new Minimap(); private announcementText = document.createElement('h2'); - private arrows: { [id: number]: HTMLElement } = {}; private keystoneArrow?: HTMLElement; private socketReceiver!: CommandSocket; private tutorial!: Tutorial; @@ -82,11 +82,12 @@ export class Game extends CommandReceiver { localCharacterPredictor.reset(); this.gameObjects = new GameObjectContainer(this); this.overlay.innerHTML = ''; - this.arrows = {}; this.keystoneArrow = undefined; + this.lastMinimap = undefined; this.isEnding = false; this.lastAnnouncementText = ''; this.overlay.appendChild(this.scoreboard.element); + this.overlay.appendChild(this.minimap.element); this.announcementText.innerText = ''; this.timeScaling = 1; this.overlay.appendChild(this.announcementText); @@ -160,67 +161,11 @@ export class Game extends CommandReceiver { c.lastLeapClientTimeMs, ), [GameEndCommand.type]: () => (this.isEnding = true), - [UpdateOtherPlayerDirections.type]: (c: UpdateOtherPlayerDirections) => - (this.lastOtherPlayerDirections = c), + [UpdateMinimap.type]: (c: UpdateMinimap) => (this.lastMinimap = c), [GameStartCommand.type]: this.initialize.bind(this), }; - private lastOtherPlayerDirections?: UpdateOtherPlayerDirections; - private handleOtherPlayerDirections(command: UpdateOtherPlayerDirections) { - command.otherPlayerDirections.forEach((d) => { - if (!(d.id! in this.arrows)) { - const element = document.createElement('div'); - this.arrows[d.id!] = element; - this.overlay.appendChild(element); - } - - const e = this.arrows[d.id!]; - const direction = d.direction; - const team = d.team; - const angle = Math.atan2(direction.y, direction.x); - e.className = 'other-player-arrow ' + team; - - if (!this.renderer) { - return; - } - - const width = this.renderer.canvasSize.x; - const height = this.renderer.canvasSize.y; - const aspectRatio = width / height; - const directionRatio = direction.x / direction.y; - - let deltaX: number, deltaY: number; - if (aspectRatio < Math.abs(directionRatio)) { - deltaX = (width / 2) * Math.sign(direction.x); - deltaY = deltaX / directionRatio; - } else { - deltaY = (height / 2) * Math.sign(direction.y); - deltaX = deltaY * directionRatio; - } - - const delta = vec2.fromValues(deltaX, deltaY); - const center = vec2.fromValues(width / 2, height / 2); - const p = vec2.add(center, center, delta); - const arrowPadding = 24; - vec2.set( - p, - clamp(p.x, arrowPadding, width - arrowPadding), - clamp(height - p.y, arrowPadding, height - arrowPadding), - ); - e.style.transform = `translateX(${p.x}px) translateY(${p.y - }px) translateX(-50%) translateY(-50%) rotate(${-angle + Math.PI / 2}rad) `; - }); - - for (const id in this.arrows) { - if ( - Object.prototype.hasOwnProperty.call(this.arrows, id) && - command.otherPlayerDirections.find((v) => v.id?.toString() === id) === undefined - ) { - this.arrows[id].parentElement?.removeChild(this.arrows[id]); - delete this.arrows[id]; - } - } - } + private lastMinimap?: UpdateMinimap; public async start(): Promise { const noiseTexture = await renderNoise([256, 256], 2, 1); @@ -332,9 +277,10 @@ export class Game extends CommandReceiver { this.scoreboard.update(this.lastGameState, this.gameObjects.player?.team); } - if (this.lastOtherPlayerDirections) { - this.handleOtherPlayerDirections(this.lastOtherPlayerDirections); - } + this.minimap.update( + this.gameObjects.localPlayerPosition, + this.lastMinimap?.players ?? [], + ); this.handleKeystoneArrow(); diff --git a/frontend/src/scripts/minimap.ts b/frontend/src/scripts/minimap.ts new file mode 100644 index 0000000..64267e8 --- /dev/null +++ b/frontend/src/scripts/minimap.ts @@ -0,0 +1,126 @@ +import { vec2 } from 'gl-matrix'; +import { CharacterTeam, Id, settings } from 'shared'; + +export interface MinimapBlip { + id: Id; + position: vec2; + team: CharacterTeam; +} + +// Top-down radar of the whole circular arena, pinned to the top-left. The map's +// circular border is the world boundary (its radius maps to worldRadius), so the +// local player's bright dot reads as a true position in the arena and every other +// living player shows as a team-coloured dot. Owns its own , so the Game +// just appends `element` to the overlay and feeds it `update()` each frame. +// Replaces the off-screen chevrons that used to point at other players. +export class Minimap { + public readonly element = document.createElement('canvas'); + + private readonly ctx: CanvasRenderingContext2D; + private readonly colors: Record; + // World-space positions, smoothed per player so the 25 Hz snapshots glide + // rather than step between frames. + private readonly smoothed = new Map(); + private bufferSize = 0; + + constructor() { + this.element.className = 'minimap'; + this.ctx = this.element.getContext('2d')!; + + const theme = getComputedStyle(document.documentElement); + const read = (name: string, fallback: string) => + theme.getPropertyValue(name).trim() || fallback; + this.colors = { + [CharacterTeam.blue]: read('--bright-blue', '#4069a5'), + [CharacterTeam.red]: read('--bright-red', '#d15652'), + [CharacterTeam.neutral]: read('--bright-neutral', '#ccc'), + }; + } + + public update(localPosition: vec2 | undefined, players: Array) { + const size = this.element.clientWidth; + if (size === 0) { + return; // not laid out yet + } + this.syncBufferSize(size); + + const ctx = this.ctx; + ctx.clearRect(0, 0, size, size); + + const center = size / 2; + const innerRadius = center - 5; + const scale = innerRadius / settings.worldRadius; + + const toMap = (world: vec2): { x: number; y: number } => { + let dx = world.x * scale; + let dy = -world.y * scale; // world Y points up, canvas Y points down + const distance = Math.hypot(dx, dy); + if (distance > innerRadius) { + dx = (dx / distance) * innerRadius; + dy = (dy / distance) * innerRadius; + } + return { x: center + dx, y: center + dy }; + }; + + // Faint marker at the world's centre to aid orientation. + ctx.fillStyle = 'rgba(255, 255, 255, 0.12)'; + ctx.beginPath(); + ctx.arc(center, center, 1.5, 0, Math.PI * 2); + ctx.fill(); + + const present = new Set(); + for (const blip of players) { + present.add(blip.id); + let world = this.smoothed.get(blip.id); + if (world) { + vec2.lerp(world, world, blip.position, 0.3); + } else { + world = vec2.clone(blip.position); + this.smoothed.set(blip.id, world); + } + const { x, y } = toMap(world); + this.drawDot(x, y, 3, this.colors[blip.team]); + } + for (const id of this.smoothed.keys()) { + if (!present.has(id)) { + this.smoothed.delete(id); + } + } + + // The local player rides on top, drawn in white with a ring so "you" is + // unmistakable amongst the team-coloured dots. + if (localPosition) { + const { x, y } = toMap(localPosition); + this.drawDot(x, y, 3.5, '#ffffff'); + ctx.beginPath(); + ctx.arc(x, y, 6, 0, Math.PI * 2); + ctx.strokeStyle = 'rgba(255, 255, 255, 0.65)'; + ctx.lineWidth = 1.5; + ctx.stroke(); + } + } + + private drawDot(x: number, y: number, radius: number, color: string) { + const ctx = this.ctx; + ctx.beginPath(); + ctx.arc(x, y, radius, 0, Math.PI * 2); + ctx.fillStyle = color; + ctx.shadowColor = color; + ctx.shadowBlur = radius * 2; + ctx.fill(); + ctx.shadowBlur = 0; + } + + private syncBufferSize(cssSize: number) { + const dpr = window.devicePixelRatio || 1; + const target = Math.round(cssSize * dpr); + if (this.bufferSize !== target) { + this.bufferSize = target; + this.element.width = target; + this.element.height = target; + } + // Setting the buffer size resets the transform, so (re)establish it every + // frame and draw in CSS pixels regardless of the device pixel ratio. + this.ctx.setTransform(dpr, 0, 0, dpr, 0, 0); + } +} diff --git a/frontend/src/scripts/objects/game-object-container.ts b/frontend/src/scripts/objects/game-object-container.ts index 81c1e2e..fa48f08 100644 --- a/frontend/src/scripts/objects/game-object-container.ts +++ b/frontend/src/scripts/objects/game-object-container.ts @@ -1,3 +1,4 @@ +import { vec2 } from 'gl-matrix'; import { Circle, Command, @@ -84,6 +85,16 @@ export class GameObjectContainer extends CommandReceiver { super(); } + // The local player's world position, but only while the body is alive. On + // death the server deletes the character object (yet `player` keeps pointing + // at the now-stale view), so gate on the object still being present — otherwise + // the minimap would pin the "you" dot at the death spot for the whole respawn. + public get localPlayerPosition(): vec2 | undefined { + return this.player && this.objects.has(this.player.id) + ? this.player.position + : undefined; + } + public get planets(): Array { const planets: Array = []; this.objects.forEach((o) => { diff --git a/shared/src/commands/types/update-other-player-directions.ts b/shared/src/commands/types/update-minimap.ts similarity index 60% rename from shared/src/commands/types/update-other-player-directions.ts rename to shared/src/commands/types/update-minimap.ts index a0d3223..a24e371 100644 --- a/shared/src/commands/types/update-other-player-directions.ts +++ b/shared/src/commands/types/update-minimap.ts @@ -5,25 +5,25 @@ import { serializable } from '../../serialization/serializable'; import { Command } from '../command'; @serializable -export class OtherPlayerDirection { +export class MinimapPlayer { public constructor( public readonly id: Id, - public readonly direction: vec2, + public readonly position: vec2, public readonly team: CharacterTeam, ) {} public toArray(): Array { - return [this.id, this.direction, this.team]; + return [this.id, this.position, this.team]; } } @serializable -export class UpdateOtherPlayerDirections extends Command { - public constructor(public readonly otherPlayerDirections: Array) { +export class UpdateMinimap extends Command { + public constructor(public readonly players: Array) { super(); } public toArray(): Array { - return [this.otherPlayerDirections]; + return [this.players]; } } diff --git a/shared/src/main.ts b/shared/src/main.ts index d9af9ca..7adfcf6 100644 --- a/shared/src/main.ts +++ b/shared/src/main.ts @@ -7,10 +7,9 @@ export * from './commands/types/server-announcement'; export * from './commands/types/property-updates-for-objects'; export * from './commands/types/game-end'; export * from './commands/types/game-start'; -export * from './commands/types/update-other-player-directions'; +export * from './commands/types/update-minimap'; export * from './commands/types/update-game-state'; export * from './commands/command-receiver'; -export * from './commands/types/update-other-player-directions'; export * from './commands/command-executors'; export * from './commands/command-generator'; export * from './commands/types/actions/move-action'; From d0265ad90ef8c5acc07c0da061b59ad5a3d0bb11 Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Mon, 15 Jun 2026 21:46:03 +0100 Subject: [PATCH 097/101] Fix ci --- .forgejo/workflows/deploy.yml | 2 +- .node-version | 1 + .nvmrc | 1 + backend/package.json | 3 +++ frontend/package.json | 3 +++ package.json | 3 +++ 6 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 .node-version create mode 100644 .nvmrc diff --git a/.forgejo/workflows/deploy.yml b/.forgejo/workflows/deploy.yml index f641e64..4e0cc2f 100644 --- a/.forgejo/workflows/deploy.yml +++ b/.forgejo/workflows/deploy.yml @@ -23,7 +23,7 @@ jobs: - name: Setup Node uses: actions/setup-node@v4 with: - node-version: 14 + node-version-file: .nvmrc - name: Install dependencies # No lockfiles are committed (see .gitignore), so use `npm install`. diff --git a/.node-version b/.node-version new file mode 100644 index 0000000..2bd5a0a --- /dev/null +++ b/.node-version @@ -0,0 +1 @@ +22 diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..2bd5a0a --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +22 diff --git a/backend/package.json b/backend/package.json index 50cd443..d655b4c 100644 --- a/backend/package.json +++ b/backend/package.json @@ -8,6 +8,9 @@ "bin": { "doppler-server": "dist/main.js" }, + "engines": { + "node": ">=20" + }, "scripts": { "build": "npx webpack --mode production", "dev": "concurrently --kill-others-on-fail \"webpack --mode development -w\" \"nodemon --legacy-watch dist/main.js\"", diff --git a/frontend/package.json b/frontend/package.json index fbf1d72..229f1e5 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -8,6 +8,9 @@ "*.scss" ], "main": "index.js", + "engines": { + "node": ">=20" + }, "scripts": { "build": "npx webpack --mode production", "dev": "npx webpack-dev-server --mode development", diff --git a/package.json b/package.json index fce2ce8..b1364f0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,9 @@ { "name": "root", "private": true, + "engines": { + "node": ">=20" + }, "devDependencies": { "concurrently": "^10.0.3", "eslint": "^10.4.1", From b6db7e8dc7e6c3325a6405f63a3531a68b283bbf Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Tue, 16 Jun 2026 07:54:06 +0100 Subject: [PATCH 098/101] Add tests --- .forgejo/workflows/deploy.yml | 6 + backend/src/game-server.ts | 37 +++++- backend/src/objects/character-physical.ts | 68 ++++------- backend/src/players/player-container.ts | 6 + backend/src/players/player.ts | 24 ++++ frontend/src/main.scss | 112 +++++++++++++----- frontend/src/scripts/feedback-hud.ts | 5 + frontend/src/scripts/game.ts | 9 ++ frontend/src/scripts/join-form-handler.ts | 8 +- .../src/scripts/landing-page-background.ts | 32 +++-- frontend/src/scripts/objects/types/camera.ts | 12 +- .../scripts/objects/types/character-view.ts | 58 +++++++-- frontend/src/scripts/screen-shake.ts | 84 +++++++++++++ frontend/src/scripts/vibration-handler.ts | 6 +- package.json | 6 +- shared/package.json | 3 + shared/src/objects/game-object.ts | 34 +++++- test/serialization.test.mjs | 93 +++++++++++++++ 18 files changed, 494 insertions(+), 109 deletions(-) create mode 100644 frontend/src/scripts/screen-shake.ts create mode 100644 test/serialization.test.mjs diff --git a/.forgejo/workflows/deploy.yml b/.forgejo/workflows/deploy.yml index 4e0cc2f..762d92c 100644 --- a/.forgejo/workflows/deploy.yml +++ b/.forgejo/workflows/deploy.yml @@ -32,6 +32,12 @@ jobs: - name: Build (shared -> frontend -> backend) run: npm run build + - name: Test + run: npm test + + - name: Lint + run: npm run lint:check + - name: Deploy to host pages mount if: github.event_name == 'push' && github.ref == 'refs/heads/main' run: | diff --git a/backend/src/game-server.ts b/backend/src/game-server.ts index e321737..5e92f3b 100644 --- a/backend/src/game-server.ts +++ b/backend/src/game-server.ts @@ -99,7 +99,8 @@ export class GameServer extends CommandReceiver { this.players.deletePlayer(player); this.sendServerStateUpdate(); }); - } catch { + } catch (e) { + console.error('Failed to register joining player; disconnecting socket', e); socket.disconnect(); } }); @@ -168,6 +169,9 @@ export class GameServer extends CommandReceiver { private timeSinceLastPointUpdate = 0; private physicsAccumulator = 0; + // Frames since the last stats report where physics ran over budget (more + // substeps than the cap). Surfaced by handleStats as a saturation signal. + private saturatedFrames = 0; private handlePhysics() { const delta = this.deltaTimeCalculator.getNextDeltaTimeInSeconds({ setAsBase: true }); @@ -189,12 +193,24 @@ export class GameServer extends CommandReceiver { const fixedDelta = settings.targetPhysicsDeltaTimeInSeconds; const maxSubstepsPerFrame = 5; + // Cap on retained physics backlog when saturated, so a long stall can't + // accumulate an unrecoverable catch-up. + const maxBacklogSeconds = 0.25; this.physicsAccumulator += delta; let substeps = Math.floor(this.physicsAccumulator / fixedDelta); if (substeps > maxSubstepsPerFrame) { + // Saturated: run the cap's worth of substeps but KEEP the remaining + // backlog (clamped) instead of zeroing it. Dropping it silently slowed + // simulated time for everyone — and diverged client prediction, whose + // wall-clock keeps running. Clamping bounds the catch-up so a transient + // spike recovers without a death spiral. + this.saturatedFrames++; + this.physicsAccumulator = Math.min( + this.physicsAccumulator - maxSubstepsPerFrame * fixedDelta, + maxBacklogSeconds, + ); substeps = maxSubstepsPerFrame; - this.physicsAccumulator = 0; } else { this.physicsAccumulator -= substeps * fixedDelta; } @@ -237,6 +253,23 @@ export class GameServer extends CommandReceiver { console.info( `Memory used: ${(process.memoryUsage().rss / 1024 / 1024).toFixed(2)} MB`, ); + + const rtts = this.players.connectedPlayerRttsMs.filter((r) => r > 0); + if (rtts.length > 0) { + rtts.sort((a, b) => a - b); + console.info( + `Player RTT median ${rtts[Math.floor(rtts.length / 2)].toFixed(0)} ms ` + + `(min ${rtts[0].toFixed(0)}, max ${rtts[rtts.length - 1].toFixed(0)}, n=${rtts.length})`, + ); + } + + if (this.saturatedFrames > 0) { + console.warn( + `Physics saturated on ${this.saturatedFrames} frame(s) since last report — shedding backlog`, + ); + this.saturatedFrames = 0; + } + this.deltaTimes = []; } } diff --git a/backend/src/objects/character-physical.ts b/backend/src/objects/character-physical.ts index 2f60597..2d145e8 100644 --- a/backend/src/objects/character-physical.ts +++ b/backend/src/objects/character-physical.ts @@ -20,6 +20,12 @@ import { CharacterMovementState, CharacterWorld, GroundSurface, + headRadius, + feetRadius, + headOffset, + leftFootOffset, + rightFootOffset, + boundRadius, } from 'shared'; import { DynamicPhysical } from '../physics/physicals/dynamic-physical'; import { CirclePhysical } from './circle-physical'; @@ -38,48 +44,14 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical public readonly canCollide = true; public readonly canMove = true; - private static readonly headRadius = 50; - private static readonly feetRadius = 20; private projectileStrength = settings.playerMaxStrength; - // offsets are measured from (0, 0). The head sits this far above the feet, - // which sets the leg length: kept short so the body reads as a compact head on - // stubby legs rather than a long-legged strider. - private static readonly desiredHeadOffset = vec2.fromValues(0, 55); - private static readonly desiredLeftFootOffset = vec2.fromValues(-20, 0); - private static readonly desiredRightFootOffset = vec2.fromValues(20, 0); - private static readonly centerOfMass = vec2.scale( - vec2.create(), - vec2.add( - vec2.create(), - vec2.add( - vec2.create(), - CharacterPhysical.desiredHeadOffset, - CharacterPhysical.desiredLeftFootOffset, - ), - CharacterPhysical.desiredRightFootOffset, - ), - 1 / 3, - ); - - private static readonly headOffset = vec2.subtract( - vec2.create(), - CharacterPhysical.desiredHeadOffset, - CharacterPhysical.centerOfMass, - ); - private static readonly leftFootOffset = vec2.subtract( - vec2.create(), - CharacterPhysical.desiredLeftFootOffset, - CharacterPhysical.centerOfMass, - ); - private static readonly rightFootOffset = vec2.subtract( - vec2.create(), - CharacterPhysical.desiredRightFootOffset, - CharacterPhysical.centerOfMass, - ); - - public static readonly boundRadius = - (CharacterPhysical.headRadius + CharacterPhysical.feetRadius * 2) * 2; + // Body geometry (head/foot radii, posture offsets, bound radius) is defined + // once in the shared movement module and imported here, so the authoritative + // body and the client's predicted body are bit-identical by construction + // instead of by a hand-synced "copied verbatim" duplicate. Re-exposed as a + // static only because external callers reference CharacterPhysical.boundRadius. + public static readonly boundRadius = boundRadius; private timeSinceDying = 0; private isDestroyed = false; @@ -129,20 +101,20 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical ) { super(id(), name, killCount, deathCount, team, settings.playerMaxHealth); this.head = new CirclePhysical( - vec2.add(vec2.create(), startPosition, CharacterPhysical.headOffset), - CharacterPhysical.headRadius, + vec2.add(vec2.create(), startPosition, headOffset), + headRadius, this, container, ); this.leftFoot = new CirclePhysical( - vec2.add(vec2.create(), startPosition, CharacterPhysical.leftFootOffset), - CharacterPhysical.feetRadius, + vec2.add(vec2.create(), startPosition, leftFootOffset), + feetRadius, this, container, ); this.rightFoot = new CirclePhysical( - vec2.add(vec2.create(), startPosition, CharacterPhysical.rightFootOffset), - CharacterPhysical.feetRadius, + vec2.add(vec2.create(), startPosition, rightFootOffset), + feetRadius, this, container, ); @@ -411,8 +383,8 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical } private animateScaling(q: number) { - this.head.radius = CharacterPhysical.headRadius * q; - this.leftFoot.radius = this.rightFoot.radius = CharacterPhysical.feetRadius * q; + this.head.radius = headRadius * q; + this.leftFoot.radius = this.rightFoot.radius = feetRadius * q; } public getPropertyUpdates(): PropertyUpdatesForObject { diff --git a/backend/src/players/player-container.ts b/backend/src/players/player-container.ts index afc67bb..01a1c96 100644 --- a/backend/src/players/player-container.ts +++ b/backend/src/players/player-container.ts @@ -57,6 +57,12 @@ export class PlayerContainer { return this._players.length; } + // Measured round-trip times (ms) of the real connected players, for + // server-side latency stats. NPCs have no socket and are excluded. + public get connectedPlayerRttsMs(): Array { + return this._players.map((p) => p.rttMs); + } + public step(deltaTimeInSeconds: number) { this.players.forEach((p) => p.step(deltaTimeInSeconds)); } diff --git a/backend/src/players/player.ts b/backend/src/players/player.ts index 5081f48..923be65 100644 --- a/backend/src/players/player.ts +++ b/backend/src/players/player.ts @@ -32,6 +32,9 @@ import { PhysicalContainer } from '../physics/containers/physical-container'; import { PlayerContainer } from './player-container'; import { PlayerBase } from './player-base'; +// How often the server pings each client to measure round-trip time. +const pingIntervalSeconds = 1; + export class Player extends PlayerBase { // default, until the clients sends its real value private aspectRatio: number = 16 / 9; @@ -41,6 +44,12 @@ export class Player extends PlayerBase { private lastInputClientTimeMs = 0; private lastLeapClientTimeMs = 0; + // Measured round-trip time to this client (ms) — the latency primitive that + // lag compensation, a latency HUD, and adaptive interpolation build on. + public rttMs = 0; + private timeSinceLastPing = 0; + private lastPingSentMs = 0; + protected commandExecutors: CommandExecutors = { [SetAspectRatioActionCommand.type]: (v: SetAspectRatioActionCommand) => (this.aspectRatio = v.aspectRatio), @@ -71,6 +80,15 @@ export class Player extends PlayerBase { super(playerInfo, playerContainer, objectContainer, team); this.createCharacter(); this.step(0); + + // The client already echoes a Pong for every Ping (see game.ts). Only one + // ping is ever in flight, so RTT is simply now − send-time; no payload + // needed and no client change required. + this.socket.on(TransportEvents.Pong, () => { + if (this.lastPingSentMs > 0) { + this.rttMs = performance.now() - this.lastPingSentMs; + } + }); } protected createCharacter() { @@ -191,6 +209,12 @@ export class Player extends PlayerBase { this.queueCommandSend(new RemoteCallsForObjects(remoteCalls)); } + if ((this.timeSinceLastPing += deltaTime) > pingIntervalSeconds) { + this.timeSinceLastPing = 0; + this.lastPingSentMs = performance.now(); + this.socket.emit(TransportEvents.Ping); + } + if ((this.timeSinceLastMessage += deltaTime) > settings.updateMessageInterval) { this.handleAnnouncements(); this.handleViewAreaUpdate(); diff --git a/frontend/src/main.scss b/frontend/src/main.scss index c8aab8f..8d2e613 100644 --- a/frontend/src/main.scss +++ b/frontend/src/main.scss @@ -594,8 +594,8 @@ body { .hitmarker { position: absolute; transform: translate(-50%, -50%); - @include square(26px); - opacity: 0.9; + @include square(34px); + opacity: 0.95; &::before, &::after { @@ -603,10 +603,13 @@ body { position: absolute; top: 50%; left: 50%; - width: 12px; - height: 2px; + width: 16px; + height: 3px; + border-radius: 2px; background-color: white; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.8); + box-shadow: + 0 0 6px rgba(255, 255, 255, 0.9), + 0 0 3px rgba(0, 0, 0, 0.9); transform-origin: center; } @@ -618,31 +621,58 @@ body { transform: translate(-50%, -50%) rotate(-45deg); } - animation: hitmarker-pop 250ms ease-out forwards; + animation: hitmarker-pop 220ms cubic-bezier(0.2, 0.9, 0.3, 1) forwards; &.charged { + @include square(44px); &::before, &::after { - width: 18px; - height: 3px; + width: 24px; + height: 4px; background-color: $accent; + box-shadow: + 0 0 10px rgba($accent, 0.9), + 0 0 4px rgba(0, 0, 0, 0.9); } } } + .kill-flash { + position: absolute; + inset: 0; + pointer-events: none; + background: radial-gradient(ellipse at center, + transparent 42%, + rgba($accent, 0) 56%, + rgba($accent, 0.55) 100%); + animation: kill-flash 420ms ease-out forwards; + + &.charged { + background: radial-gradient(ellipse at center, + transparent 36%, + rgba($accent, 0) 50%, + rgba($accent, 0.8) 100%); + } + } + .kill-popup { position: absolute; transform: translate(-50%, -50%); - font-weight: 700; - font-size: 1.4rem; + font-weight: 800; + font-size: 1.7rem; white-space: nowrap; color: $bright-neutral; - text-shadow: 0 0 6px rgba(0, 0, 0, 0.9); - animation: kill-popup-rise 1200ms ease-out forwards; + text-shadow: + 0 0 10px rgba(0, 0, 0, 0.9), + 0 0 18px rgba(255, 255, 255, 0.35); + animation: kill-popup-rise 1200ms cubic-bezier(0.18, 0.9, 0.3, 1) forwards; &.charged { color: $accent; + text-shadow: + 0 0 10px rgba(0, 0, 0, 0.9), + 0 0 18px rgba($accent, 0.6); } .heal { @@ -655,12 +685,14 @@ body { top: 33%; left: 50%; transform: translateX(-50%); - font-weight: 700; - font-size: 2.6rem; + font-weight: 800; + font-size: 3rem; color: $accent; - text-shadow: 0 0 12px rgba(0, 0, 0, 0.9); + text-shadow: + 0 0 12px rgba(0, 0, 0, 0.9), + 0 0 24px rgba($accent, 0.7); white-space: nowrap; - animation: streak-pop 1400ms ease-out forwards; + animation: streak-pop 1400ms cubic-bezier(0.18, 0.9, 0.3, 1) forwards; } .killfeed { @@ -748,46 +780,72 @@ body { @keyframes hitmarker-pop { 0% { opacity: 0; - transform: translate(-50%, -50%) scale(1.6); + transform: translate(-50%, -50%) scale(2); } - 25% { + 18% { + opacity: 1; + transform: translate(-50%, -50%) scale(0.82); + } + + 36% { + transform: translate(-50%, -50%) scale(1.06); + } + + 100% { + opacity: 0; + transform: translate(-50%, -50%) scale(0.95); + } +} + +@keyframes kill-flash { + 0% { + opacity: 0; + } + + 12% { opacity: 1; - transform: translate(-50%, -50%) scale(1); } 100% { opacity: 0; - transform: translate(-50%, -50%) scale(0.9); } } @keyframes kill-popup-rise { 0% { opacity: 0; - transform: translate(-50%, -30%) scale(0.8); + transform: translate(-50%, -20%) scale(0.6); } - 20% { + 12% { opacity: 1; - transform: translate(-50%, -60%) scale(1); + transform: translate(-50%, -56%) scale(1.25); + } + + 28% { + transform: translate(-50%, -62%) scale(1); } 100% { opacity: 0; - transform: translate(-50%, -160%) scale(1); + transform: translate(-50%, -170%) scale(1); } } @keyframes streak-pop { 0% { opacity: 0; - transform: translateX(-50%) scale(0.6); + transform: translateX(-50%) scale(0.5); } - 20% { + 16% { opacity: 1; - transform: translateX(-50%) scale(1.1); + transform: translateX(-50%) scale(1.25); + } + + 32% { + transform: translateX(-50%) scale(0.95); } 70% { diff --git a/frontend/src/scripts/feedback-hud.ts b/frontend/src/scripts/feedback-hud.ts index 316aecf..d6a7ea0 100644 --- a/frontend/src/scripts/feedback-hud.ts +++ b/frontend/src/scripts/feedback-hud.ts @@ -47,6 +47,11 @@ export abstract class FeedbackHud { const { killfeed } = this.ensureRoot(); const charged = charge >= settings.chargedHitThreshold; + // A quick crimson vignette pulse around the whole frame to punctuate the kill. + const flash = document.createElement('div'); + flash.className = 'kill-flash' + (charged ? ' charged' : ''); + this.addTransient(flash, 420); + const entry = document.createElement('div'); entry.className = 'kill-entry'; entry.innerHTML = `Eliminated ${this.escape(victimName ?? 'enemy')}`; diff --git a/frontend/src/scripts/game.ts b/frontend/src/scripts/game.ts index a212d5a..4b8678f 100644 --- a/frontend/src/scripts/game.ts +++ b/frontend/src/scripts/game.ts @@ -39,6 +39,7 @@ import { localCharacterPredictor } from './helper/prediction/local-character-pre import { Tutorial } from './tutorial'; import { Scoreboard } from './scoreboard'; import { Minimap } from './minimap'; +import { ScreenShake } from './screen-shake'; export class Game extends CommandReceiver { public gameObjects = new GameObjectContainer(this); @@ -80,6 +81,9 @@ export class Game extends CommandReceiver { this.socket?.close(); serverTimeline.reset(); localCharacterPredictor.reset(); + // Clear any leftover shake/zoom so a kill at the end of one match can't bleed + // its camera impact into the next. + ScreenShake.reset(); this.gameObjects = new GameObjectContainer(this); this.overlay.innerHTML = ''; this.keystoneArrow = undefined; @@ -232,6 +236,11 @@ export class Game extends CommandReceiver { this.resolveStarted(); deltaTime /= 1000; + // Decay the camera impact effects on raw wall-clock time, before any of the + // end-game slow-motion scaling below. These only adjust the rendered view, + // never the simulation, so they stay decoupled from prediction and netcode. + ScreenShake.step(deltaTime); + // Stepped before the end-game time scaling on purpose: the slow motion is // already baked into the snapshots the server sends, so the playback // cursor itself must keep running on wall-clock time. diff --git a/frontend/src/scripts/join-form-handler.ts b/frontend/src/scripts/join-form-handler.ts index e9c2b71..c2bd37f 100644 --- a/frontend/src/scripts/join-form-handler.ts +++ b/frontend/src/scripts/join-form-handler.ts @@ -16,8 +16,12 @@ export class JoinFormHandler { private resolvePlayerDecision!: (d: PlayerDecision) => void; private pollServersTimer: any; private keyUpListener = (e: KeyboardEvent) => { - if (e.key === 'enter') { - this.form.submit(); + // KeyboardEvent.key for Return is 'Enter' (capital E); the old lowercase + // comparison never matched, so pressing Enter silently did nothing. + // requestSubmit() (unlike submit()) fires the form's onsubmit handler and + // runs HTML5 validation, so Enter behaves exactly like clicking Join. + if (e.key === 'Enter' && !this.joinButton.disabled) { + this.form.requestSubmit(); } }; diff --git a/frontend/src/scripts/landing-page-background.ts b/frontend/src/scripts/landing-page-background.ts index 0e2be9a..6371e62 100644 --- a/frontend/src/scripts/landing-page-background.ts +++ b/frontend/src/scripts/landing-page-background.ts @@ -3,19 +3,18 @@ import { CircleLight, FilteringOptions, hsl, - NoisyPolygonFactory, Renderer, renderNoise, runAnimation, WrapOptions, } from 'sdf-2d'; import { settings, rgb, PlanetBase, Random } from 'shared'; +import { PlanetShape } from './shapes/planet-shape'; -const landingPageVertexCount = 9; -const LandingPagePolygon = NoisyPolygonFactory( - landingPageVertexCount, - rgb(0.5, 0.4, 0.7), -); +// colorMixQ ends of PlanetShape's blue<->red gradient, so the two backdrop +// planets read as the two in-game teams. +const bluePlanet = 0; +const redPlanet = 1; export class LandingPageBackground { private isActive = true; @@ -34,7 +33,7 @@ export class LandingPageBackground { canvas, [ { - ...LandingPagePolygon.descriptor, + ...PlanetShape.descriptor, shaderCombinationSteps: [0, 1, 2], }, { @@ -74,34 +73,41 @@ export class LandingPageBackground { 0.7 * renderer.canvasSize.y, ); - const topPlanet = new LandingPagePolygon( + const topPlanet = new PlanetShape( PlanetBase.createPlanetVertices( topPlanetPosition, Random.getRandomInRange(150, 400), Random.getRandomInRange(150, 400), Random.getRandomInRange(10, 20), - landingPageVertexCount, ), + redPlanet, ); - (topPlanet as any).randomOffset = 0.5 + time / 3500; + // Fixed terrain phase (no longer animated -> no pulsing); the planet spins + // instead, the same way in-game planets do: PlanetShape's rotation uniform + // turns the whole body, terrain and outline together, in its own frame. + // Speeds sit in the game's per-planet range (~0.05-0.12 rad/s) and + // counter-rotate so the two planets don't drift in lockstep. + topPlanet.randomOffset = Random.getRandom(); + topPlanet.rotation = (time / 1000) * 0.09; const bottomPlanetPosition = vec2.fromValues( 0.3 * renderer.canvasSize.x, 0.3 * renderer.canvasSize.y, ); - const bottomPlanet = new LandingPagePolygon( + const bottomPlanet = new PlanetShape( PlanetBase.createPlanetVertices( bottomPlanetPosition, Random.getRandomInRange(150, 800), Random.getRandomInRange(150, 400), Random.getRandomInRange(10, 40), - landingPageVertexCount, ), + bluePlanet, ); - (bottomPlanet as any).randomOffset = time / 2500; + bottomPlanet.randomOffset = Random.getRandom(); + bottomPlanet.rotation = (time / 1000) * -0.06; const planetDistance = vec2.subtract( vec2.create(), diff --git a/frontend/src/scripts/objects/types/camera.ts b/frontend/src/scripts/objects/types/camera.ts index f1cf670..c607c38 100644 --- a/frontend/src/scripts/objects/types/camera.ts +++ b/frontend/src/scripts/objects/types/camera.ts @@ -8,6 +8,7 @@ import { } from 'shared'; import { RenderCommand } from '../../commands/types/render'; import { Game } from '../../game'; +import { ScreenShake } from '../../screen-shake'; export class Camera extends CommandReceiver { public center: vec2 = vec2.create(); @@ -46,7 +47,16 @@ export class Camera extends CommandReceiver { this.game.aspectRatioChanged(canvasAspectRatio); } - const viewArea = calculateViewArea(this.center, canvasAspectRatio); + // Shake displaces only the rendered view centre and the zoom-punch shrinks + // only the rendered view area — neither touches the followed position, so + // impacts jolt the frame without nudging the camera off the player. Passing + // the zoom as oversizeRatio scales the area about the (shaken) centre. + const shakenCenter = vec2.fromValues( + this.center[0] + ScreenShake.offsetX, + this.center[1] + ScreenShake.offsetY, + ); + const scale = ScreenShake.viewScale; + const viewArea = calculateViewArea(shakenCenter, canvasAspectRatio, scale * scale); renderer.setViewArea(viewArea.topLeft, viewArea.size); renderer.setRuntimeSettings({ diff --git a/frontend/src/scripts/objects/types/character-view.ts b/frontend/src/scripts/objects/types/character-view.ts index 1806993..5c0d751 100644 --- a/frontend/src/scripts/objects/types/character-view.ts +++ b/frontend/src/scripts/objects/types/character-view.ts @@ -1,4 +1,4 @@ -import { vec2 } from 'gl-matrix'; +import { vec2, vec3 } from 'gl-matrix'; import { CircleLight, Renderer } from 'sdf-2d'; import { @@ -23,10 +23,18 @@ import { CharacterShape } from '../../shapes/character-shape'; import { SoundHandler, Sounds } from '../../sound-handler'; import { VibrationHandler } from '../../vibration-handler'; import { FeedbackHud } from '../../feedback-hud'; +import { ScreenShake } from '../../screen-shake'; const muzzleFlashDecaySeconds = 0.12; const hitFlashDecaySeconds = 0.15; +// A white-hot pop of light thrown at the spot a character dies, seen by everyone +// who can see the body. No radius knob on a CircleLight, so the burst is sold by +// a bright (HDR) colour with a fast-decaying intensity envelope. +const deathBurstDecaySeconds = 0.42; +const deathBurstMaxIntensity = 1.7; +const deathBurstColor = vec3.fromValues(2.5, 2.3, 2.1); + const killIcon = ''; @@ -39,6 +47,8 @@ export class CharacterView extends CharacterBase { private muzzleFlash: CircleLight; private muzzleFlashIntensity = 0; private hitFlashIntensity = 0; + private deathBurst: CircleLight; + private deathBurstIntensity = 0; private strength = settings.playerMaxStrength; private strengthInterpolator = new LinearInterpolator(settings.playerMaxStrength); private nameElement: HTMLElement = document.createElement('div'); @@ -79,6 +89,7 @@ export class CharacterView extends CharacterBase { settings.paletteDim[settings.colorIndices[team]], 0, ); + this.deathBurst = new CircleLight(vec2.clone(this.head!.center), deathBurstColor, 0); this.leftFootInterpolator = new CircleInterpolator(this.leftFoot!); this.rightFootInterpolator = new CircleInterpolator(this.rightFoot!); @@ -166,6 +177,9 @@ export class CharacterView extends CharacterBase { if (this.isMainCharacter) { VibrationHandler.vibrate(Math.min(200, damage * 4)); + // Getting hit jolts the frame too, so taking fire has weight, not just + // dealing it. + ScreenShake.add(clamp01(0.12 + (0.5 * damage) / settings.playerMaxStrength)); } } } @@ -174,17 +188,23 @@ export class CharacterView extends CharacterBase { if (this.isMainCharacter) { VibrationHandler.vibrate(150); } + // Visible to everyone who can see the body: a white-hot flash plus a + // full-body whiteout, so a kill reads as a violent burst rather than the + // character quietly blinking out. + this.deathBurstIntensity = 1; + this.hitFlashIntensity = 1; } public onHitConfirmed(charge = 0) { if (!this.isMainCharacter) { return; } - // A charged hit lands lower and harder than a panic tap. - SoundHandler.play(Sounds.click, mix(0.4, 0.75, charge), mix(1.7, 1.05, charge)); - if (charge >= settings.chargedHitThreshold) { - VibrationHandler.vibrate(25); - } + // Layer a meaty thud under the crisp confirmation tick; a charged hit lands + // lower and harder than a panic tap. + SoundHandler.play(Sounds.hit, mix(0.35, 0.7, charge), mix(1.3, 0.95, charge)); + SoundHandler.play(Sounds.click, mix(0.4, 0.75, charge), mix(1.7, 1.1, charge)); + ScreenShake.add(mix(0.22, 0.5, charge)); + VibrationHandler.vibrate(Math.round(mix(12, 35, charge))); FeedbackHud.hitMarker(charge); } @@ -192,8 +212,14 @@ export class CharacterView extends CharacterBase { if (!this.isMainCharacter) { return; } - SoundHandler.play(Sounds.click, 1, mix(0.7, 0.5, charge)); - VibrationHandler.vibrate(mix(60, 110, charge)); + // A heavy low thud for the kill with a brighter confirmation over the top, + // a hard frame jolt, a zoom-punch toward the action for weight, and a + // double-thump rumble. + SoundHandler.play(Sounds.hit, 1, mix(0.62, 0.5, charge)); + SoundHandler.play(Sounds.click, 0.9, mix(0.6, 0.45, charge)); + ScreenShake.add(mix(0.75, 1, charge)); + ScreenShake.addPunch(mix(0.7, 1, charge)); + VibrationHandler.vibrate([45, 35, Math.round(mix(80, 130, charge))]); FeedbackHud.killConfirmed(victimName, streak, charge); } @@ -230,6 +256,18 @@ export class CharacterView extends CharacterBase { this.hitFlashIntensity - deltaTimeInSeconds / hitFlashDecaySeconds, ); } + + if (this.deathBurstIntensity > 0) { + this.deathBurstIntensity = Math.max( + 0, + this.deathBurstIntensity - deltaTimeInSeconds / deathBurstDecaySeconds, + ); + this.deathBurst.center = this.bodyCenter; + // Square the envelope so the flash blooms then drops off sharply rather + // than fading out in a flat ramp. + this.deathBurst.intensity = + deathBurstMaxIntensity * this.deathBurstIntensity * this.deathBurstIntensity; + } } public onShoot(strength: number) { @@ -273,6 +311,10 @@ export class CharacterView extends CharacterBase { if (this.muzzleFlashIntensity > 0) { renderer.addDrawable(this.muzzleFlash); } + + if (this.deathBurstIntensity > 0) { + renderer.addDrawable(this.deathBurst); + } } private calculateGazeTarget(renderer: Renderer): vec2 { diff --git a/frontend/src/scripts/screen-shake.ts b/frontend/src/scripts/screen-shake.ts new file mode 100644 index 0000000..75c5bce --- /dev/null +++ b/frontend/src/scripts/screen-shake.ts @@ -0,0 +1,84 @@ +// Camera impact effects fed by combat hits, sampled by the camera at render +// time. Kept as a process-wide singleton so any view can feed it without +// threading a camera reference through the deserialized object graph. Both +// effects touch only the *rendered* view (centre offset + view-area zoom), never +// the followed position or the simulation clock — so they can't drift the camera +// off the player, and they're completely decoupled from prediction/netcode. +// +// Two effects: +// - shake: a trauma model (Eiserloh) — the felt shake is trauma SQUARED so +// small taps stay subtle while a kill punches hard; it bleeds off linearly. +// - punch: a brief zoom-in on a kill that snaps back fast, for "weight". +// +// Honours prefers-reduced-motion: callers can fire freely and it simply no-ops +// for players who have asked the OS to minimise motion. +export abstract class ScreenShake { + private static trauma = 0; + private static punch = 0; + + // Peak translation, in world units, at full trauma. The visible world is + // ~3800 units wide, so this tops out at a few percent of the screen. + private static readonly maxTranslation = 150; + // Fraction the view zooms in at full punch (smaller view area = zoomed in). + private static readonly maxZoom = 0.07; + private static readonly traumaDecayPerSecond = 1.7; + // Snaps back quickly so the punch reads as a sharp bite, not a slow drift. + private static readonly punchDecayPerSecond = 6; + + private static offsetXValue = 0; + private static offsetYValue = 0; + + private static get reducedMotion(): boolean { + return ( + typeof window !== 'undefined' && + typeof window.matchMedia === 'function' && + window.matchMedia('(prefers-reduced-motion: reduce)').matches + ); + } + + public static add(trauma: number): void { + if (this.reducedMotion) { + return; + } + this.trauma = Math.min(1, this.trauma + trauma); + } + + public static addPunch(amount: number): void { + if (this.reducedMotion) { + return; + } + this.punch = Math.min(1, this.punch + amount); + } + + public static step(deltaTimeInSeconds: number): void { + this.trauma = Math.max( + 0, + this.trauma - this.traumaDecayPerSecond * deltaTimeInSeconds, + ); + this.punch = Math.max(0, this.punch - this.punchDecayPerSecond * deltaTimeInSeconds); + const shake = this.trauma * this.trauma; + this.offsetXValue = this.maxTranslation * shake * (Math.random() * 2 - 1); + this.offsetYValue = this.maxTranslation * shake * (Math.random() * 2 - 1); + } + + public static get offsetX(): number { + return this.offsetXValue; + } + + public static get offsetY(): number { + return this.offsetYValue; + } + + // Multiplier for the view-area size: <1 zooms in. Squared so the punch bites + // sharply near its peak rather than ramping linearly. + public static get viewScale(): number { + return 1 - this.maxZoom * this.punch * this.punch; + } + + public static reset(): void { + this.trauma = 0; + this.punch = 0; + this.offsetXValue = 0; + this.offsetYValue = 0; + } +} diff --git a/frontend/src/scripts/vibration-handler.ts b/frontend/src/scripts/vibration-handler.ts index 951efaa..3ae8420 100644 --- a/frontend/src/scripts/vibration-handler.ts +++ b/frontend/src/scripts/vibration-handler.ts @@ -1,9 +1,11 @@ import { OptionsHandler } from './options-handler'; export abstract class VibrationHandler { - public static vibrate(time: number): void { + // Accepts either a single duration or an on/off pattern (e.g. a double-thump + // [40, 30, 90] for a kill). + public static vibrate(pattern: number | number[]): void { if (OptionsHandler.options.vibrationEnabled && this.isVibrationEnabled) { - navigator.vibrate(time); + navigator.vibrate(pattern); } } diff --git a/package.json b/package.json index b1364f0..3e123bd 100644 --- a/package.json +++ b/package.json @@ -12,11 +12,15 @@ "eslint-plugin-unused-imports": "^4.4.1", "prettier": "^3.8.3", "typescript": "^6.0.3", - "typescript-eslint": "^8.60.1" + "typescript-eslint": "^8.60.1", + "vitest": "^4.1.9" }, "scripts": { "build": "cd shared && npm run build && cd ../frontend && npm run build && cd ../backend && npm run build", "lint": "eslint ./**/src/**/*.{js,ts} --fix && prettier --write ./**/src/**/*.{js,ts,json}", + "lint:check": "eslint ./**/src/**/*.{js,ts} && prettier --check ./**/src/**/*.{js,ts,json}", + "test": "vitest run", + "test:watch": "vitest", "init": "cd shared && npm install && cd ../frontend && npm install && cd ../backend && npm install", "dev": "concurrently --kill-others-on-fail \"cd shared && npm dev\" \"cd backend && npm dev\" \"cd frontend && npm dev\"" } diff --git a/shared/package.json b/shared/package.json index 67ebd4c..bf2597b 100644 --- a/shared/package.json +++ b/shared/package.json @@ -7,6 +7,9 @@ "files": [ "lib" ], + "engines": { + "node": ">=20" + }, "scripts": { "build": "npx webpack --mode production", "dev": "npx webpack --mode development --watch", diff --git a/shared/src/objects/game-object.ts b/shared/src/objects/game-object.ts index 93ab8c2..4793d2f 100644 --- a/shared/src/objects/game-object.ts +++ b/shared/src/objects/game-object.ts @@ -45,16 +45,40 @@ export class PropertyUpdatesForObject { export abstract class GameObject extends CommandReceiver { private remoteCalls: Array = []; + // The only methods a peer may invoke over the wire. processRemoteCalls + // dispatches by a raw string taken straight off the network, so without this + // gate a malformed or hostile packet could call ANY method on the object + // (toArray, resetRemoteCalls, even prototype methods). Keep in sync with the + // remoteCall() emitters on the *-physical classes. + private static readonly allowedRemoteCalls: ReadonlySet = new Set([ + 'onShoot', + 'onLeap', + 'onDie', + 'onHitConfirmed', + 'onKillConfirmed', + 'setHealth', + 'setKillCount', + 'onFlipped', + 'setContested', + 'generatedPoints', + 'setLight', + ]); + constructor(public readonly id: Id) { super(); } public processRemoteCalls(remoteCalls: Array) { - remoteCalls.forEach((r) => - (this[r.functionName as keyof this] as unknown as (...args: Array) => unknown)( - ...r.args, - ), - ); + remoteCalls.forEach((r) => { + if (!GameObject.allowedRemoteCalls.has(r.functionName)) { + console.warn(`Dropped disallowed remote call: ${r.functionName}`); + return; + } + const fn = this[r.functionName as keyof this]; + if (typeof fn === 'function') { + (fn as (...args: Array) => unknown).apply(this, r.args); + } + }); } public getPropertyUpdates(): PropertyUpdatesForObject | void {} diff --git a/test/serialization.test.mjs b/test/serialization.test.mjs new file mode 100644 index 0000000..4387661 --- /dev/null +++ b/test/serialization.test.mjs @@ -0,0 +1,93 @@ +// Round-trip tests for the custom wire serializer — the single most fragile, +// highest-blast-radius mechanism in the codebase (every networked message goes +// through it, and dispatch is keyed on class name). We exercise the BUILT shared +// bundle (shared/lib/main.js) rather than the TS source, so the decorators are +// already applied exactly as they ship and there is no transform/ESM ambiguity. +import { describe, it, expect } from 'vitest'; +import { createRequire } from 'node:module'; + +const require = createRequire(import.meta.url); +const shared = require('../shared/lib/main.js'); + +const { + serialize, + deserialize, + Circle, + ServerAnnouncement, + MoveActionCommand, + UpdatePropertyCommand, + PropertyUpdatesForObject, + // geometry — single source of truth shared by server & client prediction + headRadius, + feetRadius, + boundRadius, + headOffset, + leftFootOffset, + rightFootOffset, +} = shared; + +describe('serialization round-trip (built shared lib)', () => { + it('reconstructs a ServerAnnouncement as the right class with its payload', () => { + const [out] = deserialize(serialize([new ServerAnnouncement('Hello world')])); + expect(out).toBeInstanceOf(ServerAnnouncement); + expect(out.text).toBe('Hello world'); + }); + + it('round-trips a Circle and rounds floats to 3 decimals', () => { + const out = deserialize(serialize(new Circle([12.34567, -7.1], 5.43219))); + expect(out).toBeInstanceOf(Circle); + // serialize.ts rounds every float via toFixed(3) + expect(out.center[0]).toBeCloseTo(12.346, 6); + expect(out.center[1]).toBeCloseTo(-7.1, 6); + expect(out.radius).toBeCloseTo(5.432, 6); + }); + + it('keeps integer clientTimeMs exact (the predictor matches on it)', () => { + const t = 1718000000123; + const out = deserialize(serialize(new MoveActionCommand([1, 0], t))); + expect(out).toBeInstanceOf(MoveActionCommand); + expect(out.clientTimeMs).toBe(t); + }); + + it('round-trips nested property-update commands', () => { + const out = deserialize( + serialize( + new PropertyUpdatesForObject(42, [new UpdatePropertyCommand('strength', 80, 8)]), + ), + ); + expect(out).toBeInstanceOf(PropertyUpdatesForObject); + expect(out.id).toBe(42); + expect(out.updates[0]).toBeInstanceOf(UpdatePropertyCommand); + expect(out.updates[0].propertyKey).toBe('strength'); + expect(out.updates[0].propertyValue).toBe(80); + }); + + it('preserves per-item class identity across a mixed batch', () => { + // A clobbered name→constructor mapping (two classes sharing a name) would + // surface here as an item deserializing to the wrong class. + const batch = [ + new ServerAnnouncement('a'), + new MoveActionCommand([0, 1], 5), + new Circle([1, 2], 3), + ]; + const out = deserialize(serialize(batch)); + expect(out[0]).toBeInstanceOf(ServerAnnouncement); + expect(out[1]).toBeInstanceOf(MoveActionCommand); + expect(out[2]).toBeInstanceOf(Circle); + }); +}); + +describe('shared character geometry — single source of truth', () => { + it('matches the known body layout', () => { + expect(headRadius).toBe(50); + expect(feetRadius).toBe(20); + expect(boundRadius).toBe((headRadius + feetRadius * 2) * 2); // 180 + }); + + it('posture offsets are measured from the centre of mass (they sum to ~0)', () => { + const sx = headOffset[0] + leftFootOffset[0] + rightFootOffset[0]; + const sy = headOffset[1] + leftFootOffset[1] + rightFootOffset[1]; + expect(sx).toBeCloseTo(0, 4); + expect(sy).toBeCloseTo(0, 4); + }); +}); From d9b80b92cae1650586d1d7d6e714218b5c38ffd8 Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Sat, 20 Jun 2026 11:30:49 +0100 Subject: [PATCH 099/101] ai --- backend/src/objects/character-physical.ts | 3 + backend/src/players/npc.ts | 2 +- backend/src/players/player-base.ts | 2 +- frontend/src/main.scss | 60 ++++++++++++ frontend/src/scripts/charge-indicator.ts | 6 +- .../src/scripts/commands/touch-listener.ts | 65 ++++++++++++- frontend/src/scripts/feedback-hud.ts | 24 +++++ .../prediction/local-character-predictor.ts | 34 +++++-- .../src/scripts/landing-page-background.ts | 7 +- .../scripts/objects/game-object-container.ts | 32 ++++++- frontend/src/scripts/shapes/planet-shape.ts | 9 +- shared/src/objects/game-object.ts | 16 +++- shared/src/objects/types/character-base.ts | 35 +++---- shared/src/objects/types/lamp-base.ts | 11 ++- shared/src/objects/types/planet-base.ts | 12 ++- shared/src/objects/types/projectile-base.ts | 11 ++- shared/src/physics/character-movement.ts | 35 ++++--- shared/src/serialization/serialized-fields.ts | 13 +++ .../physics-determinism.test.mjs.snap | 3 + test/physics-determinism.test.mjs | 83 ++++++++++++++++ test/prediction-reconciliation.test.ts | 96 +++++++++++++++++++ test/serialization.test.mjs | 66 +++++++++++++ 22 files changed, 563 insertions(+), 62 deletions(-) create mode 100644 shared/src/serialization/serialized-fields.ts create mode 100644 test/__snapshots__/physics-determinism.test.mjs.snap create mode 100644 test/physics-determinism.test.mjs create mode 100644 test/prediction-reconciliation.test.ts diff --git a/backend/src/objects/character-physical.ts b/backend/src/objects/character-physical.ts index 2d145e8..11990d9 100644 --- a/backend/src/objects/character-physical.ts +++ b/backend/src/objects/character-physical.ts @@ -126,6 +126,9 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical } private initMovementBridge() { + // The movementState object-literal getters/setters below can't use `this` + // (it would bind to the literal), so alias the character instance. + // eslint-disable-next-line @typescript-eslint/no-this-alias const self = this; this.movementState = { head: this.head, diff --git a/backend/src/players/npc.ts b/backend/src/players/npc.ts index 23177b6..655ade7 100644 --- a/backend/src/players/npc.ts +++ b/backend/src/players/npc.ts @@ -315,7 +315,7 @@ export class NPC extends PlayerBase { const charge = distance > npcTuning.chargeRangeThreshold && - Random.getRandom() < + Random.getRandom() < npcTuning.chargeBaseChance + npcTuning.chargeAggressionChance * this.aggression ? Random.getRandomInRange(npcTuning.chargeMin, 1) : 0; diff --git a/backend/src/players/player-base.ts b/backend/src/players/player-base.ts index 3d6a561..6de34cd 100644 --- a/backend/src/players/player-base.ts +++ b/backend/src/players/player-base.ts @@ -75,7 +75,7 @@ export abstract class PlayerBase extends CommandReceiver { protected findEmptyPositionForPlayer(preferredCenter: vec2): vec2 { let rotation = 0; let radius = 0; - for (; ;) { + for (;;) { const playerPosition = vec2.fromValues( radius * Math.cos(rotation) + preferredCenter.x, radius * Math.sin(rotation) + preferredCenter.y, diff --git a/frontend/src/main.scss b/frontend/src/main.scss index 8d2e613..3ab46d2 100644 --- a/frontend/src/main.scss +++ b/frontend/src/main.scss @@ -332,6 +332,26 @@ body { &::after { content: '\25C9'; } + + // Twin-stick aim indicator: drawn from the button centre toward the + // current drag direction while aiming a shot (see TouchListener). + .aim-line { + position: absolute; + left: 50%; + top: 50%; + width: 130px; + height: 3px; + border-radius: 2px; + transform-origin: left center; + transform: translateY(-50%) rotate(0rad); + background: linear-gradient(90deg, + rgba(255, 255, 255, 0.85), + rgba(255, 255, 255, 0)); + box-shadow: 0 0 6px rgba(0, 0, 0, 0.6); + opacity: 0; + pointer-events: none; + transition: opacity 80ms; + } } &.leap { @@ -717,6 +737,34 @@ body { } } } + + // Centred "Eliminated" overlay shown while the local player is dead; the + // respawn countdown is the server-driven "Reviving in N…" announcement. + .elimination { + position: absolute; + top: 42%; + left: 50%; + transform: translate(-50%, -50%); + text-align: center; + animation: elimination-in 220ms ease-out; + + .elimination-title { + font-weight: 800; + font-size: 3.4rem; + letter-spacing: 0.04em; + color: $accent; + text-shadow: + 0 0 12px rgba(0, 0, 0, 0.9), + 0 0 28px rgba($accent, 0.6); + } + + .elimination-sub { + margin-top: 6px; + font-size: 1.3rem; + opacity: 0.85; + text-shadow: 0 0 8px rgba(0, 0, 0, 0.9); + } + } } @keyframes contested-pulse { @@ -877,4 +925,16 @@ body { 100% { opacity: 0; } +} + +@keyframes elimination-in { + 0% { + opacity: 0; + transform: translate(-50%, -42%) scale(0.9); + } + + 100% { + opacity: 1; + transform: translate(-50%, -50%) scale(1); + } } \ No newline at end of file diff --git a/frontend/src/scripts/charge-indicator.ts b/frontend/src/scripts/charge-indicator.ts index 7b44718..239e33b 100644 --- a/frontend/src/scripts/charge-indicator.ts +++ b/frontend/src/scripts/charge-indicator.ts @@ -1,7 +1,6 @@ import { holdDurationToCharge } from 'shared'; import { Pointer } from './helper/pointer'; - export abstract class ChargeIndicator { private static element?: HTMLElement; private static heldSince = 0; @@ -41,8 +40,9 @@ export abstract class ChargeIndicator { (performance.now() - ChargeIndicator.heldSince) / 1000, ); element.style.opacity = charge < 0.12 ? '0' : '1'; - element.style.background = `conic-gradient(rgba(255, 255, 255, 0.85) ${charge * 360 - }deg, rgba(255, 255, 255, 0.15) 0deg)`; + element.style.background = `conic-gradient(rgba(255, 255, 255, 0.85) ${ + charge * 360 + }deg, rgba(255, 255, 255, 0.15) 0deg)`; element.classList.toggle('full', charge >= 1); if (ChargeIndicator.followPointer) { diff --git a/frontend/src/scripts/commands/touch-listener.ts b/frontend/src/scripts/commands/touch-listener.ts index 9dd2cfa..ab91ce8 100644 --- a/frontend/src/scripts/commands/touch-listener.ts +++ b/frontend/src/scripts/commands/touch-listener.ts @@ -15,6 +15,9 @@ import { localCharacterPredictor } from '../helper/prediction/local-character-pr export class TouchListener extends CommandGenerator { private static readonly deadZone = 8; private static readonly deltaScaling = 0.4; + // Min screen drag (px) from the fire button before a shot is aimed by the + // drag direction instead of firing straight ahead. + private static readonly aimDeadZone = 18; private joystick: HTMLElement; private joystickButton: HTMLElement; @@ -24,9 +27,12 @@ export class TouchListener extends CommandGenerator { private fireButton: HTMLElement; private fireStrengthRing: HTMLElement; + private fireAimLine!: HTMLElement; private leapButton: HTMLElement; private fireDownAt: number | null = null; + private fireButtonCenter: vec2 | null = null; + private fireAimScreen: vec2 | null = null; constructor( private target: HTMLElement, @@ -45,8 +51,12 @@ export class TouchListener extends CommandGenerator { this.fireStrengthRing = document.createElement('div'); this.fireStrengthRing.className = 'strength-ring'; this.fireButton.appendChild(this.fireStrengthRing); + this.fireAimLine = document.createElement('div'); + this.fireAimLine.className = 'aim-line'; + this.fireButton.appendChild(this.fireAimLine); this.fireButton.addEventListener('touchstart', this.fireButtonDownListener); + this.fireButton.addEventListener('touchmove', this.fireButtonMoveListener); this.fireButton.addEventListener('touchend', this.fireButtonUpListener); this.leapButton = document.createElement('div'); @@ -159,12 +169,41 @@ export class TouchListener extends CommandGenerator { this.swallowTouch(event); this.fireDownAt = performance.now(); const rect = this.fireButton.getBoundingClientRect(); - ChargeIndicator.begin(rect.left + rect.width / 2, rect.top + rect.height / 2); + this.fireButtonCenter = vec2.fromValues( + rect.left + rect.width / 2, + rect.top + rect.height / 2, + ); + this.fireAimScreen = null; + ChargeIndicator.begin(this.fireButtonCenter[0], this.fireButtonCenter[1]); + }; + + // Dragging from the fire button aims the shot: the drag vector sets the + // direction, decoupling aim from movement so a touch player can fire one way + // while walking another. A tap with no meaningful drag fires straight ahead. + private fireButtonMoveListener = (event: TouchEvent) => { + this.swallowTouch(event); + if (this.fireDownAt === null || !this.fireButtonCenter) { + return; + } + const touch = event.targetTouches[0] ?? event.changedTouches[0]; + if (!touch) { + return; + } + this.fireAimScreen = vec2.fromValues(touch.clientX, touch.clientY); + const dx = this.fireAimScreen[0] - this.fireButtonCenter[0]; + const dy = this.fireAimScreen[1] - this.fireButtonCenter[1]; + if (dx * dx + dy * dy > TouchListener.aimDeadZone * TouchListener.aimDeadZone) { + this.fireAimLine.style.opacity = '1'; + this.fireAimLine.style.transform = `translateY(-50%) rotate(${Math.atan2(dy, dx)}rad)`; + } else { + this.fireAimLine.style.opacity = '0'; + } }; private fireButtonUpListener = (event: TouchEvent) => { this.swallowTouch(event); ChargeIndicator.end(); + this.fireAimLine.style.opacity = '0'; if (this.fireDownAt === null) { return; } @@ -174,12 +213,28 @@ export class TouchListener extends CommandGenerator { const character = this.game.gameObjects.player; if (!character) { + this.fireButtonCenter = null; + this.fireAimScreen = null; return; } + + // Screen drag → world aim direction (flip Y: screen +y is down). Below the + // dead-zone it's a tap, so fall back to firing along the facing direction. + let direction = character.facingDirection; + if (this.fireButtonCenter && this.fireAimScreen) { + const dx = this.fireAimScreen[0] - this.fireButtonCenter[0]; + const dy = this.fireAimScreen[1] - this.fireButtonCenter[1]; + if (dx * dx + dy * dy > TouchListener.aimDeadZone * TouchListener.aimDeadZone) { + direction = vec2.normalize(vec2.create(), vec2.fromValues(dx, -dy)); + } + } + this.fireButtonCenter = null; + this.fireAimScreen = null; + const aim = vec2.scaleAndAdd( vec2.create(), character.bodyCenter, - character.facingDirection, + direction, settings.touchAimRange, ); this.sendCommandToSubscribers(new PrimaryActionCommand(aim, charge)); @@ -195,8 +250,9 @@ export class TouchListener extends CommandGenerator { const character = this.game.gameObjects.player; if (character) { - this.fireStrengthRing.style.background = `conic-gradient(rgba(255, 255, 255, 0.75) ${character.strengthFraction * 360 - }deg, transparent 0deg)`; + this.fireStrengthRing.style.background = `conic-gradient(rgba(255, 255, 255, 0.75) ${ + character.strengthFraction * 360 + }deg, transparent 0deg)`; } } @@ -207,6 +263,7 @@ export class TouchListener extends CommandGenerator { this.target.removeEventListener('touchend', this.touchEndListener); this.fireButton.removeEventListener('touchstart', this.fireButtonDownListener); + this.fireButton.removeEventListener('touchmove', this.fireButtonMoveListener); this.fireButton.removeEventListener('touchend', this.fireButtonUpListener); this.leapButton.removeEventListener('touchstart', this.leapButtonListener); diff --git a/frontend/src/scripts/feedback-hud.ts b/frontend/src/scripts/feedback-hud.ts index d6a7ea0..adbf068 100644 --- a/frontend/src/scripts/feedback-hud.ts +++ b/frontend/src/scripts/feedback-hud.ts @@ -4,6 +4,7 @@ import { Pointer } from './helper/pointer'; export abstract class FeedbackHud { private static root?: HTMLElement; private static killfeed?: HTMLElement; + private static elimination?: HTMLElement; private static ensureRoot(): { root: HTMLElement; killfeed: HTMLElement } { if (!this.root || !this.killfeed) { @@ -75,6 +76,29 @@ export abstract class FeedbackHud { } } + // Persistent centred overlay shown while the local player is dead and waiting + // to respawn. The countdown itself is the server-driven "Reviving in N…" + // announcement; this makes the death state unmistakable and stays up until + // hideElimination() is called on respawn. + public static showElimination(): void { + if (this.elimination) { + return; + } + const { root } = this.ensureRoot(); + const el = document.createElement('div'); + el.className = 'elimination'; + el.innerHTML = + '
    Eliminated
    ' + + '
    Respawning…
    '; + root.appendChild(el); + this.elimination = el; + } + + public static hideElimination(): void { + this.elimination?.parentElement?.removeChild(this.elimination); + this.elimination = undefined; + } + private static streakName(streak: number): string | undefined { switch (streak) { case 2: diff --git a/frontend/src/scripts/helper/prediction/local-character-predictor.ts b/frontend/src/scripts/helper/prediction/local-character-predictor.ts index c147477..5d23c1c 100644 --- a/frontend/src/scripts/helper/prediction/local-character-predictor.ts +++ b/frontend/src/scripts/helper/prediction/local-character-predictor.ts @@ -17,6 +17,14 @@ import { InputHistory } from './input-history'; const stepMs = 1000 / 200; // match the server's 200 Hz fixed tick const stepSeconds = 1 / 200; +// Clock source for the predictor. Injectable so deterministic reconciliation +// tests can drive prediction without real time passing; defaults to the +// browser wall clock in production. +let nowMs: () => number = () => performance.now(); +export const setPredictorClockForTesting = (clock: () => number): void => { + nowMs = clock; +}; + // Don't replay more than this far back: if the last acknowledged input is older // (a stall, or a backgrounded tab catching up) snap to the authoritative pose // instead of grinding through hundreds of steps. @@ -74,6 +82,12 @@ export class LocalCharacterPredictor { // Latest streamed shooting-strength, to gate predicted leaps as the server does. private currentStrength = settings.playerMaxStrength; + // Whether the local body is alive on the server. While dead (awaiting respawn) + // prediction is suppressed so the corpse/ghost can't keep walking in response + // to input — the server ignores a dead player's movement, so a predicted body + // that still moved would be a pure client-side desync. + private alive = true; + // Continuous state carried between replays (the snapshot carries only poses). // The facing direction is NOT carried — it is re-derived from the pose each // frame (see directionFromPose / simulate); only the latched planet and the @@ -100,7 +114,7 @@ export class LocalCharacterPredictor { // Stamp a movement command and record it for replay. Returns the wall-clock // time the command should carry so the server can echo it back. public recordInput(direction: vec2): number { - const timeMs = Math.round(performance.now()); + const timeMs = Math.round(nowMs()); this.inputHistory.record(direction, timeMs); return timeMs; } @@ -112,7 +126,10 @@ export class LocalCharacterPredictor { ): void { // Inputs only advance the acknowledgement forward; the launch momentum and // leap boundary always adopt the latest authoritative values. - if (this.lastAckClientTimeMs === undefined || clientTimeMs > this.lastAckClientTimeMs) { + if ( + this.lastAckClientTimeMs === undefined || + clientTimeMs > this.lastAckClientTimeMs + ) { this.lastAckClientTimeMs = clientTimeMs; } vec2.set(this.authoritativeBodyVelocity, bodyVelocity[0], bodyVelocity[1]); @@ -121,7 +138,7 @@ export class LocalCharacterPredictor { public setAuthoritative(head: Circle, leftFoot: Circle, rightFoot: Circle): void { this.authoritative = { head, leftFoot, rightFoot }; - this.authReceiptMs = Math.round(performance.now()); + this.authReceiptMs = Math.round(nowMs()); } // The player pressed leap; remember when, so the replay applies the same @@ -129,7 +146,7 @@ export class LocalCharacterPredictor { // it — a rejected leap (no strength/cooldown) self-corrects via the streamed // authoritative momentum. public recordLeap(): number { - const timeMs = Math.round(performance.now()); + const timeMs = Math.round(nowMs()); this.leapHistory.push(timeMs); const cutoff = timeMs - 1500; while (this.leapHistory.length > 0 && this.leapHistory[0] <= cutoff) { @@ -142,6 +159,10 @@ export class LocalCharacterPredictor { this.currentStrength = strength; } + public setAlive(alive: boolean): void { + this.alive = alive; + } + public reset(): void { this.inputHistory.reset(); this.leapHistory = []; @@ -154,6 +175,7 @@ export class LocalCharacterPredictor { this.carriedPlanetId = undefined; this.carriedSecondsSinceSurface = 1; this.hasRender = false; + this.alive = true; } public get canPredict(): boolean { @@ -175,7 +197,7 @@ export class LocalCharacterPredictor { // caller should use (otherwise fall back to interpolation). `planets` is the // current collision world; `frameSeconds` is the render delta. public update(planets: Array, frameSeconds: number): boolean { - if (!this.canPredict || this.isAnimatingInOrOut) { + if (!this.alive || !this.canPredict || this.isAnimatingInOrOut) { // Resume from the authoritative pose with a snap rather than gliding from // a stale rendered one. this.hasRender = false; @@ -209,7 +231,7 @@ export class LocalCharacterPredictor { private simulate(): CharacterMovementState { const auth = this.authoritative!; - const now = Math.round(performance.now()); + const now = Math.round(nowMs()); // Predict forward from the latest snapshot by its age, clamped so a stall // (or a backgrounded tab catching up) snaps instead of grinding hundreds of // steps. This advances with wall-clock time even while a held key sends no diff --git a/frontend/src/scripts/landing-page-background.ts b/frontend/src/scripts/landing-page-background.ts index 6371e62..bafe559 100644 --- a/frontend/src/scripts/landing-page-background.ts +++ b/frontend/src/scripts/landing-page-background.ts @@ -11,10 +11,11 @@ import { import { settings, rgb, PlanetBase, Random } from 'shared'; import { PlanetShape } from './shapes/planet-shape'; -// colorMixQ ends of PlanetShape's blue<->red gradient, so the two backdrop -// planets read as the two in-game teams. +// PlanetShape colours by mixing blue (0) -> red (1). The two backdrop planets +// read as the two in-game teams; the red planet is pulled a little off the +// pure-red end so it shows as a more muted, less saturated red. const bluePlanet = 0; -const redPlanet = 1; +const redPlanet = 0.85; export class LandingPageBackground { private isActive = true; diff --git a/frontend/src/scripts/objects/game-object-container.ts b/frontend/src/scripts/objects/game-object-container.ts index fa48f08..2b03836 100644 --- a/frontend/src/scripts/objects/game-object-container.ts +++ b/frontend/src/scripts/objects/game-object-container.ts @@ -16,6 +16,7 @@ import { } from 'shared'; import { BeforeDestroyCommand } from '../commands/types/before-destroy'; import { StepCommand } from '../commands/types/step'; +import { FeedbackHud } from '../feedback-hud'; import { Game } from '../game'; import { serverTimeline } from '../helper/server-timeline'; import { PredictablePlanet } from '../helper/prediction/client-character-world'; @@ -28,6 +29,7 @@ export class GameObjectContainer extends CommandReceiver { protected objects: Map = new Map(); public player!: CharacterView; public camera: Camera = new Camera(this.game); + private wasLocalPlayerAlive = false; protected commandExecutors: CommandExecutors = { [CreatePlayerCommand.type]: (c: CreatePlayerCommand) => { @@ -37,6 +39,9 @@ export class GameObjectContainer extends CommandReceiver { // Fresh character (first spawn or respawn at a far planet): drop any // prediction state so it snaps to the new body instead of gliding across. localCharacterPredictor.reset(); + // Respawned — clear the elimination overlay. + FeedbackHud.hideElimination(); + this.wasLocalPlayerAlive = true; }, [CreateObjectsCommand.type]: (c: CreateObjectsCommand) => @@ -45,15 +50,32 @@ export class GameObjectContainer extends CommandReceiver { [StepCommand.type]: (c: StepCommand) => { this.defaultCommandExecutor(c); - if (this.player) { + // The local body is alive only while its object still exists (the server + // deletes it on death) and its health is above zero — `player` keeps + // pointing at the now-stale view after death, so both checks are needed. + const bodyPresent = !!this.player && this.objects.has(this.player.id); + const alive = bodyPresent && this.player.health > 0; + + // Show the elimination overlay on the alive→dead edge; CreatePlayerCommand + // clears it on respawn. + if (this.wasLocalPlayerAlive && !alive) { + FeedbackHud.showElimination(); + } + this.wasLocalPlayerAlive = alive; + + if (bodyPresent) { // Override the interpolated pose of the local player with the predicted - // one so it responds to input immediately. Remote objects keep - // interpolating. A large correction (respawn / death) snaps inside the - // predictor rather than rubber-banding. + // one so it responds to input immediately. Suppressed while dead so the + // corpse can't be walked around (the server ignores a dead player's + // input — a moving predicted body would be a pure client-side desync). + // A large correction (respawn / death) snaps inside the predictor. + localCharacterPredictor.setAlive(alive); localCharacterPredictor.setStrength( this.player.strengthFraction * settings.playerMaxStrength, ); - if (localCharacterPredictor.update(this.predictablePlanets(), c.deltaTimeInSeconds)) { + if ( + localCharacterPredictor.update(this.predictablePlanets(), c.deltaTimeInSeconds) + ) { this.player.head = localCharacterPredictor.head; this.player.leftFoot = localCharacterPredictor.leftFoot; this.player.rightFoot = localCharacterPredictor.rightFoot; diff --git a/frontend/src/scripts/shapes/planet-shape.ts b/frontend/src/scripts/shapes/planet-shape.ts index 1d1ec9e..ceb2e35 100644 --- a/frontend/src/scripts/shapes/planet-shape.ts +++ b/frontend/src/scripts/shapes/planet-shape.ts @@ -103,8 +103,8 @@ export class PlanetShape extends PolygonFactory(settings.planetEdgeCount, 0) { if (dist < minDistance) { minDistance = dist; color = mix(${colorToString(settings.bluePlanetColor)}, ${colorToString( - settings.redPlanetColor, - )}, planetColorMixQ[j]); + settings.redPlanetColor, + )}, planetColorMixQ[j]); } } @@ -141,10 +141,7 @@ export class PlanetShape extends PolygonFactory(settings.planetEdgeCount, 0) { ) { super(vertices); - this.cullCenter = vertices.reduce( - (sum, v) => vec2.add(sum, sum, v), - vec2.create(), - ); + this.cullCenter = vertices.reduce((sum, v) => vec2.add(sum, sum, v), vec2.create()); vec2.scale(this.cullCenter, this.cullCenter, 1 / vertices.length); this.cullRadius = vertices.reduce( diff --git a/shared/src/objects/game-object.ts b/shared/src/objects/game-object.ts index 4793d2f..f851137 100644 --- a/shared/src/objects/game-object.ts +++ b/shared/src/objects/game-object.ts @@ -15,10 +15,24 @@ export class RemoteCall { } } +// Every object property streamed via UpdatePropertyCommand. A single union means +// a typo or rename on the producing (server *-physical) or consuming (client +// *-view) side is a compile error instead of a silently dropped update that +// just stops a body interpolating. The wire format is unchanged — these remain +// the same strings, only now compiler-checked at both ends. +export type SyncPropertyKey = + | 'head' + | 'leftFoot' + | 'rightFoot' + | 'strength' + | 'center' + | 'ownership' + | 'rotation'; + @serializable export class UpdatePropertyCommand extends Command { constructor( - public readonly propertyKey: string, + public readonly propertyKey: SyncPropertyKey, public readonly propertyValue: any, public readonly rateOfChange: any, ) { diff --git a/shared/src/objects/types/character-base.ts b/shared/src/objects/types/character-base.ts index b461127..f6cad5c 100644 --- a/shared/src/objects/types/character-base.ts +++ b/shared/src/objects/types/character-base.ts @@ -1,6 +1,7 @@ import { Id } from '../../communication/id'; import { Circle } from '../../helper/circle'; import { serializable } from '../../serialization/serializable'; +import { toArrayFromFields } from '../../serialization/serialized-fields'; import { GameObject } from '../game-object'; export enum CharacterTeam { @@ -11,6 +12,18 @@ export enum CharacterTeam { @serializable export class CharacterBase extends GameObject { + private static readonly serializedFields = [ + 'id', + 'name', + 'killCount', + 'deathCount', + 'team', + 'health', + 'head', + 'leftFoot', + 'rightFoot', + ] as const; + constructor( id: Id, public name: string, @@ -26,37 +39,27 @@ export class CharacterBase extends GameObject { } // eslint-disable-next-line @typescript-eslint/no-unused-vars - public onShoot(strength: number) { } + public onShoot(strength: number) {} - public onLeap() { } + public onLeap() {} // eslint-disable-next-line @typescript-eslint/no-unused-vars - public onHitConfirmed(charge?: number) { } + public onHitConfirmed(charge?: number) {} // eslint-disable-next-line @typescript-eslint/no-unused-vars - public onKillConfirmed(victimName?: string, streak?: number, charge?: number) { } + public onKillConfirmed(victimName?: string, streak?: number, charge?: number) {} public setHealth(health: number) { this.health = health; } - public onDie() { } + public onDie() {} public setKillCount(killCount: number) { this.killCount = killCount; } public toArray(): Array { - return [ - this.id, - this.name, - this.killCount, - this.deathCount, - this.team, - this.health, - this.head, - this.leftFoot, - this.rightFoot, - ]; + return toArrayFromFields(this, CharacterBase.serializedFields); } } diff --git a/shared/src/objects/types/lamp-base.ts b/shared/src/objects/types/lamp-base.ts index 794e75b..9f86ca6 100644 --- a/shared/src/objects/types/lamp-base.ts +++ b/shared/src/objects/types/lamp-base.ts @@ -1,9 +1,17 @@ import { vec2, vec3 } from 'gl-matrix'; import { Id, serializable } from '../../main'; +import { toArrayFromFields } from '../../serialization/serialized-fields'; import { GameObject } from '../game-object'; @serializable export class LampBase extends GameObject { + private static readonly serializedFields = [ + 'id', + 'center', + 'color', + 'lightness', + ] as const; + constructor( id: Id, public center: vec2, @@ -19,7 +27,6 @@ export class LampBase extends GameObject { public setLight(color: vec3, lightness: number) {} public toArray(): Array { - const { id, center, color, lightness } = this; - return [id, center, color, lightness]; + return toArrayFromFields(this, LampBase.serializedFields); } } diff --git a/shared/src/objects/types/planet-base.ts b/shared/src/objects/types/planet-base.ts index e3835e1..bafea38 100644 --- a/shared/src/objects/types/planet-base.ts +++ b/shared/src/objects/types/planet-base.ts @@ -2,12 +2,22 @@ import { vec2 } from 'gl-matrix'; import { Random } from '../../helper/random'; import { settings } from '../../settings'; import { serializable } from '../../serialization/serializable'; +import { toArrayFromFields } from '../../serialization/serialized-fields'; import { GameObject } from '../game-object'; import { Id } from '../../communication/id'; import { CharacterTeam } from './character-base'; @serializable export class PlanetBase extends GameObject { + // centre/radius are derived from vertices in the constructor, so they are not + // serialized — only the constructor parameters are. + private static readonly serializedFields = [ + 'id', + 'vertices', + 'ownership', + 'isKeystone', + ] as const; + public readonly center: vec2; public readonly radius: number; @@ -57,6 +67,6 @@ export class PlanetBase extends GameObject { } public toArray(): Array { - return [this.id, this.vertices, this.ownership, this.isKeystone]; + return toArrayFromFields(this, PlanetBase.serializedFields); } } diff --git a/shared/src/objects/types/projectile-base.ts b/shared/src/objects/types/projectile-base.ts index c334cb8..f96fd94 100644 --- a/shared/src/objects/types/projectile-base.ts +++ b/shared/src/objects/types/projectile-base.ts @@ -1,12 +1,21 @@ import { vec2 } from 'gl-matrix'; import { settings } from '../../settings'; import { serializable } from '../../serialization/serializable'; +import { toArrayFromFields } from '../../serialization/serialized-fields'; import { GameObject } from '../game-object'; import { Id } from '../../communication/id'; import { CharacterTeam } from './character-base'; @serializable export class ProjectileBase extends GameObject { + private static readonly serializedFields = [ + 'id', + 'center', + 'radius', + 'team', + 'strength', + ] as const; + constructor( id: Id, public center: vec2, @@ -23,6 +32,6 @@ export class ProjectileBase extends GameObject { } public toArray(): Array { - return [this.id, this.center, this.radius, this.team, this.strength]; + return toArrayFromFields(this, ProjectileBase.serializedFields); } } diff --git a/shared/src/physics/character-movement.ts b/shared/src/physics/character-movement.ts index a5744b9..21355a5 100644 --- a/shared/src/physics/character-movement.ts +++ b/shared/src/physics/character-movement.ts @@ -107,7 +107,13 @@ const springMove = ( const keepPosture = (state: CharacterMovementState) => { const center = characterCenter(state); - springMove(state, state.leftFoot, center, leftFootOffset, settings.postureFeetStiffness); + springMove( + state, + state.leftFoot, + center, + leftFootOffset, + settings.postureFeetStiffness, + ); springMove( state, state.rightFoot, @@ -133,7 +139,12 @@ const carryWithRotatingPlanet = ( const angle = -planet.angularVelocity * deltaTimeInSeconds; const center = planet.center; state.head.center = vec2.rotate(vec2.create(), state.head.center, center, angle); - state.leftFoot.center = vec2.rotate(vec2.create(), state.leftFoot.center, center, angle); + state.leftFoot.center = vec2.rotate( + vec2.create(), + state.leftFoot.center, + center, + angle, + ); state.rightFoot.center = vec2.rotate( vec2.create(), state.rightFoot.center, @@ -148,10 +159,7 @@ const carryWithRotatingPlanet = ( // server's leap() and the client's prediction apply the exact same impulse. // The caller does the gating (strength, cooldown, alive); this is a no-op when // not on a surface. -export const applyLeapImpulse = ( - state: CharacterMovementState, - moveDirection: vec2, -) => { +export const applyLeapImpulse = (state: CharacterMovementState, moveDirection: vec2) => { const planet = state.currentPlanet; if (!planet) { return; @@ -206,7 +214,9 @@ export const tickPlanetDetachment = ( state: CharacterMovementState, deltaTimeInSeconds: number, ) => { - if ((state.secondsSinceOnSurface += deltaTimeInSeconds) > settings.planetDetachmentSeconds) { + if ( + (state.secondsSinceOnSurface += deltaTimeInSeconds) > settings.planetDetachmentSeconds + ) { state.currentPlanet = undefined; } }; @@ -255,10 +265,7 @@ export const decayMomentum = ( } }; -const decayBodyMomentum = ( - state: CharacterMovementState, - deltaTimeInSeconds: number, -) => { +const decayBodyMomentum = (state: CharacterMovementState, deltaTimeInSeconds: number) => { decayMomentum(state.bodyVelocity, !!state.currentPlanet, deltaTimeInSeconds); }; @@ -293,7 +300,11 @@ export const stepCharacterMovement = ( const center = characterCenter(state); const grounds = world.groundsNear(center, boundRadius + settings.maxGravityDistance); - const movementForce = vec2.scale(inputDirection, inputDirection, settings.maxAcceleration); + const movementForce = vec2.scale( + inputDirection, + inputDirection, + settings.maxAcceleration, + ); applyForce(state.leftFoot, movementForce, deltaTimeInSeconds); applyForce(state.rightFoot, movementForce, deltaTimeInSeconds); diff --git a/shared/src/serialization/serialized-fields.ts b/shared/src/serialization/serialized-fields.ts new file mode 100644 index 0000000..48733e8 --- /dev/null +++ b/shared/src/serialization/serialized-fields.ts @@ -0,0 +1,13 @@ +// Derive a serializable object's positional wire array from a single declared +// list of field names, so toArray() and the constructor share ONE source of +// truth for field order instead of a hand-written array that can silently drift +// out of step with the parameters. +// +// deserialize reconstructs via `new Ctor(...array.slice(1))`, so the field list +// MUST name the constructor's parameters in order. Fields a constructor +// recomputes from others (e.g. a planet's centre/radius from its vertices) are +// derived, not serialized, and so are deliberately absent from the list. +export const toArrayFromFields = ( + object: any, + fields: ReadonlyArray, +): Array => fields.map((field) => object[field]); diff --git a/test/__snapshots__/physics-determinism.test.mjs.snap b/test/__snapshots__/physics-determinism.test.mjs.snap new file mode 100644 index 0000000..50ab1c3 --- /dev/null +++ b/test/__snapshots__/physics-determinism.test.mjs.snap @@ -0,0 +1,3 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`shared character simulation determinism > matches the pinned reference pose (changes only with intentional physics edits) 1`] = `"{"head":[76.14,123.412],"leftFoot":[83.214,105.036],"rightFoot":[79.974,123.01],"bodyVelocity":[0,0]}"`; diff --git a/test/physics-determinism.test.mjs b/test/physics-determinism.test.mjs new file mode 100644 index 0000000..d0fee1a --- /dev/null +++ b/test/physics-determinism.test.mjs @@ -0,0 +1,83 @@ +// Determinism guard for the shared character simulation. The client predictor +// and the authoritative server run the EXACT same stepCharacterMovement; if it +// were non-deterministic (a stray Math.random / Date, or an order-dependent +// reduce) prediction would rubber-band and could never reconcile. This is also +// the regression net for the upcoming GC/scratch-pool perf rewrites: the pinned +// hash must not change unless physics behaviour is intentionally changed. +import { describe, it, expect } from 'vitest'; +import { createRequire } from 'node:module'; + +const require = createRequire(import.meta.url); +const shared = require('../shared/lib/main.js'); +const { vec2 } = require('../shared/node_modules/gl-matrix'); + +const { + stepCharacterMovement, + resolveCircleMovement, + headRadius, + feetRadius, + headOffset, + leftFootOffset, + rightFootOffset, +} = shared; + +const makeBody = (center, radius) => ({ + center: vec2.clone(center), + radius, + velocity: vec2.create(), + lastNormal: vec2.fromValues(0, 1), + restitution: 0, +}); + +// A free-space world (no planets): the body is driven purely by the movement +// input force, posture springs and momentum decay — enough to exercise the +// deterministic core without coupling the test to planet SDF geometry. +const emptyWorld = { + groundsNear: () => [], + stepBody: (body, dt) => { + resolveCircleMovement(body, dt, []); + return undefined; + }, +}; + +const stepSeconds = 1 / 200; + +// Run a fixed, scripted input sequence through the shared sim and return a +// stable string snapshot of the final pose + carried momentum. +const runSimulation = () => { + const start = vec2.fromValues(100, 100); + const state = { + head: makeBody(vec2.add(vec2.create(), start, headOffset), headRadius), + leftFoot: makeBody(vec2.add(vec2.create(), start, leftFootOffset), feetRadius), + rightFoot: makeBody(vec2.add(vec2.create(), start, rightFootOffset), feetRadius), + direction: 0, + currentPlanet: undefined, + secondsSinceOnSurface: 1, + bodyVelocity: vec2.create(), + }; + + for (let i = 0; i < 300; i++) { + const angle = i * 0.1; + const input = vec2.fromValues(Math.cos(angle), Math.sin(angle)); + stepCharacterMovement(state, emptyWorld, input, stepSeconds); + } + + const round = (v) => Math.round(v * 1000) / 1000; + return JSON.stringify({ + head: [round(state.head.center[0]), round(state.head.center[1])], + leftFoot: [round(state.leftFoot.center[0]), round(state.leftFoot.center[1])], + rightFoot: [round(state.rightFoot.center[0]), round(state.rightFoot.center[1])], + bodyVelocity: [round(state.bodyVelocity[0]), round(state.bodyVelocity[1])], + }); +}; + +describe('shared character simulation determinism', () => { + it('produces identical output across independent runs', () => { + expect(runSimulation()).toBe(runSimulation()); + }); + + it('matches the pinned reference pose (changes only with intentional physics edits)', () => { + // Regression pin — update deliberately when physics behaviour changes. + expect(runSimulation()).toMatchSnapshot(); + }); +}); diff --git a/test/prediction-reconciliation.test.ts b/test/prediction-reconciliation.test.ts new file mode 100644 index 0000000..98ffc1d --- /dev/null +++ b/test/prediction-reconciliation.test.ts @@ -0,0 +1,96 @@ +// Reconciliation guard for the REAL client predictor. It exercises +// LocalCharacterPredictor end-to-end with an injected clock, verifying the two +// properties reconciliation depends on: +// 1. a fully-acknowledged snapshot reproduces the authoritative pose exactly +// (no spurious drift on top of server truth), and +// 2. un-acknowledged input is replayed forward deterministically. +// This is the net for prediction-touching changes (the death-while-dead fix, +// future netcode work) — a regression shows up as drift or non-determinism. +import { describe, it, expect } from 'vitest'; +import { + LocalCharacterPredictor, + setPredictorClockForTesting, +} from '../frontend/src/scripts/helper/prediction/local-character-predictor'; + +const HEAD_RADIUS = 50; +const FEET_RADIUS = 20; + +// A Circle-shaped pose; the predictor only reads .center / .radius, so plain +// objects with array centres are sufficient (and avoid importing gl-matrix). +const poseAt = (cx: number, cy: number) => ({ + head: { center: [cx, cy + 37], radius: HEAD_RADIUS }, + leftFoot: { center: [cx - 33, cy - 18], radius: FEET_RADIUS }, + rightFoot: { center: [cx + 33, cy - 18], radius: FEET_RADIUS }, +}); + +describe('local prediction reconciliation', () => { + it('reproduces the authoritative pose exactly when all input is acknowledged', () => { + let clock = 1000; + setPredictorClockForTesting(() => clock); + + const predictor = new LocalCharacterPredictor(); + const auth = poseAt(500, 500); + + const t = predictor.recordInput([1, 0]); + predictor.acknowledge(t, [0, 0], -Infinity); // server has consumed this input + predictor.setStrength(80); + predictor.setAuthoritative(auth.head as never, auth.leftFoot as never, auth.rightFoot as never); + + // No clock advance → zero replay window → predicted pose == authoritative. + const used = predictor.update([], 1 / 60); + + expect(used).toBe(true); + expect(predictor.head.center[0]).toBeCloseTo(auth.head.center[0], 5); + expect(predictor.head.center[1]).toBeCloseTo(auth.head.center[1], 5); + expect(predictor.leftFoot.center[0]).toBeCloseTo(auth.leftFoot.center[0], 5); + expect(predictor.rightFoot.center[0]).toBeCloseTo(auth.rightFoot.center[0], 5); + }); + + it('replays un-acknowledged input deterministically', () => { + const drive = () => { + let clock = 0; + setPredictorClockForTesting(() => clock); + + const predictor = new LocalCharacterPredictor(); + clock = 1000; + predictor.acknowledge(900, [0, 0], -Infinity); // baseline ack (older than the input below) + predictor.setStrength(80); + const auth = poseAt(0, 0); + predictor.setAuthoritative(auth.head as never, auth.leftFoot as never, auth.rightFoot as never); + predictor.recordInput([1, 0]); // unacked rightward input at t=1000 + + clock = 1100; // replay ~100 ms forward + predictor.update([], 1 / 60); + return [ + predictor.head.center[0], + predictor.head.center[1], + predictor.leftFoot.center[0], + predictor.rightFoot.center[0], + ]; + }; + + const a = drive(); + const b = drive(); + expect(a).toEqual(b); // deterministic replay + expect(a.every((n) => Number.isFinite(n))).toBe(true); + expect(a[0]).toBeGreaterThan(0.5); // rightward input actually moved the body + }); + + it('suppresses prediction while the local player is dead', () => { + let clock = 5000; + setPredictorClockForTesting(() => clock); + + const predictor = new LocalCharacterPredictor(); + const auth = poseAt(200, 200); + const t = predictor.recordInput([1, 0]); + predictor.acknowledge(t, [0, 0], -Infinity); + predictor.setStrength(80); + predictor.setAuthoritative(auth.head as never, auth.leftFoot as never, auth.rightFoot as never); + predictor.setAlive(false); // dead, awaiting respawn + + clock = 5200; // input + elapsed time that would otherwise be replayed forward + // Even with a valid authoritative pose and pending input, a dead body must + // not be predicted/moved — that was the "move while dead" bug. + expect(predictor.update([], 1 / 60)).toBe(false); + }); +}); diff --git a/test/serialization.test.mjs b/test/serialization.test.mjs index 4387661..9c7bc11 100644 --- a/test/serialization.test.mjs +++ b/test/serialization.test.mjs @@ -17,6 +17,11 @@ const { MoveActionCommand, UpdatePropertyCommand, PropertyUpdatesForObject, + // networked entity bases — their toArray() must mirror their constructor order + CharacterBase, + PlanetBase, + ProjectileBase, + LampBase, // geometry — single source of truth shared by server & client prediction headRadius, feetRadius, @@ -77,6 +82,67 @@ describe('serialization round-trip (built shared lib)', () => { }); }); +describe('networked entity round-trips (toArray ↔ constructor contract)', () => { + it('round-trips a ProjectileBase', () => { + const out = deserialize(serialize(new ProjectileBase(7, [10, 20], 30, 'blue', 40))); + expect(out).toBeInstanceOf(ProjectileBase); + expect(out.id).toBe(7); + expect(out.center[0]).toBeCloseTo(10, 5); + expect(out.center[1]).toBeCloseTo(20, 5); + expect(out.radius).toBe(30); + expect(out.team).toBe('blue'); + expect(out.strength).toBe(40); + }); + + it('round-trips a CharacterBase with its nested body Circles', () => { + const out = deserialize( + serialize( + new CharacterBase( + 8, + 'Bob', + 2, + 1, + 'red', + 100, + new Circle([1, 2], 50), + new Circle([3, 4], 20), + new Circle([5, 6], 20), + ), + ), + ); + expect(out).toBeInstanceOf(CharacterBase); + expect(out.id).toBe(8); + expect(out.name).toBe('Bob'); + expect(out.killCount).toBe(2); + expect(out.deathCount).toBe(1); + expect(out.team).toBe('red'); + expect(out.health).toBe(100); + expect(out.head).toBeInstanceOf(Circle); + expect(out.head.center[0]).toBeCloseTo(1, 5); + expect(out.head.radius).toBe(50); + }); + + it('round-trips a LampBase', () => { + const out = deserialize(serialize(new LampBase(9, [7, 8], [1, 0.5, 0.2], 0.8))); + expect(out).toBeInstanceOf(LampBase); + expect(out.center[1]).toBeCloseTo(8, 5); + expect(out.color[2]).toBeCloseTo(0.2, 5); + expect(out.lightness).toBeCloseTo(0.8, 5); + }); + + it('round-trips a PlanetBase (derived centre/radius recomputed from vertices)', () => { + const out = deserialize( + serialize(new PlanetBase(10, [[0, 0], [100, 0], [50, 100]], 0.7, true)), + ); + expect(out).toBeInstanceOf(PlanetBase); + expect(out.id).toBe(10); + expect(out.vertices).toHaveLength(3); + expect(out.ownership).toBeCloseTo(0.7, 5); + expect(out.isKeystone).toBe(true); + expect(out.center[0]).toBeCloseTo(50, 5); // recomputed by the constructor + }); +}); + describe('shared character geometry — single source of truth', () => { it('matches the known body layout', () => { expect(headRadius).toBe(50); From f19ada7a1cb9170f8a9daa6a8919ddc5163eac2e Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Sat, 20 Jun 2026 11:47:06 +0100 Subject: [PATCH 100/101] Fix --- shared/src/helper/calculate-view-area.ts | 4 ++-- shared/src/helper/rotate-90-deg.ts | 2 +- shared/src/helper/rotate-minus-90-deg.ts | 2 +- shared/src/objects/types/planet-base.ts | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/shared/src/helper/calculate-view-area.ts b/shared/src/helper/calculate-view-area.ts index 8148975..00ebd50 100644 --- a/shared/src/helper/calculate-view-area.ts +++ b/shared/src/helper/calculate-view-area.ts @@ -14,8 +14,8 @@ export const calculateViewArea = ( ); viewArea.topLeft = vec2.fromValues( - center.x - viewArea.size.x / 2, - center.y + viewArea.size.y / 2, + center[0] - viewArea.size[0] / 2, + center[1] + viewArea.size[1] / 2, ); return viewArea; diff --git a/shared/src/helper/rotate-90-deg.ts b/shared/src/helper/rotate-90-deg.ts index 1911a63..2196fa8 100644 --- a/shared/src/helper/rotate-90-deg.ts +++ b/shared/src/helper/rotate-90-deg.ts @@ -1,3 +1,3 @@ import { vec2 } from 'gl-matrix'; -export const rotate90Deg = (vec: vec2): vec2 => vec2.fromValues(-vec.y, vec.x); +export const rotate90Deg = (vec: vec2): vec2 => vec2.fromValues(-vec[1], vec[0]); diff --git a/shared/src/helper/rotate-minus-90-deg.ts b/shared/src/helper/rotate-minus-90-deg.ts index 5021d64..3f4773f 100644 --- a/shared/src/helper/rotate-minus-90-deg.ts +++ b/shared/src/helper/rotate-minus-90-deg.ts @@ -1,3 +1,3 @@ import { vec2 } from 'gl-matrix'; -export const rotateMinus90Deg = (vec: vec2): vec2 => vec2.fromValues(vec.y, -vec.x); +export const rotateMinus90Deg = (vec: vec2): vec2 => vec2.fromValues(vec[1], -vec[0]); diff --git a/shared/src/objects/types/planet-base.ts b/shared/src/objects/types/planet-base.ts index bafea38..2f90eb1 100644 --- a/shared/src/objects/types/planet-base.ts +++ b/shared/src/objects/types/planet-base.ts @@ -54,10 +54,10 @@ export class PlanetBase extends GameObject { for (let i = 0; i < vertexCount; i++) { vertices.push( vec2.fromValues( - center.x + + center[0] + (width / 2) * Math.cos((i / vertexCount) * -Math.PI * 2) + Random.getRandomInRange(-randomness, randomness), - center.y + + center[1] + (height / 2) * Math.sin((i / vertexCount) * -Math.PI * 2) + Random.getRandomInRange(-randomness, randomness), ), From 614db16e41aded8738d9f25e5c6562445dcd4477 Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Sun, 21 Jun 2026 10:36:15 +0100 Subject: [PATCH 101/101] Fix lint --- backend/src/objects/character-physical.ts | 2 +- shared/src/helper/array.ts | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/backend/src/objects/character-physical.ts b/backend/src/objects/character-physical.ts index 11990d9..bdc8873 100644 --- a/backend/src/objects/character-physical.ts +++ b/backend/src/objects/character-physical.ts @@ -486,7 +486,7 @@ export class CharacterPhysical extends CharacterBase implements DynamicPhysical this.projectileStrength = Math.min( settings.playerMaxStrength, this.projectileStrength + - settings.playerStrengthRegenerationPerSeconds * deltaTimeInSeconds, + settings.playerStrengthRegenerationPerSeconds * deltaTimeInSeconds, ); this.regenerateHealth(deltaTimeInSeconds); diff --git a/shared/src/helper/array.ts b/shared/src/helper/array.ts index 5a0ff29..8c86ffa 100644 --- a/shared/src/helper/array.ts +++ b/shared/src/helper/array.ts @@ -1,4 +1,7 @@ declare global { + // `T` must stay to merge with the global `Array` (otherwise TS2428), but it + // is unused by the x/y aliases below. + // eslint-disable-next-line @typescript-eslint/no-unused-vars interface Array { x: number; y: number;