diff --git a/docs/assets/favicon.ico b/docs/assets/favicon.ico
deleted file mode 100644
index 708af51..0000000
Binary files a/docs/assets/favicon.ico and /dev/null differ
diff --git a/docs/assets/fonts/rational-integer.regular.ttf b/docs/assets/fonts/rational-integer.regular.ttf
deleted file mode 100644
index bcaa41e..0000000
Binary files a/docs/assets/fonts/rational-integer.regular.ttf and /dev/null differ
diff --git a/docs/assets/images/asteroid.png b/docs/assets/images/asteroid.png
deleted file mode 100644
index 6cf41df..0000000
Binary files a/docs/assets/images/asteroid.png and /dev/null differ
diff --git a/docs/assets/images/boss.png b/docs/assets/images/boss.png
deleted file mode 100644
index 2baf41d..0000000
Binary files a/docs/assets/images/boss.png and /dev/null differ
diff --git a/docs/assets/images/galaxy_bg.png b/docs/assets/images/galaxy_bg.png
deleted file mode 100644
index 1d18c2a..0000000
Binary files a/docs/assets/images/galaxy_bg.png and /dev/null differ
diff --git a/docs/assets/images/rocket.png b/docs/assets/images/rocket.png
deleted file mode 100644
index 4e534d4..0000000
Binary files a/docs/assets/images/rocket.png and /dev/null differ
diff --git a/docs/favicon.ico b/docs/favicon.ico
deleted file mode 100644
index 708af51..0000000
Binary files a/docs/favicon.ico and /dev/null differ
diff --git a/docs/index.html b/docs/index.html
deleted file mode 100644
index f245bd0..0000000
--- a/docs/index.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
- Space Shooter
-
-
- game
-
-
\ No newline at end of file
diff --git a/docs/index.js b/docs/index.js
deleted file mode 100644
index dfce19a..0000000
--- a/docs/index.js
+++ /dev/null
@@ -1,4540 +0,0 @@
-/*
- * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
- * This devtool is neither made for production nor for readable output files.
- * It uses "eval()" calls to create a separate source file in the browser devtools.
- * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
- * or disable the default devtool with "devtool: false".
- * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
- */
-/******/ (() => { // webpackBootstrap
-/******/ var __webpack_modules__ = ({
-
-/***/ "./node_modules/call-bind/callBound.js":
-/*!*********************************************!*\
- !*** ./node_modules/call-bind/callBound.js ***!
- \*********************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-"use strict";
-eval("\n\nvar GetIntrinsic = __webpack_require__(/*! get-intrinsic */ \"./node_modules/get-intrinsic/index.js\");\n\nvar callBind = __webpack_require__(/*! ./ */ \"./node_modules/call-bind/index.js\");\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/call-bind/callBound.js?");
-
-/***/ }),
-
-/***/ "./node_modules/call-bind/index.js":
-/*!*****************************************!*\
- !*** ./node_modules/call-bind/index.js ***!
- \*****************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-"use strict";
-eval("\n\nvar bind = __webpack_require__(/*! function-bind */ \"./node_modules/function-bind/index.js\");\nvar GetIntrinsic = __webpack_require__(/*! get-intrinsic */ \"./node_modules/get-intrinsic/index.js\");\nvar setFunctionLength = __webpack_require__(/*! set-function-length */ \"./node_modules/set-function-length/index.js\");\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/call-bind/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/define-data-property/index.js":
-/*!****************************************************!*\
- !*** ./node_modules/define-data-property/index.js ***!
- \****************************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-"use strict";
-eval("\n\nvar hasPropertyDescriptors = __webpack_require__(/*! has-property-descriptors */ \"./node_modules/has-property-descriptors/index.js\")();\n\nvar GetIntrinsic = __webpack_require__(/*! get-intrinsic */ \"./node_modules/get-intrinsic/index.js\");\n\nvar $defineProperty = hasPropertyDescriptors && GetIntrinsic('%Object.defineProperty%', true);\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nvar $SyntaxError = GetIntrinsic('%SyntaxError%');\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar gopd = __webpack_require__(/*! gopd */ \"./node_modules/gopd/index.js\");\n\n/** @type {(obj: Record, property: PropertyKey, value: unknown, nonEnumerable?: boolean | null, nonWritable?: boolean | null, nonConfigurable?: boolean | null, loose?: boolean) => void} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/define-data-property/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/earcut/src/earcut.js":
-/*!*******************************************!*\
- !*** ./node_modules/earcut/src/earcut.js ***!
- \*******************************************/
-/***/ ((module) => {
-
-"use strict";
-eval("\n\nmodule.exports = earcut;\nmodule.exports[\"default\"] = earcut;\n\nfunction earcut(data, holeIndices, dim) {\n\n dim = dim || 2;\n\n var hasHoles = holeIndices && holeIndices.length,\n outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n outerNode = linkedList(data, 0, outerLen, dim, true),\n triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n var minX, minY, maxX, maxY, x, y, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 32767 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim | 0);\n triangles.push(ear.i / dim | 0);\n triangles.push(next.i / dim | 0);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n var p = c.next;\n while (p !== a) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(x0, y0, minX, minY, invSize),\n maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim | 0);\n triangles.push(p.i / dim | 0);\n triangles.push(b.i / dim | 0);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n var bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n var bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n filterPoints(bridgeReverse, bridgeReverse.next);\n return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n m = p.x < p.next.x ? p : p.next;\n if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = (x - minX) * invSize | 0;\n y = (y - minY) * invSize | 0;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = 0;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/earcut/src/earcut.js?");
-
-/***/ }),
-
-/***/ "./node_modules/eventemitter3/index.js":
-/*!*********************************************!*\
- !*** ./node_modules/eventemitter3/index.js ***!
- \*********************************************/
-/***/ ((module) => {
-
-"use strict";
-eval("\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif (true) {\n module.exports = EventEmitter;\n}\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/eventemitter3/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/function-bind/implementation.js":
-/*!******************************************************!*\
- !*** ./node_modules/function-bind/implementation.js ***!
- \******************************************************/
-/***/ ((module) => {
-
-"use strict";
-eval("\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/function-bind/implementation.js?");
-
-/***/ }),
-
-/***/ "./node_modules/function-bind/index.js":
-/*!*********************************************!*\
- !*** ./node_modules/function-bind/index.js ***!
- \*********************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-"use strict";
-eval("\n\nvar implementation = __webpack_require__(/*! ./implementation */ \"./node_modules/function-bind/implementation.js\");\n\nmodule.exports = Function.prototype.bind || implementation;\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/function-bind/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/get-intrinsic/index.js":
-/*!*********************************************!*\
- !*** ./node_modules/get-intrinsic/index.js ***!
- \*********************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-"use strict";
-eval("\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = __webpack_require__(/*! has-symbols */ \"./node_modules/has-symbols/index.js\")();\nvar hasProto = __webpack_require__(/*! has-proto */ \"./node_modules/has-proto/index.js\")();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = __webpack_require__(/*! function-bind */ \"./node_modules/function-bind/index.js\");\nvar hasOwn = __webpack_require__(/*! hasown */ \"./node_modules/hasown/index.js\");\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/get-intrinsic/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/gopd/index.js":
-/*!************************************!*\
- !*** ./node_modules/gopd/index.js ***!
- \************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-"use strict";
-eval("\n\nvar GetIntrinsic = __webpack_require__(/*! get-intrinsic */ \"./node_modules/get-intrinsic/index.js\");\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/gopd/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/has-property-descriptors/index.js":
-/*!********************************************************!*\
- !*** ./node_modules/has-property-descriptors/index.js ***!
- \********************************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-"use strict";
-eval("\n\nvar GetIntrinsic = __webpack_require__(/*! get-intrinsic */ \"./node_modules/get-intrinsic/index.js\");\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\tif ($defineProperty) {\n\t\ttry {\n\t\t\t$defineProperty({}, 'a', { value: 1 });\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// IE 8 has a broken defineProperty\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!hasPropertyDescriptors()) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/has-property-descriptors/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/has-proto/index.js":
-/*!*****************************************!*\
- !*** ./node_modules/has-proto/index.js ***!
- \*****************************************/
-/***/ ((module) => {
-
-"use strict";
-eval("\n\nvar test = {\n\tfoo: {}\n};\n\nvar $Object = Object;\n\nmodule.exports = function hasProto() {\n\treturn { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);\n};\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/has-proto/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/has-symbols/index.js":
-/*!*******************************************!*\
- !*** ./node_modules/has-symbols/index.js ***!
- \*******************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-"use strict";
-eval("\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = __webpack_require__(/*! ./shams */ \"./node_modules/has-symbols/shams.js\");\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/has-symbols/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/has-symbols/shams.js":
-/*!*******************************************!*\
- !*** ./node_modules/has-symbols/shams.js ***!
- \*******************************************/
-/***/ ((module) => {
-
-"use strict";
-eval("\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/has-symbols/shams.js?");
-
-/***/ }),
-
-/***/ "./node_modules/hasown/index.js":
-/*!**************************************!*\
- !*** ./node_modules/hasown/index.js ***!
- \**************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-"use strict";
-eval("\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = __webpack_require__(/*! function-bind */ \"./node_modules/function-bind/index.js\");\n\n/** @type {(o: {}, p: PropertyKey) => p is keyof o} */\nmodule.exports = bind.call(call, $hasOwn);\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/hasown/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/ismobilejs/esm/index.js":
-/*!**********************************************!*\
- !*** ./node_modules/ismobilejs/esm/index.js ***!
- \**********************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* reexport safe */ _isMobile__WEBPACK_IMPORTED_MODULE_0__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _isMobile__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isMobile */ \"./node_modules/ismobilejs/esm/isMobile.js\");\n\n\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://space_shooter/./node_modules/ismobilejs/esm/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/ismobilejs/esm/isMobile.js":
-/*!*************************************************!*\
- !*** ./node_modules/ismobilejs/esm/isMobile.js ***!
- \*************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ isMobile)\n/* harmony export */ });\nvar appleIphone = /iPhone/i;\nvar appleIpod = /iPod/i;\nvar appleTablet = /iPad/i;\nvar appleUniversal = /\\biOS-universal(?:.+)Mac\\b/i;\nvar androidPhone = /\\bAndroid(?:.+)Mobile\\b/i;\nvar androidTablet = /Android/i;\nvar amazonPhone = /(?:SD4930UR|\\bSilk(?:.+)Mobile\\b)/i;\nvar amazonTablet = /Silk/i;\nvar windowsPhone = /Windows Phone/i;\nvar windowsTablet = /\\bWindows(?:.+)ARM\\b/i;\nvar otherBlackBerry = /BlackBerry/i;\nvar otherBlackBerry10 = /BB10/i;\nvar otherOpera = /Opera Mini/i;\nvar otherChrome = /\\b(CriOS|Chrome)(?:.+)Mobile/i;\nvar otherFirefox = /Mobile(?:.+)Firefox\\b/i;\nvar isAppleTabletOnIos13 = function (navigator) {\n return (typeof navigator !== 'undefined' &&\n navigator.platform === 'MacIntel' &&\n typeof navigator.maxTouchPoints === 'number' &&\n navigator.maxTouchPoints > 1 &&\n typeof MSStream === 'undefined');\n};\nfunction createMatch(userAgent) {\n return function (regex) { return regex.test(userAgent); };\n}\nfunction isMobile(param) {\n var nav = {\n userAgent: '',\n platform: '',\n maxTouchPoints: 0\n };\n if (!param && typeof navigator !== 'undefined') {\n nav = {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n maxTouchPoints: navigator.maxTouchPoints || 0\n };\n }\n else if (typeof param === 'string') {\n nav.userAgent = param;\n }\n else if (param && param.userAgent) {\n nav = {\n userAgent: param.userAgent,\n platform: param.platform,\n maxTouchPoints: param.maxTouchPoints || 0\n };\n }\n var userAgent = nav.userAgent;\n var tmp = userAgent.split('[FBAN');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n tmp = userAgent.split('Twitter');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n var match = createMatch(userAgent);\n var result = {\n apple: {\n phone: match(appleIphone) && !match(windowsPhone),\n ipod: match(appleIpod),\n tablet: !match(appleIphone) &&\n (match(appleTablet) || isAppleTabletOnIos13(nav)) &&\n !match(windowsPhone),\n universal: match(appleUniversal),\n device: (match(appleIphone) ||\n match(appleIpod) ||\n match(appleTablet) ||\n match(appleUniversal) ||\n isAppleTabletOnIos13(nav)) &&\n !match(windowsPhone)\n },\n amazon: {\n phone: match(amazonPhone),\n tablet: !match(amazonPhone) && match(amazonTablet),\n device: match(amazonPhone) || match(amazonTablet)\n },\n android: {\n phone: (!match(windowsPhone) && match(amazonPhone)) ||\n (!match(windowsPhone) && match(androidPhone)),\n tablet: !match(windowsPhone) &&\n !match(amazonPhone) &&\n !match(androidPhone) &&\n (match(amazonTablet) || match(androidTablet)),\n device: (!match(windowsPhone) &&\n (match(amazonPhone) ||\n match(amazonTablet) ||\n match(androidPhone) ||\n match(androidTablet))) ||\n match(/\\bokhttp\\b/i)\n },\n windows: {\n phone: match(windowsPhone),\n tablet: match(windowsTablet),\n device: match(windowsPhone) || match(windowsTablet)\n },\n other: {\n blackberry: match(otherBlackBerry),\n blackberry10: match(otherBlackBerry10),\n opera: match(otherOpera),\n firefox: match(otherFirefox),\n chrome: match(otherChrome),\n device: match(otherBlackBerry) ||\n match(otherBlackBerry10) ||\n match(otherOpera) ||\n match(otherFirefox) ||\n match(otherChrome)\n },\n any: false,\n phone: false,\n tablet: false\n };\n result.any =\n result.apple.device ||\n result.android.device ||\n result.windows.device ||\n result.other.device;\n result.phone =\n result.apple.phone || result.android.phone || result.windows.phone;\n result.tablet =\n result.apple.tablet || result.android.tablet || result.windows.tablet;\n return result;\n}\n//# sourceMappingURL=isMobile.js.map\n\n//# sourceURL=webpack://space_shooter/./node_modules/ismobilejs/esm/isMobile.js?");
-
-/***/ }),
-
-/***/ "./node_modules/object-inspect/index.js":
-/*!**********************************************!*\
- !*** ./node_modules/object-inspect/index.js ***!
- \**********************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-eval("var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = __webpack_require__(/*! ./util.inspect */ \"?4f7e\");\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '' + $toLowerCase.call(String(obj.nodeName)) + '>';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n /* eslint-env browser */\n if (typeof window !== 'undefined' && obj === window) {\n return '{ [object Window] }';\n }\n if (obj === __webpack_require__.g) {\n return '{ [object globalThis] }';\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/object-inspect/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/set-function-length/index.js":
-/*!***************************************************!*\
- !*** ./node_modules/set-function-length/index.js ***!
- \***************************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-"use strict";
-eval("\n\nvar GetIntrinsic = __webpack_require__(/*! get-intrinsic */ \"./node_modules/get-intrinsic/index.js\");\nvar define = __webpack_require__(/*! define-data-property */ \"./node_modules/define-data-property/index.js\");\nvar hasDescriptors = __webpack_require__(/*! has-property-descriptors */ \"./node_modules/has-property-descriptors/index.js\")();\nvar gOPD = __webpack_require__(/*! gopd */ \"./node_modules/gopd/index.js\");\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $floor = GetIntrinsic('%Math.floor%');\n\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(fn, 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(fn, 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/set-function-length/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/side-channel/index.js":
-/*!********************************************!*\
- !*** ./node_modules/side-channel/index.js ***!
- \********************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-"use strict";
-eval("\n\nvar GetIntrinsic = __webpack_require__(/*! get-intrinsic */ \"./node_modules/get-intrinsic/index.js\");\nvar callBound = __webpack_require__(/*! call-bind/callBound */ \"./node_modules/call-bind/callBound.js\");\nvar inspect = __webpack_require__(/*! object-inspect */ \"./node_modules/object-inspect/index.js\");\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/side-channel/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/url/node_modules/punycode/punycode.js":
-/*!************************************************************!*\
- !*** ./node_modules/url/node_modules/punycode/punycode.js ***!
- \************************************************************/
-/***/ (function(module, exports, __webpack_require__) {
-
-eval("/* module decorator */ module = __webpack_require__.nmd(module);\nvar __WEBPACK_AMD_DEFINE_RESULT__;/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = true && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = true && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof __webpack_require__.g == 'object' && __webpack_require__.g;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttrue\n\t) {\n\t\t!(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {\n\t\t\treturn punycode;\n\t\t}).call(exports, __webpack_require__, exports, module),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {}\n\n}(this));\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/url/node_modules/punycode/punycode.js?");
-
-/***/ }),
-
-/***/ "./node_modules/url/node_modules/qs/lib/formats.js":
-/*!*********************************************************!*\
- !*** ./node_modules/url/node_modules/qs/lib/formats.js ***!
- \*********************************************************/
-/***/ ((module) => {
-
-"use strict";
-eval("\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/url/node_modules/qs/lib/formats.js?");
-
-/***/ }),
-
-/***/ "./node_modules/url/node_modules/qs/lib/index.js":
-/*!*******************************************************!*\
- !*** ./node_modules/url/node_modules/qs/lib/index.js ***!
- \*******************************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-"use strict";
-eval("\n\nvar stringify = __webpack_require__(/*! ./stringify */ \"./node_modules/url/node_modules/qs/lib/stringify.js\");\nvar parse = __webpack_require__(/*! ./parse */ \"./node_modules/url/node_modules/qs/lib/parse.js\");\nvar formats = __webpack_require__(/*! ./formats */ \"./node_modules/url/node_modules/qs/lib/formats.js\");\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/url/node_modules/qs/lib/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/url/node_modules/qs/lib/parse.js":
-/*!*******************************************************!*\
- !*** ./node_modules/url/node_modules/qs/lib/parse.js ***!
- \*******************************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-"use strict";
-eval("\n\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/url/node_modules/qs/lib/utils.js\");\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = { __proto__: null };\n\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/url/node_modules/qs/lib/parse.js?");
-
-/***/ }),
-
-/***/ "./node_modules/url/node_modules/qs/lib/stringify.js":
-/*!***********************************************************!*\
- !*** ./node_modules/url/node_modules/qs/lib/stringify.js ***!
- \***********************************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-"use strict";
-eval("\n\nvar getSideChannel = __webpack_require__(/*! side-channel */ \"./node_modules/side-channel/index.js\");\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/url/node_modules/qs/lib/utils.js\");\nvar formats = __webpack_require__(/*! ./formats */ \"./node_modules/url/node_modules/qs/lib/formats.js\");\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n if (encodeValuesOnly && encoder) {\n obj = utils.maybeMap(obj, encoder);\n }\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/url/node_modules/qs/lib/stringify.js?");
-
-/***/ }),
-
-/***/ "./node_modules/url/node_modules/qs/lib/utils.js":
-/*!*******************************************************!*\
- !*** ./node_modules/url/node_modules/qs/lib/utils.js ***!
- \*******************************************************/
-/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-
-"use strict";
-eval("\n\nvar formats = __webpack_require__(/*! ./formats */ \"./node_modules/url/node_modules/qs/lib/formats.js\");\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/url/node_modules/qs/lib/utils.js?");
-
-/***/ }),
-
-/***/ "./node_modules/url/url.js":
-/*!*********************************!*\
- !*** ./node_modules/url/url.js ***!
- \*********************************/
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
-
-"use strict";
-eval("/*\n * Copyright Joyent, Inc. and other Node contributors.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to permit\n * persons to whom the Software is furnished to do so, subject to the\n * following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n\n\nvar punycode = __webpack_require__(/*! punycode */ \"./node_modules/url/node_modules/punycode/punycode.js\");\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n/*\n * define these here so at least they only have to be\n * compiled once on the first module load.\n */\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^?\\s]*)(\\?[^\\s]*)?$/,\n\n /*\n * RFC 2396: characters reserved for delimiting URLs.\n * We actually just auto-escape these.\n */\n delims = [\n '<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'\n ],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = [\n '{', '}', '|', '\\\\', '^', '`'\n ].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n /*\n * Characters that are never ever allowed in a hostname.\n * Note that any invalid chars are also handled, but these\n * are the ones that are *expected* to be seen, so we fast-path\n * them.\n */\n nonHostChars = [\n '%', '/', '?', ';', '#'\n ].concat(autoEscape),\n hostEndingChars = [\n '/', '?', '#'\n ],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n javascript: true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n javascript: true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n http: true,\n https: true,\n ftp: true,\n gopher: true,\n file: true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = __webpack_require__(/*! qs */ \"./node_modules/url/node_modules/qs/lib/index.js\");\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && typeof url === 'object' && url instanceof Url) { return url; }\n\n var u = new Url();\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n if (typeof url !== 'string') {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n /*\n * Copy chrome, IE, opera backslash-handling behavior.\n * Back slashes before the query string get converted to forward slashes\n * See: https://code.google.com/p/chromium/issues/detail?id=25916\n */\n var queryIndex = url.indexOf('?'),\n splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n /*\n * trim before proceeding.\n * This is to support parse stuff like \" http://foo.com \\n\"\n */\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n /*\n * figure out if it's got a host\n * user@server is *always* interpreted as a hostname, and url\n * resolution will treat //foo/bar as host=foo,path=bar because that's\n * how the browser resolves relative URLs.\n */\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@/]+@[^@/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] && (slashes || (proto && !slashedProtocol[proto]))) {\n\n /*\n * there's a hostname.\n * the first instance of /, ?, ;, or # ends the host.\n *\n * If there is an @ in the hostname, then non-host chars *are* allowed\n * to the left of the last @ sign, unless some host-ending character\n * comes *before* the @-sign.\n * URLs are obnoxious.\n *\n * ex:\n * http://a@b@c/ => user:a@b host:c\n * http://a@b?@c => user:a host:c path:/?@c\n */\n\n /*\n * v0.12 TODO(isaacs): This is not quite how Chrome does things.\n * Review our test case against browsers more comprehensively.\n */\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n }\n\n /*\n * at this point, either we have an explicit point where the\n * auth portion cannot go past, or the last @ char is the decider.\n */\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n /*\n * atSign must be in auth portion.\n * http://a@b/c@d => host:b auth:a path:/c@d\n */\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n /*\n * Now we have a portion which is definitely the auth.\n * Pull that off.\n */\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1) { hostEnd = rest.length; }\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n /*\n * we've indicated that there is a hostname,\n * so even if it's empty, it has to be present.\n */\n this.hostname = this.hostname || '';\n\n /*\n * if hostname begins with [ and ends with ]\n * assume that it's an IPv6 address.\n */\n var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) { continue; }\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n /*\n * we replace non-ASCII char with a temporary placeholder\n * we need this to make sure size of hostname is not\n * broken by replacing non-ASCII by nothing\n */\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n /*\n * IDNA Support: Returns a punycoded representation of \"domain\".\n * It only converts parts of the domain name that\n * have non-ASCII characters, i.e. it doesn't matter if\n * you call it with a domain that already is ASCII-only.\n */\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n /*\n * strip [ and ] from the hostname\n * the host field still retains them, though\n */\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n /*\n * now rest is set to the post-host stuff.\n * chop off any delim chars.\n */\n if (!unsafeProtocol[lowerProto]) {\n\n /*\n * First, make 100% sure that any \"autoEscape\" chars get\n * escaped, even if encodeURIComponent doesn't think they\n * need to be.\n */\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1) { continue; }\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) { this.pathname = rest; }\n if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n // to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n /*\n * ensure it's an object, and not a string url.\n * If it's an obj, this is a no-op.\n * this way, you can call url_format() on strings\n * to clean up potentially wonky urls.\n */\n if (typeof obj === 'string') { obj = urlParse(obj); }\n if (!(obj instanceof Url)) { return Url.prototype.format.call(obj); }\n return obj.format();\n}\n\nUrl.prototype.format = function () {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query && typeof this.query === 'object' && Object.keys(this.query).length) {\n query = querystring.stringify(this.query, {\n arrayFormat: 'repeat',\n addQueryPrefix: false\n });\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') { protocol += ':'; }\n\n /*\n * only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n * unless they had them to begin with.\n */\n if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') { pathname = '/' + pathname; }\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') { hash = '#' + hash; }\n if (search && search.charAt(0) !== '?') { search = '?' + search; }\n\n pathname = pathname.replace(/[?#]/g, function (match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function (relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) { return relative; }\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function (relative) {\n if (typeof relative === 'string') {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n /*\n * hash is always overridden, no matter what.\n * even href=\"\" will remove it.\n */\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol') { result[rkey] = relative[rkey]; }\n }\n\n // urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n result.pathname = '/';\n result.path = result.pathname;\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n /*\n * if it's a known url protocol, then changing\n * the protocol does weird things\n * first, if it's not file:, then we MUST have a host,\n * and if there was a path\n * to begin with, then we MUST have a path.\n * if it is file:, then the host is dropped,\n * because that's known to be hostless.\n * anything else is assumed to be absolute.\n */\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift())) { }\n if (!relative.host) { relative.host = ''; }\n if (!relative.hostname) { relative.hostname = ''; }\n if (relPath[0] !== '') { relPath.unshift(''); }\n if (relPath.length < 2) { relPath.unshift(''); }\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',\n isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n mustEndAbs = isRelAbs || isSourceAbs || (result.host && relative.pathname),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n /*\n * if the url is a non-slashed url, then relative\n * links like ../.. should be able\n * to crawl up to the hostname, as well. This is strange.\n * result.protocol has already been set by now.\n * Later on, put the first path part into the host field.\n */\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') { srcPath[0] = result.host; } else { srcPath.unshift(result.host); }\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') { relPath[0] = relative.host; } else { relPath.unshift(relative.host); }\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = relative.host || relative.host === '' ? relative.host : result.host;\n result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n /*\n * it's relative\n * throw away the existing file, and take the new path instead.\n */\n if (!srcPath) { srcPath = []; }\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (relative.search != null) {\n /*\n * just pull out the search.\n * like href='?foo'.\n * Put this after the other two cases because it simplifies the booleans\n */\n if (psychotic) {\n result.host = srcPath.shift();\n result.hostname = result.host;\n /*\n * occationaly the auth can get stuck only in host\n * this especially happens in cases like\n * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n */\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.hostname = authInHost.shift();\n result.host = result.hostname;\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n // to support http.request\n if (result.pathname !== null || result.search !== null) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n /*\n * no path at all. easy.\n * we've already handled the other stuff above.\n */\n result.pathname = null;\n // to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n /*\n * if a url ENDs in . or .., then it must get a trailing slash.\n * however, if it ends in anything else non-slashy,\n * then it must NOT get a trailing slash.\n */\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === '';\n\n /*\n * strip single dots, resolve double dots to parent dir\n * if the path tries to go above the root, `up` ends up > 0\n */\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';\n result.host = result.hostname;\n /*\n * occationaly the auth can get stuck only in host\n * this especially happens in cases like\n * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n */\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.hostname = authInHost.shift();\n result.host = result.hostname;\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (srcPath.length > 0) {\n result.pathname = srcPath.join('/');\n } else {\n result.pathname = null;\n result.path = null;\n }\n\n // to support request.http\n if (result.pathname !== null || result.search !== null) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function () {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) { this.hostname = host; }\n};\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/url/url.js?");
-
-/***/ }),
-
-/***/ "./src/index.js":
-/*!**********************!*\
- !*** ./src/index.js ***!
- \**********************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _js_game__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./js/game */ \"./src/js/game.js\");\n/* harmony import */ var _js_rocket__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./js/rocket */ \"./src/js/rocket.js\");\n/* harmony import */ var _js_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./js/utils */ \"./src/js/utils.js\");\n\n\n\n\nconst game = new _js_game__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n\nconst rocket = new _js_rocket__WEBPACK_IMPORTED_MODULE_1__[\"default\"]({\n x: game.renderer.width / 2, \n y: _js_utils__WEBPACK_IMPORTED_MODULE_2__.POINTS.BOTTOM - 160\n});\ngame.draw(rocket);\ngame.onSpace = () => rocket.fireBullet();\ngame.onReset = () => rocket.resetBullets();\n\n// Game Loop\ngame.ticker.add(() => {\n let currentKeys = game.getCurrentKeys();\n\n if (currentKeys[_js_utils__WEBPACK_IMPORTED_MODULE_2__.KEYS.LEFT]) {\n rocket.moveLeft();\n } else if (currentKeys[_js_utils__WEBPACK_IMPORTED_MODULE_2__.KEYS.RIGHT]) {\n rocket.moveRight();\n } \n\n rocket.updateBullets();\n game.setBulletsText(`bullets: ${rocket.shoots} / ${rocket.maxBullets}`);\n\n game.updateAsteroids();\n\n const time = game.countDown.getCurrentTime();\n if (time >= 0) {\n if (game.countDestroyedAsteroids == game.maxBullets) {\n game.setYouWin();\n }\n }\n\n if (rocket.isCollision() || \n (time == 0 && game.countDestroyedAsteroids < game.maxBullets)) {\n game.setYouLose();\n }\n});\n \n\n//# sourceURL=webpack://space_shooter/./src/index.js?");
-
-/***/ }),
-
-/***/ "./src/js/asteroid.js":
-/*!****************************!*\
- !*** ./src/js/asteroid.js ***!
- \****************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Asteroid)\n/* harmony export */ });\n/* harmony import */ var pixi_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! pixi.js */ \"./node_modules/pixi.js/lib/index.mjs\");\n/* harmony import */ var _gameObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./gameObject */ \"./src/js/gameObject.js\");\n\n\n\nclass Asteroid extends _gameObject__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n constructor(x) {\n super({ x });\n this.texture = pixi_js__WEBPACK_IMPORTED_MODULE_0__.Texture.from('../assets/images/asteroid.png');\n this.speed = 5;\n this.isAsteroid = true;\n this.isDestroyed = false;\n this.isMissed = null;\n }\n\n fall() {\n this.interval = setInterval(() =>{\n if (this.y - this.height / 2 > 720 || this.parent?.isOver) {\n if (!this?.isDestroyed && !this.parent?.isOver) {\n this.isMissed = true;\n } \n\n clearInterval(this.interval);\n } else {\n this.moveDown();\n }\n }, 100);\n }\n\n setIsDestroyed(boolean) {\n if (boolean == 1 || boolean == 0) {\n this.isDestroyed = boolean;\n }\n\n return new Promise(function(resolve, reject) {\n resolve(true);\n });\n }\n\n setIsMissed(boolean) {\n if (boolean == 1 || boolean == 0) {\n this.isMissed = boolean;\n }\n }\n \n}\n\n//# sourceURL=webpack://space_shooter/./src/js/asteroid.js?");
-
-/***/ }),
-
-/***/ "./src/js/bullet.js":
-/*!**************************!*\
- !*** ./src/js/bullet.js ***!
- \**************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Bullet)\n/* harmony export */ });\n/* harmony import */ var pixi_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! pixi.js */ \"./node_modules/pixi.js/lib/index.mjs\");\n\n\nclass Bullet extends pixi_js__WEBPACK_IMPORTED_MODULE_0__.Graphics {\n constructor(x, y) {\n super();\n\n this.beginFill('#fcfedb');\n this.drawCircle(x, y, 7);\n this.pivot.set(x, y);\n this.position.set(x, y);\n this.endFill();\n\n this.isDead = false;\n \n return this;\n }\n\n shoot() {\n if (this.y <= 0) {\n this.isDead = true;\n } else {\n const isCollision = this.isCollision();\n \n if (!isCollision) {\n this.up();\n } \n // else {\n // this.isDead = true;\n // }\n }\n }\n\n up() { this.position.set(this.x, this.y - this.speed); } \n\n isCollision() {\n let isCollision = false;\n for (const obj of this.parent.children) {\n let bangY = obj.y + obj.height / 2 >= this.y;\n let bangX = this.x >= (obj.x - obj.width / 2) &&\n this.x <= (obj.x + obj.width / 2);\n \n if (obj?.isAsteroid && bangY && bangX) {\n isCollision = true;\n obj.setIsDestroyed(true).then(() => this.isDead = true);\n break;\n }\n }\n\n return isCollision;\n }\n};\n\n//# sourceURL=webpack://space_shooter/./src/js/bullet.js?");
-
-/***/ }),
-
-/***/ "./src/js/countDown.js":
-/*!*****************************!*\
- !*** ./src/js/countDown.js ***!
- \*****************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ CountDown)\n/* harmony export */ });\n/* harmony import */ var pixi_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! pixi.js */ \"./node_modules/pixi.js/lib/index.mjs\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./src/js/utils.js\");\n\n\n\nclass CountDown extends pixi_js__WEBPACK_IMPORTED_MODULE_0__.Text {\n constructor(startTime = 60) {\n super( startTime );\n this.style = _utils__WEBPACK_IMPORTED_MODULE_1__.baseTextStyle;\n this.style.fontSize = 36;\n this.zIndex = 1000;\n this.anchor.set(0.0);\n this.startTime = startTime;\n this.currentTime = startTime;\n }\n\n start() {\n this.interval = setInterval(() => {\n if (this.currentTime != 0) {\n this.currentTime -= 1;\n } else {\n console.log('The end');\n clearInterval(this.interval);\n }\n this.text = this.currentTime;\n }, 1000);\n }\n\n stop() {\n clearInterval(this.interval);\n }\n\n reset() {\n this.currentTime = this.startTime;\n }\n \n getCurrentTime() {\n return this.currentTime;\n }\n};\n\n//# sourceURL=webpack://space_shooter/./src/js/countDown.js?");
-
-/***/ }),
-
-/***/ "./src/js/game.js":
-/*!************************!*\
- !*** ./src/js/game.js ***!
- \************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Game)\n/* harmony export */ });\n/* harmony import */ var pixi_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! pixi.js */ \"./node_modules/pixi.js/lib/index.mjs\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./src/js/utils.js\");\n/* harmony import */ var _ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ui */ \"./src/js/ui.js\");\n/* harmony import */ var _asteroid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./asteroid */ \"./src/js/asteroid.js\");\n\n\n\n\n\nclass Game extends pixi_js__WEBPACK_IMPORTED_MODULE_0__.Application {\n constructor() {\n super({\n width: 1280,\n height: 720\n });\n document.body.appendChild(this.view);\n\n this.currentKeys = {};\n this.onSpace = null;\n this.onReset = null;\n this.ui = new _ui__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this);\n\n this.init();\n\n this.asteroids = [];\n this.currentCountAsteroids = 0;\n this.maxBullets = 10;\n this.countDestroyedAsteroids = 0;\n this.isOver = false;\n }\n \n init() {\n this.ui.setBackground();\n\n this.bulletsText = this.ui.createBulletsText();\n this.bigMessage = this.ui.createBigMessage();\n this.countDown = this.ui.createCountDown();\n this.button = this.ui.createButton();\n\n window.addEventListener('keydown', e => this.keysDown(e));\n window.addEventListener('keyup', e => this.keysUp(e));\n\n }\n\n getCurrentKeys() { return this.currentKeys; }\n\n setBulletsText(newText) {\n this.bulletsText.text = newText;\n }\n\n setBigMessage(newMessage) {\n this.bigMessage.text = newMessage;\n this.bigMessage.style.fill = '#fe015b';\n }\n\n startGame(e) {\n e.target.visible = false;\n e.target.useMode = 'none';\n this.countDown.start();\n\n this.interval = setInterval(() => {\n const asteroid = new _asteroid__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this.getRandomInRange(75, 1200));\n this.asteroids.push(asteroid);\n this.draw(asteroid);\n asteroid.fall();\n this.currentCountAsteroids++;\n }, this.getRandomInRange(1000, 6000));\n }\n\n updateAsteroids() {\n if (this.asteroids?.length > 0) {\n if (this.currentCountAsteroids == this.maxBullets) {\n clearInterval(this.interval);\n this.interval = null;\n }\n\n for (const i in this.asteroids) {\n const asteroid = this.asteroids[i];\n \n if (asteroid.isDestroyed || asteroid.isMissed) {\n if (asteroid.isDestroyed) {\n this.countDestroyedAsteroids += 1;\n }\n\n this.erase(asteroid);\n this.asteroids.splice(i, 1);\n }\n }\n }\n }\n\n setYouLose() {\n this.reset();\n\n this.setBigMessage('YOU LOSE');\n this.button.useMode = 'dinamic';\n this.button.visible = true;\n this.button.on('pointerdown', e => this.startNewGame(e));\n }\n\n reset() {\n this.countDown.stop();\n if (this.interval) {\n clearInterval(this.interval);\n this.interval = null;\n }\n\n for (const asteroid of this.asteroids) {\n this.erase(asteroid);\n }\n this.asteroids = [];\n }\n\n startNewGame(e) {\n e.target.visible = false;\n e.target.useMode = 'none';\n this.currentCountAsteroids = 0;\n this.countDestroyedAsteroids = 0;\n this.countDown.reset();\n this.bigMessage.style.fill = 'transparent';\n this.onReset();\n this.start();\n }\n\n setYouWin() { this.setBigMessage('YOU WIN'); }\n\n draw(child) { child && this.stage.addChild(child); }\n\n erase(child) { child && this.stage.removeChild(child); }\n\n keysDown(e) {\n this.currentKeys[e.keyCode] = true;\n \n if (this.currentKeys[_utils__WEBPACK_IMPORTED_MODULE_1__.KEYS.SPACE] && this.onSpace) {\n this.onSpace();\n }\n }\n \n keysUp(e) { this.currentKeys[e.keyCode] = false; }\n \n getRandomInRange(min, max) { return Math.floor(Math.random() * (max - min)) + min; }\n};\n\n//# sourceURL=webpack://space_shooter/./src/js/game.js?");
-
-/***/ }),
-
-/***/ "./src/js/gameObject.js":
-/*!******************************!*\
- !*** ./src/js/gameObject.js ***!
- \******************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ GameObject)\n/* harmony export */ });\n/* harmony import */ var pixi_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! pixi.js */ \"./node_modules/pixi.js/lib/index.mjs\");\n\n\nclass GameObject extends pixi_js__WEBPACK_IMPORTED_MODULE_0__.Sprite {\n constructor({ x = 0, y = 0, speed = 10 }) {\n super();\n this.x = x;\n this.y = y;\n this.anchor.set(0.5);\n this.speed = speed;\n }\n\n moveLeft() { \n if (this.x - this.width > 0) {\n this.x -= this.speed;\n } \n }\n\n moveRight() { \n if (this.width + this.x < 1280) {\n this.x += this.speed;\n }\n }\n\n moveUp() { this.y -= this.speed; }\n moveDown() { this.y += this.speed; }\n};\n\n//# sourceURL=webpack://space_shooter/./src/js/gameObject.js?");
-
-/***/ }),
-
-/***/ "./src/js/rocket.js":
-/*!**************************!*\
- !*** ./src/js/rocket.js ***!
- \**************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Rocket)\n/* harmony export */ });\n/* harmony import */ var pixi_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! pixi.js */ \"./node_modules/pixi.js/lib/index.mjs\");\n/* harmony import */ var _bullet__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bullet */ \"./src/js/bullet.js\");\n/* harmony import */ var _gameObject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./gameObject */ \"./src/js/gameObject.js\");\n\n\n\n\nclass Rocket extends _gameObject__WEBPACK_IMPORTED_MODULE_2__[\"default\"] {\n constructor(props) {\n super({...props});\n this.texture = pixi_js__WEBPACK_IMPORTED_MODULE_0__.Texture.from('../assets/images/rocket.png');\n this.bulletSpeed = 15;\n this.bullets = [];\n this.maxBullets = 10;\n this.shoots = 0;\n }\n\n moveUp() {}\n moveDown() {}\n\n fireBullet() {\n if (this.shoots < this.maxBullets) {\n let bullet = this.createBullet();\n this.bullets.push(bullet);\n this.shoots += 1;\n }\n }\n\n createBullet() {\n let bullet = new _bullet__WEBPACK_IMPORTED_MODULE_1__[\"default\"](this.x, this.y);\n bullet.speed = this.bulletSpeed;\n this.parent.addChild(bullet);\n\n return bullet;\n }\n\n updateBullets() {\n for (const i in this.bullets) {\n const bullet = this.bullets[i];\n bullet.shoot();\n if (bullet.isDead) {\n this.parent.removeChild(bullet);\n this.bullets.splice(i, 1);\n }\n }\n }\n\n resetBullets() {\n this.shoots = 0;\n }\n\n isCollision() {\n let isCollision = false;\n for (const obj of this.parent.children) {\n let bangY = obj.y + obj.height / 2 >= this.y - this.height / 2;\n \n let bangX = obj.x >= (this.x - (this.width / 2)) &&\n obj.x <= (this.x + (this.width / 2));\n \n if (obj?.isAsteroid && bangY && bangX) {\n isCollision = true;\n obj.setIsDestroyed(true);\n break;\n }\n }\n\n return isCollision;\n }\n};\n\n//# sourceURL=webpack://space_shooter/./src/js/rocket.js?");
-
-/***/ }),
-
-/***/ "./src/js/ui.js":
-/*!**********************!*\
- !*** ./src/js/ui.js ***!
- \**********************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ UI)\n/* harmony export */ });\n/* harmony import */ var pixi_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! pixi.js */ \"./node_modules/pixi.js/lib/index.mjs\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./src/js/utils.js\");\n/* harmony import */ var _countDown__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./countDown */ \"./src/js/countDown.js\");\n\n\n\n\nclass UI {\n constructor(component) {\n this.component = component;\n }\n\n setBackground() {\n const bgTexture = pixi_js__WEBPACK_IMPORTED_MODULE_0__.Texture.from('../assets/images/galaxy_bg.png');\n const bg = pixi_js__WEBPACK_IMPORTED_MODULE_0__.TilingSprite.from(\n bgTexture, { \n width: this.component.view.width, \n height: this.component.view.height \n }\n );\n this.component.draw(bg);\n }\n\n createBulletsText() {\n const bulletsText = new pixi_js__WEBPACK_IMPORTED_MODULE_0__.Text('bullets: 0 / 10');\n bulletsText.x = 25;\n bulletsText.y = 10;\n bulletsText.style = _utils__WEBPACK_IMPORTED_MODULE_1__.baseTextStyle;\n this.component.draw(bulletsText);\n this.component.stage.setChildIndex(bulletsText, 1);\n return bulletsText;\n }\n\n createBigMessage() {\n const bigMessage = new pixi_js__WEBPACK_IMPORTED_MODULE_0__.Text('YOU WIN');\n bigMessage.anchor.set(0.5);\n bigMessage.x = this.component.renderer.width / 2;\n bigMessage.y = this.component.renderer.height / 2;\n bigMessage.style = new pixi_js__WEBPACK_IMPORTED_MODULE_0__.TextStyle({\n fill: 'transparent',\n fontSize: 150,\n fontFamily: 'Rational Integer'\n });\n this.component.draw(bigMessage);\n this.component.stage.setChildIndex(bigMessage, 2);\n return bigMessage;\n }\n\n createCountDown() {\n const countDown = new _countDown__WEBPACK_IMPORTED_MODULE_2__[\"default\"](60);\n countDown.x = 1280 - countDown.width - 36;\n countDown.y = 10;\n this.component.draw(countDown);\n return countDown;\n }\n\n createButton() {\n const button = new pixi_js__WEBPACK_IMPORTED_MODULE_0__.Container();\n\n //border\n let border = new pixi_js__WEBPACK_IMPORTED_MODULE_0__.Graphics();\n border.beginFill('transparent');\n border.lineStyle(2, '#004e8c');\n border.drawRoundedRect(\n this.component.stage.width / 2 - 80,\n this.component.stage.height - 60,\n 160,\n 40,\n 30\n );\n border.endFill();\n button.addChild(border);\n\n //text\n const buttnText = new pixi_js__WEBPACK_IMPORTED_MODULE_0__.Text('START NEW GAME');\n buttnText.anchor.set(0.5);\n buttnText.style = new pixi_js__WEBPACK_IMPORTED_MODULE_0__.TextStyle({\n fill: '#00a3f8',\n fontSize: 18,\n fontFamily: 'Rational Integer'\n });\n buttnText.x = this.component.stage.width / 2;\n buttnText.y = this.component.stage.height - 40;\n button.addChild(buttnText);\n\n button.eventMode = 'static';\n button.buttonMode = true;\n button.cursor = 'pointer';\n button.on('pointerdown', e => this.component.startGame(e));\n\n this.component.draw(button);\n\n return button;\n }\n \n};\n\n//# sourceURL=webpack://space_shooter/./src/js/ui.js?");
-
-/***/ }),
-
-/***/ "./src/js/utils.js":
-/*!*************************!*\
- !*** ./src/js/utils.js ***!
- \*************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ KEYS: () => (/* binding */ KEYS),\n/* harmony export */ POINTS: () => (/* binding */ POINTS),\n/* harmony export */ baseTextStyle: () => (/* binding */ baseTextStyle)\n/* harmony export */ });\n/* harmony import */ var pixi_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! pixi.js */ \"./node_modules/pixi.js/lib/index.mjs\");\n\n\nconst baseTextStyle = new pixi_js__WEBPACK_IMPORTED_MODULE_0__.TextStyle({\n fill: '#fe015b',\n fontSize: 36,\n fontFamily: 'Rational Integer'\n});\n\nconst KEYS = {\n SPACE: 32,\n UP: 38,\n DOWN: 40,\n LEFT: 37,\n RIGHT: 39\n};\n\nconst POINTS = {\n TOP: 0,\n BOTTOM: 720,\n LEFT: 0,\n RIGHT: 1280\n};\n\n//# sourceURL=webpack://space_shooter/./src/js/utils.js?");
-
-/***/ }),
-
-/***/ "?4f7e":
-/*!********************************!*\
- !*** ./util.inspect (ignored) ***!
- \********************************/
-/***/ (() => {
-
-eval("/* (ignored) */\n\n//# sourceURL=webpack://space_shooter/./util.inspect_(ignored)?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/accessibility/lib/AccessibilityManager.mjs":
-/*!***********************************************************************!*\
- !*** ./node_modules/@pixi/accessibility/lib/AccessibilityManager.mjs ***!
- \***********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AccessibilityManager: () => (/* binding */ AccessibilityManager)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n/* harmony import */ var _pixi_display__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/display */ \"./node_modules/@pixi/display/lib/index.mjs\");\n/* harmony import */ var _pixi_events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @pixi/events */ \"./node_modules/@pixi/events/lib/index.mjs\");\n/* harmony import */ var _accessibleTarget_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./accessibleTarget.mjs */ \"./node_modules/@pixi/accessibility/lib/accessibleTarget.mjs\");\n\n\n\n\n_pixi_display__WEBPACK_IMPORTED_MODULE_1__.DisplayObject.mixin(_accessibleTarget_mjs__WEBPACK_IMPORTED_MODULE_3__.accessibleTarget);\nconst KEY_CODE_TAB = 9, DIV_TOUCH_SIZE = 100, DIV_TOUCH_POS_X = 0, DIV_TOUCH_POS_Y = 0, DIV_TOUCH_ZINDEX = 2, DIV_HOOK_SIZE = 1, DIV_HOOK_POS_X = -1e3, DIV_HOOK_POS_Y = -1e3, DIV_HOOK_ZINDEX = 2;\nclass AccessibilityManager {\n // 2fps\n /**\n * @param {PIXI.CanvasRenderer|PIXI.Renderer} renderer - A reference to the current renderer\n */\n constructor(renderer) {\n this.debug = !1, this._isActive = !1, this._isMobileAccessibility = !1, this.pool = [], this.renderId = 0, this.children = [], this.androidUpdateCount = 0, this.androidUpdateFrequency = 500, this._hookDiv = null, (_pixi_core__WEBPACK_IMPORTED_MODULE_0__.utils.isMobile.tablet || _pixi_core__WEBPACK_IMPORTED_MODULE_0__.utils.isMobile.phone) && this.createTouchHook();\n const div = document.createElement(\"div\");\n div.style.width = `${DIV_TOUCH_SIZE}px`, div.style.height = `${DIV_TOUCH_SIZE}px`, div.style.position = \"absolute\", div.style.top = `${DIV_TOUCH_POS_X}px`, div.style.left = `${DIV_TOUCH_POS_Y}px`, div.style.zIndex = DIV_TOUCH_ZINDEX.toString(), this.div = div, this.renderer = renderer, this._onKeyDown = this._onKeyDown.bind(this), this._onMouseMove = this._onMouseMove.bind(this), globalThis.addEventListener(\"keydown\", this._onKeyDown, !1);\n }\n /**\n * Value of `true` if accessibility is currently active and accessibility layers are showing.\n * @member {boolean}\n * @readonly\n */\n get isActive() {\n return this._isActive;\n }\n /**\n * Value of `true` if accessibility is enabled for touch devices.\n * @member {boolean}\n * @readonly\n */\n get isMobileAccessibility() {\n return this._isMobileAccessibility;\n }\n /**\n * Creates the touch hooks.\n * @private\n */\n createTouchHook() {\n const hookDiv = document.createElement(\"button\");\n hookDiv.style.width = `${DIV_HOOK_SIZE}px`, hookDiv.style.height = `${DIV_HOOK_SIZE}px`, hookDiv.style.position = \"absolute\", hookDiv.style.top = `${DIV_HOOK_POS_X}px`, hookDiv.style.left = `${DIV_HOOK_POS_Y}px`, hookDiv.style.zIndex = DIV_HOOK_ZINDEX.toString(), hookDiv.style.backgroundColor = \"#FF0000\", hookDiv.title = \"select to enable accessibility for this content\", hookDiv.addEventListener(\"focus\", () => {\n this._isMobileAccessibility = !0, this.activate(), this.destroyTouchHook();\n }), document.body.appendChild(hookDiv), this._hookDiv = hookDiv;\n }\n /**\n * Destroys the touch hooks.\n * @private\n */\n destroyTouchHook() {\n this._hookDiv && (document.body.removeChild(this._hookDiv), this._hookDiv = null);\n }\n /**\n * Activating will cause the Accessibility layer to be shown.\n * This is called when a user presses the tab key.\n * @private\n */\n activate() {\n this._isActive || (this._isActive = !0, globalThis.document.addEventListener(\"mousemove\", this._onMouseMove, !0), globalThis.removeEventListener(\"keydown\", this._onKeyDown, !1), this.renderer.on(\"postrender\", this.update, this), this.renderer.view.parentNode?.appendChild(this.div));\n }\n /**\n * Deactivating will cause the Accessibility layer to be hidden.\n * This is called when a user moves the mouse.\n * @private\n */\n deactivate() {\n !this._isActive || this._isMobileAccessibility || (this._isActive = !1, globalThis.document.removeEventListener(\"mousemove\", this._onMouseMove, !0), globalThis.addEventListener(\"keydown\", this._onKeyDown, !1), this.renderer.off(\"postrender\", this.update), this.div.parentNode?.removeChild(this.div));\n }\n /**\n * This recursive function will run through the scene graph and add any new accessible objects to the DOM layer.\n * @private\n * @param {PIXI.Container} displayObject - The DisplayObject to check.\n */\n updateAccessibleObjects(displayObject) {\n if (!displayObject.visible || !displayObject.accessibleChildren)\n return;\n displayObject.accessible && displayObject.isInteractive() && (displayObject._accessibleActive || this.addChild(displayObject), displayObject.renderId = this.renderId);\n const children = displayObject.children;\n if (children)\n for (let i = 0; i < children.length; i++)\n this.updateAccessibleObjects(children[i]);\n }\n /**\n * Before each render this function will ensure that all divs are mapped correctly to their DisplayObjects.\n * @private\n */\n update() {\n const now = performance.now();\n if (_pixi_core__WEBPACK_IMPORTED_MODULE_0__.utils.isMobile.android.device && now < this.androidUpdateCount || (this.androidUpdateCount = now + this.androidUpdateFrequency, !this.renderer.renderingToScreen))\n return;\n this.renderer.lastObjectRendered && this.updateAccessibleObjects(this.renderer.lastObjectRendered);\n const { x, y, width, height } = this.renderer.view.getBoundingClientRect(), { width: viewWidth, height: viewHeight, resolution } = this.renderer, sx = width / viewWidth * resolution, sy = height / viewHeight * resolution;\n let div = this.div;\n div.style.left = `${x}px`, div.style.top = `${y}px`, div.style.width = `${viewWidth}px`, div.style.height = `${viewHeight}px`;\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i];\n if (child.renderId !== this.renderId)\n child._accessibleActive = !1, _pixi_core__WEBPACK_IMPORTED_MODULE_0__.utils.removeItems(this.children, i, 1), this.div.removeChild(child._accessibleDiv), this.pool.push(child._accessibleDiv), child._accessibleDiv = null, i--;\n else {\n div = child._accessibleDiv;\n let hitArea = child.hitArea;\n const wt = child.worldTransform;\n child.hitArea ? (div.style.left = `${(wt.tx + hitArea.x * wt.a) * sx}px`, div.style.top = `${(wt.ty + hitArea.y * wt.d) * sy}px`, div.style.width = `${hitArea.width * wt.a * sx}px`, div.style.height = `${hitArea.height * wt.d * sy}px`) : (hitArea = child.getBounds(), this.capHitArea(hitArea), div.style.left = `${hitArea.x * sx}px`, div.style.top = `${hitArea.y * sy}px`, div.style.width = `${hitArea.width * sx}px`, div.style.height = `${hitArea.height * sy}px`, div.title !== child.accessibleTitle && child.accessibleTitle !== null && (div.title = child.accessibleTitle), div.getAttribute(\"aria-label\") !== child.accessibleHint && child.accessibleHint !== null && div.setAttribute(\"aria-label\", child.accessibleHint)), (child.accessibleTitle !== div.title || child.tabIndex !== div.tabIndex) && (div.title = child.accessibleTitle, div.tabIndex = child.tabIndex, this.debug && this.updateDebugHTML(div));\n }\n }\n this.renderId++;\n }\n /**\n * private function that will visually add the information to the\n * accessability div\n * @param {HTMLElement} div -\n */\n updateDebugHTML(div) {\n div.innerHTML = `type: ${div.type} title : ${div.title} tabIndex: ${div.tabIndex}`;\n }\n /**\n * Adjust the hit area based on the bounds of a display object\n * @param {PIXI.Rectangle} hitArea - Bounds of the child\n */\n capHitArea(hitArea) {\n hitArea.x < 0 && (hitArea.width += hitArea.x, hitArea.x = 0), hitArea.y < 0 && (hitArea.height += hitArea.y, hitArea.y = 0);\n const { width: viewWidth, height: viewHeight } = this.renderer;\n hitArea.x + hitArea.width > viewWidth && (hitArea.width = viewWidth - hitArea.x), hitArea.y + hitArea.height > viewHeight && (hitArea.height = viewHeight - hitArea.y);\n }\n /**\n * Adds a DisplayObject to the accessibility manager\n * @private\n * @param {PIXI.DisplayObject} displayObject - The child to make accessible.\n */\n addChild(displayObject) {\n let div = this.pool.pop();\n div || (div = document.createElement(\"button\"), div.style.width = `${DIV_TOUCH_SIZE}px`, div.style.height = `${DIV_TOUCH_SIZE}px`, div.style.backgroundColor = this.debug ? \"rgba(255,255,255,0.5)\" : \"transparent\", div.style.position = \"absolute\", div.style.zIndex = DIV_TOUCH_ZINDEX.toString(), div.style.borderStyle = \"none\", navigator.userAgent.toLowerCase().includes(\"chrome\") ? div.setAttribute(\"aria-live\", \"off\") : div.setAttribute(\"aria-live\", \"polite\"), navigator.userAgent.match(/rv:.*Gecko\\//) ? div.setAttribute(\"aria-relevant\", \"additions\") : div.setAttribute(\"aria-relevant\", \"text\"), div.addEventListener(\"click\", this._onClick.bind(this)), div.addEventListener(\"focus\", this._onFocus.bind(this)), div.addEventListener(\"focusout\", this._onFocusOut.bind(this))), div.style.pointerEvents = displayObject.accessiblePointerEvents, div.type = displayObject.accessibleType, displayObject.accessibleTitle && displayObject.accessibleTitle !== null ? div.title = displayObject.accessibleTitle : (!displayObject.accessibleHint || displayObject.accessibleHint === null) && (div.title = `displayObject ${displayObject.tabIndex}`), displayObject.accessibleHint && displayObject.accessibleHint !== null && div.setAttribute(\"aria-label\", displayObject.accessibleHint), this.debug && this.updateDebugHTML(div), displayObject._accessibleActive = !0, displayObject._accessibleDiv = div, div.displayObject = displayObject, this.children.push(displayObject), this.div.appendChild(displayObject._accessibleDiv), displayObject._accessibleDiv.tabIndex = displayObject.tabIndex;\n }\n /**\n * Dispatch events with the EventSystem.\n * @param e\n * @param type\n * @private\n */\n _dispatchEvent(e, type) {\n const { displayObject: target } = e.target, boundry = this.renderer.events.rootBoundary, event = Object.assign(new _pixi_events__WEBPACK_IMPORTED_MODULE_2__.FederatedEvent(boundry), { target });\n boundry.rootTarget = this.renderer.lastObjectRendered, type.forEach((type2) => boundry.dispatchEvent(event, type2));\n }\n /**\n * Maps the div button press to pixi's EventSystem (click)\n * @private\n * @param {MouseEvent} e - The click event.\n */\n _onClick(e) {\n this._dispatchEvent(e, [\"click\", \"pointertap\", \"tap\"]);\n }\n /**\n * Maps the div focus events to pixi's EventSystem (mouseover)\n * @private\n * @param {FocusEvent} e - The focus event.\n */\n _onFocus(e) {\n e.target.getAttribute(\"aria-live\") || e.target.setAttribute(\"aria-live\", \"assertive\"), this._dispatchEvent(e, [\"mouseover\"]);\n }\n /**\n * Maps the div focus events to pixi's EventSystem (mouseout)\n * @private\n * @param {FocusEvent} e - The focusout event.\n */\n _onFocusOut(e) {\n e.target.getAttribute(\"aria-live\") || e.target.setAttribute(\"aria-live\", \"polite\"), this._dispatchEvent(e, [\"mouseout\"]);\n }\n /**\n * Is called when a key is pressed\n * @private\n * @param {KeyboardEvent} e - The keydown event.\n */\n _onKeyDown(e) {\n e.keyCode === KEY_CODE_TAB && this.activate();\n }\n /**\n * Is called when the mouse moves across the renderer element\n * @private\n * @param {MouseEvent} e - The mouse event.\n */\n _onMouseMove(e) {\n e.movementX === 0 && e.movementY === 0 || this.deactivate();\n }\n /** Destroys the accessibility manager */\n destroy() {\n this.destroyTouchHook(), this.div = null, globalThis.document.removeEventListener(\"mousemove\", this._onMouseMove, !0), globalThis.removeEventListener(\"keydown\", this._onKeyDown), this.pool = null, this.children = null, this.renderer = null;\n }\n}\nAccessibilityManager.extension = {\n name: \"accessibility\",\n type: [\n _pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.RendererPlugin,\n _pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.CanvasRendererPlugin\n ]\n};\n_pixi_core__WEBPACK_IMPORTED_MODULE_0__.extensions.add(AccessibilityManager);\n\n//# sourceMappingURL=AccessibilityManager.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/accessibility/lib/AccessibilityManager.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/accessibility/lib/accessibleTarget.mjs":
-/*!*******************************************************************!*\
- !*** ./node_modules/@pixi/accessibility/lib/accessibleTarget.mjs ***!
- \*******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ accessibleTarget: () => (/* binding */ accessibleTarget)\n/* harmony export */ });\nconst accessibleTarget = {\n /**\n * Flag for if the object is accessible. If true AccessibilityManager will overlay a\n * shadow div with attributes set\n * @member {boolean}\n * @memberof PIXI.DisplayObject#\n */\n accessible: !1,\n /**\n * Sets the title attribute of the shadow div\n * If accessibleTitle AND accessibleHint has not been this will default to 'displayObject [tabIndex]'\n * @member {?string}\n * @memberof PIXI.DisplayObject#\n */\n accessibleTitle: null,\n /**\n * Sets the aria-label attribute of the shadow div\n * @member {string}\n * @memberof PIXI.DisplayObject#\n */\n accessibleHint: null,\n /**\n * @member {number}\n * @memberof PIXI.DisplayObject#\n * @private\n * @todo Needs docs.\n */\n tabIndex: 0,\n /**\n * @member {boolean}\n * @memberof PIXI.DisplayObject#\n * @todo Needs docs.\n */\n _accessibleActive: !1,\n /**\n * @member {boolean}\n * @memberof PIXI.DisplayObject#\n * @todo Needs docs.\n */\n _accessibleDiv: null,\n /**\n * Specify the type of div the accessible layer is. Screen readers treat the element differently\n * depending on this type. Defaults to button.\n * @member {string}\n * @memberof PIXI.DisplayObject#\n * @default 'button'\n */\n accessibleType: \"button\",\n /**\n * Specify the pointer-events the accessible div will use\n * Defaults to auto.\n * @member {string}\n * @memberof PIXI.DisplayObject#\n * @default 'auto'\n */\n accessiblePointerEvents: \"auto\",\n /**\n * Setting to false will prevent any children inside this container to\n * be accessible. Defaults to true.\n * @member {boolean}\n * @memberof PIXI.DisplayObject#\n * @default true\n */\n accessibleChildren: !0,\n renderId: -1\n};\n\n//# sourceMappingURL=accessibleTarget.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/accessibility/lib/accessibleTarget.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/accessibility/lib/index.mjs":
-/*!********************************************************!*\
- !*** ./node_modules/@pixi/accessibility/lib/index.mjs ***!
- \********************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AccessibilityManager: () => (/* reexport safe */ _AccessibilityManager_mjs__WEBPACK_IMPORTED_MODULE_0__.AccessibilityManager),\n/* harmony export */ accessibleTarget: () => (/* reexport safe */ _accessibleTarget_mjs__WEBPACK_IMPORTED_MODULE_1__.accessibleTarget)\n/* harmony export */ });\n/* harmony import */ var _AccessibilityManager_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AccessibilityManager.mjs */ \"./node_modules/@pixi/accessibility/lib/AccessibilityManager.mjs\");\n/* harmony import */ var _accessibleTarget_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./accessibleTarget.mjs */ \"./node_modules/@pixi/accessibility/lib/accessibleTarget.mjs\");\n\n\n\n//# sourceMappingURL=index.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/accessibility/lib/index.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/app/lib/Application.mjs":
-/*!****************************************************!*\
- !*** ./node_modules/@pixi/app/lib/Application.mjs ***!
- \****************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Application: () => (/* binding */ Application)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n/* harmony import */ var _pixi_display__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/display */ \"./node_modules/@pixi/display/lib/index.mjs\");\n\n\nconst _Application = class _Application2 {\n /**\n * @param options - The optional application and renderer parameters.\n */\n constructor(options) {\n this.stage = new _pixi_display__WEBPACK_IMPORTED_MODULE_1__.Container(), options = Object.assign({\n forceCanvas: !1\n }, options), this.renderer = (0,_pixi_core__WEBPACK_IMPORTED_MODULE_0__.autoDetectRenderer)(options), _Application2._plugins.forEach((plugin) => {\n plugin.init.call(this, options);\n });\n }\n /** Render the current stage. */\n render() {\n this.renderer.render(this.stage);\n }\n /**\n * Reference to the renderer's canvas element.\n * @member {PIXI.ICanvas}\n * @readonly\n */\n get view() {\n return this.renderer?.view;\n }\n /**\n * Reference to the renderer's screen rectangle. Its safe to use as `filterArea` or `hitArea` for the whole screen.\n * @member {PIXI.Rectangle}\n * @readonly\n */\n get screen() {\n return this.renderer?.screen;\n }\n /**\n * Destroy and don't use after this.\n * @param {boolean} [removeView=false] - Automatically remove canvas from DOM.\n * @param {object|boolean} [stageOptions] - Options parameter. A boolean will act as if all options\n * have been set to that value\n * @param {boolean} [stageOptions.children=false] - if set to true, all the children will have their destroy\n * method called as well. 'stageOptions' will be passed on to those calls.\n * @param {boolean} [stageOptions.texture=false] - Only used for child Sprites if stageOptions.children is set\n * to true. Should it destroy the texture of the child sprite\n * @param {boolean} [stageOptions.baseTexture=false] - Only used for child Sprites if stageOptions.children is set\n * to true. Should it destroy the base texture of the child sprite\n */\n destroy(removeView, stageOptions) {\n const plugins = _Application2._plugins.slice(0);\n plugins.reverse(), plugins.forEach((plugin) => {\n plugin.destroy.call(this);\n }), this.stage.destroy(stageOptions), this.stage = null, this.renderer.destroy(removeView), this.renderer = null;\n }\n};\n_Application._plugins = [];\nlet Application = _Application;\n_pixi_core__WEBPACK_IMPORTED_MODULE_0__.extensions.handleByList(_pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.Application, Application._plugins);\n\n//# sourceMappingURL=Application.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/app/lib/Application.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/app/lib/ResizePlugin.mjs":
-/*!*****************************************************!*\
- !*** ./node_modules/@pixi/app/lib/ResizePlugin.mjs ***!
- \*****************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ResizePlugin: () => (/* binding */ ResizePlugin)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n\nclass ResizePlugin {\n /**\n * Initialize the plugin with scope of application instance\n * @static\n * @private\n * @param {object} [options] - See application options\n */\n static init(options) {\n Object.defineProperty(\n this,\n \"resizeTo\",\n /**\n * The HTML element or window to automatically resize the\n * renderer's view element to match width and height.\n * @member {Window|HTMLElement}\n * @name resizeTo\n * @memberof PIXI.Application#\n */\n {\n set(dom) {\n globalThis.removeEventListener(\"resize\", this.queueResize), this._resizeTo = dom, dom && (globalThis.addEventListener(\"resize\", this.queueResize), this.resize());\n },\n get() {\n return this._resizeTo;\n }\n }\n ), this.queueResize = () => {\n this._resizeTo && (this.cancelResize(), this._resizeId = requestAnimationFrame(() => this.resize()));\n }, this.cancelResize = () => {\n this._resizeId && (cancelAnimationFrame(this._resizeId), this._resizeId = null);\n }, this.resize = () => {\n if (!this._resizeTo)\n return;\n this.cancelResize();\n let width, height;\n if (this._resizeTo === globalThis.window)\n width = globalThis.innerWidth, height = globalThis.innerHeight;\n else {\n const { clientWidth, clientHeight } = this._resizeTo;\n width = clientWidth, height = clientHeight;\n }\n this.renderer.resize(width, height), this.render();\n }, this._resizeId = null, this._resizeTo = null, this.resizeTo = options.resizeTo || null;\n }\n /**\n * Clean up the ticker, scoped to application\n * @static\n * @private\n */\n static destroy() {\n globalThis.removeEventListener(\"resize\", this.queueResize), this.cancelResize(), this.cancelResize = null, this.queueResize = null, this.resizeTo = null, this.resize = null;\n }\n}\nResizePlugin.extension = _pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.Application;\n_pixi_core__WEBPACK_IMPORTED_MODULE_0__.extensions.add(ResizePlugin);\n\n//# sourceMappingURL=ResizePlugin.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/app/lib/ResizePlugin.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/app/lib/index.mjs":
-/*!**********************************************!*\
- !*** ./node_modules/@pixi/app/lib/index.mjs ***!
- \**********************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Application: () => (/* reexport safe */ _Application_mjs__WEBPACK_IMPORTED_MODULE_0__.Application),\n/* harmony export */ ResizePlugin: () => (/* reexport safe */ _ResizePlugin_mjs__WEBPACK_IMPORTED_MODULE_1__.ResizePlugin)\n/* harmony export */ });\n/* harmony import */ var _Application_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Application.mjs */ \"./node_modules/@pixi/app/lib/Application.mjs\");\n/* harmony import */ var _ResizePlugin_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ResizePlugin.mjs */ \"./node_modules/@pixi/app/lib/ResizePlugin.mjs\");\n\n\n\n//# sourceMappingURL=index.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/app/lib/index.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/AssetExtension.mjs":
-/*!**********************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/AssetExtension.mjs ***!
- \**********************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n\nconst assetKeyMap = {\n loader: _pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.LoadParser,\n resolver: _pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.ResolveParser,\n cache: _pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.CacheParser,\n detection: _pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.DetectionParser\n};\n_pixi_core__WEBPACK_IMPORTED_MODULE_0__.extensions.handle(_pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.Asset, (extension) => {\n const ref = extension.ref;\n Object.entries(assetKeyMap).filter(([key]) => !!ref[key]).forEach(([key, type]) => _pixi_core__WEBPACK_IMPORTED_MODULE_0__.extensions.add(Object.assign(\n ref[key],\n // Allow the function to optionally define it's own\n // ExtensionMetadata, the use cases here is priority for LoaderParsers\n { extension: ref[key].extension ?? type }\n )));\n}, (extension) => {\n const ref = extension.ref;\n Object.keys(assetKeyMap).filter((key) => !!ref[key]).forEach((key) => _pixi_core__WEBPACK_IMPORTED_MODULE_0__.extensions.remove(ref[key]));\n});\n//# sourceMappingURL=AssetExtension.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/AssetExtension.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/Assets.mjs":
-/*!**************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/Assets.mjs ***!
- \**************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Assets: () => (/* binding */ Assets),\n/* harmony export */ AssetsClass: () => (/* binding */ AssetsClass)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n/* harmony import */ var _BackgroundLoader_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./BackgroundLoader.mjs */ \"./node_modules/@pixi/assets/lib/BackgroundLoader.mjs\");\n/* harmony import */ var _cache_Cache_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cache/Cache.mjs */ \"./node_modules/@pixi/assets/lib/cache/Cache.mjs\");\n/* harmony import */ var _loader_Loader_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./loader/Loader.mjs */ \"./node_modules/@pixi/assets/lib/loader/Loader.mjs\");\n/* harmony import */ var _loader_parsers_index_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./loader/parsers/index.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/index.mjs\");\n/* harmony import */ var _resolver_Resolver_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./resolver/Resolver.mjs */ \"./node_modules/@pixi/assets/lib/resolver/Resolver.mjs\");\n/* harmony import */ var _utils_convertToList_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils/convertToList.mjs */ \"./node_modules/@pixi/assets/lib/utils/convertToList.mjs\");\n/* harmony import */ var _utils_isSingleItem_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./utils/isSingleItem.mjs */ \"./node_modules/@pixi/assets/lib/utils/isSingleItem.mjs\");\n/* harmony import */ var _loader_parsers_textures_loadTextures_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./loader/parsers/textures/loadTextures.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/textures/loadTextures.mjs\");\n\n\n\n\n\n\n\n\n\nclass AssetsClass {\n constructor() {\n this._detections = [], this._initialized = !1, this.resolver = new _resolver_Resolver_mjs__WEBPACK_IMPORTED_MODULE_5__.Resolver(), this.loader = new _loader_Loader_mjs__WEBPACK_IMPORTED_MODULE_3__.Loader(), this.cache = _cache_Cache_mjs__WEBPACK_IMPORTED_MODULE_2__.Cache, this._backgroundLoader = new _BackgroundLoader_mjs__WEBPACK_IMPORTED_MODULE_1__.BackgroundLoader(this.loader), this._backgroundLoader.active = !0, this.reset();\n }\n /**\n * Best practice is to call this function before any loading commences\n * Initiating is the best time to add any customization to the way things are loaded.\n *\n * you do not need to call this for the Asset class to work, only if you want to set any initial properties\n * @param options - options to initialize the Asset manager with\n */\n async init(options = {}) {\n if (this._initialized) {\n console.warn(\"[Assets]AssetManager already initialized, did you load before calling this Asset.init()?\");\n return;\n }\n if (this._initialized = !0, options.defaultSearchParams && this.resolver.setDefaultSearchParams(options.defaultSearchParams), options.basePath && (this.resolver.basePath = options.basePath), options.bundleIdentifier && this.resolver.setBundleIdentifier(options.bundleIdentifier), options.manifest) {\n let manifest = options.manifest;\n typeof manifest == \"string\" && (manifest = await this.load(manifest)), this.resolver.addManifest(manifest);\n }\n const resolutionPref = options.texturePreference?.resolution ?? 1, resolution = typeof resolutionPref == \"number\" ? [resolutionPref] : resolutionPref, formats = await this._detectFormats({\n preferredFormats: options.texturePreference?.format,\n skipDetections: options.skipDetections,\n detections: this._detections\n });\n this.resolver.prefer({\n params: {\n format: formats,\n resolution\n }\n }), options.preferences && this.setPreferences(options.preferences);\n }\n add(aliases, srcs, data, format, loadParser) {\n this.resolver.add(aliases, srcs, data, format, loadParser);\n }\n async load(urls, onProgress) {\n this._initialized || await this.init();\n const singleAsset = (0,_utils_isSingleItem_mjs__WEBPACK_IMPORTED_MODULE_7__.isSingleItem)(urls), urlArray = (0,_utils_convertToList_mjs__WEBPACK_IMPORTED_MODULE_6__.convertToList)(urls).map((url) => {\n if (typeof url != \"string\") {\n const aliases = this.resolver.getAlias(url);\n return aliases.some((alias) => !this.resolver.hasKey(alias)) && this.add(url), Array.isArray(aliases) ? aliases[0] : aliases;\n }\n return this.resolver.hasKey(url) || this.add({ alias: url, src: url }), url;\n }), resolveResults = this.resolver.resolve(urlArray), out = await this._mapLoadToResolve(resolveResults, onProgress);\n return singleAsset ? out[urlArray[0]] : out;\n }\n /**\n * This adds a bundle of assets in one go so that you can load them as a group.\n * For example you could add a bundle for each screen in you pixi app\n * @example\n * import { Assets } from 'pixi.js';\n *\n * Assets.addBundle('animals', {\n * bunny: 'bunny.png',\n * chicken: 'chicken.png',\n * thumper: 'thumper.png',\n * });\n *\n * const assets = await Assets.loadBundle('animals');\n * @param bundleId - the id of the bundle to add\n * @param assets - a record of the asset or assets that will be chosen from when loading via the specified key\n */\n addBundle(bundleId, assets) {\n this.resolver.addBundle(bundleId, assets);\n }\n /**\n * Bundles are a way to load multiple assets at once.\n * If a manifest has been provided to the init function then you can load a bundle, or bundles.\n * you can also add bundles via `addBundle`\n * @example\n * import { Assets } from 'pixi.js';\n *\n * // Manifest Example\n * const manifest = {\n * bundles: [\n * {\n * name: 'load-screen',\n * assets: [\n * {\n * alias: 'background',\n * src: 'sunset.png',\n * },\n * {\n * alias: 'bar',\n * src: 'load-bar.{png,webp}',\n * },\n * ],\n * },\n * {\n * name: 'game-screen',\n * assets: [\n * {\n * alias: 'character',\n * src: 'robot.png',\n * },\n * {\n * alias: 'enemy',\n * src: 'bad-guy.png',\n * },\n * ],\n * },\n * ]\n * };\n *\n * await Asset.init({ manifest });\n *\n * // Load a bundle...\n * loadScreenAssets = await Assets.loadBundle('load-screen');\n * // Load another bundle...\n * gameScreenAssets = await Assets.loadBundle('game-screen');\n * @param bundleIds - the bundle id or ids to load\n * @param onProgress - Optional function that is called when progress on asset loading is made.\n * The function is passed a single parameter, `progress`, which represents the percentage (0.0 - 1.0)\n * of the assets loaded. Do not use this function to detect when assets are complete and available,\n * instead use the Promise returned by this function.\n * @returns all the bundles assets or a hash of assets for each bundle specified\n */\n async loadBundle(bundleIds, onProgress) {\n this._initialized || await this.init();\n let singleAsset = !1;\n typeof bundleIds == \"string\" && (singleAsset = !0, bundleIds = [bundleIds]);\n const resolveResults = this.resolver.resolveBundle(bundleIds), out = {}, keys = Object.keys(resolveResults);\n let count = 0, total = 0;\n const _onProgress = () => {\n onProgress?.(++count / total);\n }, promises = keys.map((bundleId) => {\n const resolveResult = resolveResults[bundleId];\n return total += Object.keys(resolveResult).length, this._mapLoadToResolve(resolveResult, _onProgress).then((resolveResult2) => {\n out[bundleId] = resolveResult2;\n });\n });\n return await Promise.all(promises), singleAsset ? out[bundleIds[0]] : out;\n }\n /**\n * Initiate a background load of some assets. It will passively begin to load these assets in the background.\n * So when you actually come to loading them you will get a promise that resolves to the loaded assets immediately\n *\n * An example of this might be that you would background load game assets after your inital load.\n * then when you got to actually load your game screen assets when a player goes to the game - the loading\n * would already have stared or may even be complete, saving you having to show an interim load bar.\n * @example\n * import { Assets } from 'pixi.js';\n *\n * Assets.backgroundLoad('bunny.png');\n *\n * // later on in your app...\n * await Assets.loadBundle('bunny.png'); // Will resolve quicker as loading may have completed!\n * @param urls - the url / urls you want to background load\n */\n async backgroundLoad(urls) {\n this._initialized || await this.init(), typeof urls == \"string\" && (urls = [urls]);\n const resolveResults = this.resolver.resolve(urls);\n this._backgroundLoader.add(Object.values(resolveResults));\n }\n /**\n * Initiate a background of a bundle, works exactly like backgroundLoad but for bundles.\n * this can only be used if the loader has been initiated with a manifest\n * @example\n * import { Assets } from 'pixi.js';\n *\n * await Assets.init({\n * manifest: {\n * bundles: [\n * {\n * name: 'load-screen',\n * assets: [...],\n * },\n * ...\n * ],\n * },\n * });\n *\n * Assets.backgroundLoadBundle('load-screen');\n *\n * // Later on in your app...\n * await Assets.loadBundle('load-screen'); // Will resolve quicker as loading may have completed!\n * @param bundleIds - the bundleId / bundleIds you want to background load\n */\n async backgroundLoadBundle(bundleIds) {\n this._initialized || await this.init(), typeof bundleIds == \"string\" && (bundleIds = [bundleIds]);\n const resolveResults = this.resolver.resolveBundle(bundleIds);\n Object.values(resolveResults).forEach((resolveResult) => {\n this._backgroundLoader.add(Object.values(resolveResult));\n });\n }\n /**\n * Only intended for development purposes.\n * This will wipe the resolver and caches.\n * You will need to reinitialize the Asset\n */\n reset() {\n this.resolver.reset(), this.loader.reset(), this.cache.reset(), this._initialized = !1;\n }\n get(keys) {\n if (typeof keys == \"string\")\n return _cache_Cache_mjs__WEBPACK_IMPORTED_MODULE_2__.Cache.get(keys);\n const assets = {};\n for (let i = 0; i < keys.length; i++)\n assets[i] = _cache_Cache_mjs__WEBPACK_IMPORTED_MODULE_2__.Cache.get(keys[i]);\n return assets;\n }\n /**\n * helper function to map resolved assets back to loaded assets\n * @param resolveResults - the resolve results from the resolver\n * @param onProgress - the progress callback\n */\n async _mapLoadToResolve(resolveResults, onProgress) {\n const resolveArray = Object.values(resolveResults), resolveKeys = Object.keys(resolveResults);\n this._backgroundLoader.active = !1;\n const loadedAssets = await this.loader.load(resolveArray, onProgress);\n this._backgroundLoader.active = !0;\n const out = {};\n return resolveArray.forEach((resolveResult, i) => {\n const asset = loadedAssets[resolveResult.src], keys = [resolveResult.src];\n resolveResult.alias && keys.push(...resolveResult.alias), out[resolveKeys[i]] = asset, _cache_Cache_mjs__WEBPACK_IMPORTED_MODULE_2__.Cache.set(keys, asset);\n }), out;\n }\n /**\n * Unload an asset or assets. As the Assets class is responsible for creating the assets via the `load` function\n * this will make sure to destroy any assets and release them from memory.\n * Once unloaded, you will need to load the asset again.\n *\n * Use this to help manage assets if you find that you have a large app and you want to free up memory.\n *\n * - it's up to you as the developer to make sure that textures are not actively being used when you unload them,\n * Pixi won't break but you will end up with missing assets. Not a good look for the user!\n * @example\n * import { Assets } from 'pixi.js';\n *\n * // Load a URL:\n * const myImageTexture = await Assets.load('http://some.url.com/image.png'); // => returns a texture\n *\n * await Assets.unload('http://some.url.com/image.png')\n *\n * // myImageTexture will be destroyed now.\n *\n * // Unload multiple assets:\n * const textures = await Assets.unload(['thumper', 'chicko']);\n * @param urls - the urls to unload\n */\n async unload(urls) {\n this._initialized || await this.init();\n const urlArray = (0,_utils_convertToList_mjs__WEBPACK_IMPORTED_MODULE_6__.convertToList)(urls).map((url) => typeof url != \"string\" ? url.src : url), resolveResults = this.resolver.resolve(urlArray);\n await this._unloadFromResolved(resolveResults);\n }\n /**\n * Bundles are a way to manage multiple assets at once.\n * this will unload all files in a bundle.\n *\n * once a bundle has been unloaded, you need to load it again to have access to the assets.\n * @example\n * import { Assets } from 'pixi.js';\n *\n * Assets.addBundle({\n * 'thumper': 'http://some.url.com/thumper.png',\n * })\n *\n * const assets = await Assets.loadBundle('thumper');\n *\n * // Now to unload...\n *\n * await Assets.unloadBundle('thumper');\n *\n * // All assets in the assets object will now have been destroyed and purged from the cache\n * @param bundleIds - the bundle id or ids to unload\n */\n async unloadBundle(bundleIds) {\n this._initialized || await this.init(), bundleIds = (0,_utils_convertToList_mjs__WEBPACK_IMPORTED_MODULE_6__.convertToList)(bundleIds);\n const resolveResults = this.resolver.resolveBundle(bundleIds), promises = Object.keys(resolveResults).map((bundleId) => this._unloadFromResolved(resolveResults[bundleId]));\n await Promise.all(promises);\n }\n async _unloadFromResolved(resolveResult) {\n const resolveArray = Object.values(resolveResult);\n resolveArray.forEach((resolveResult2) => {\n _cache_Cache_mjs__WEBPACK_IMPORTED_MODULE_2__.Cache.remove(resolveResult2.src);\n }), await this.loader.unload(resolveArray);\n }\n /**\n * Detects the supported formats for the browser, and returns an array of supported formats, respecting\n * the users preferred formats order.\n * @param options - the options to use when detecting formats\n * @param options.preferredFormats - the preferred formats to use\n * @param options.skipDetections - if we should skip the detections altogether\n * @param options.detections - the detections to use\n * @returns - the detected formats\n */\n async _detectFormats(options) {\n let formats = [];\n options.preferredFormats && (formats = Array.isArray(options.preferredFormats) ? options.preferredFormats : [options.preferredFormats]);\n for (const detection of options.detections)\n options.skipDetections || await detection.test() ? formats = await detection.add(formats) : options.skipDetections || (formats = await detection.remove(formats));\n return formats = formats.filter((format, index) => formats.indexOf(format) === index), formats;\n }\n /** All the detection parsers currently added to the Assets class. */\n get detections() {\n return this._detections;\n }\n /**\n * @deprecated since 7.2.0\n * @see {@link Assets.setPreferences}\n */\n get preferWorkers() {\n return _loader_parsers_textures_loadTextures_mjs__WEBPACK_IMPORTED_MODULE_8__.loadTextures.config.preferWorkers;\n }\n set preferWorkers(value) {\n _pixi_core__WEBPACK_IMPORTED_MODULE_0__.utils.deprecation(\"7.2.0\", \"Assets.prefersWorkers is deprecated, use Assets.setPreferences({ preferWorkers: true }) instead.\"), this.setPreferences({ preferWorkers: value });\n }\n /**\n * General setter for preferences. This is a helper function to set preferences on all parsers.\n * @param preferences - the preferences to set\n */\n setPreferences(preferences) {\n this.loader.parsers.forEach((parser) => {\n parser.config && Object.keys(parser.config).filter((key) => key in preferences).forEach((key) => {\n parser.config[key] = preferences[key];\n });\n });\n }\n}\nconst Assets = new AssetsClass();\n_pixi_core__WEBPACK_IMPORTED_MODULE_0__.extensions.handleByList(_pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.LoadParser, Assets.loader.parsers).handleByList(_pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.ResolveParser, Assets.resolver.parsers).handleByList(_pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.CacheParser, Assets.cache.parsers).handleByList(_pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.DetectionParser, Assets.detections);\n\n//# sourceMappingURL=Assets.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/Assets.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/BackgroundLoader.mjs":
-/*!************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/BackgroundLoader.mjs ***!
- \************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BackgroundLoader: () => (/* binding */ BackgroundLoader)\n/* harmony export */ });\nclass BackgroundLoader {\n /**\n * @param loader\n * @param verbose - should the loader log to the console\n */\n constructor(loader, verbose = !1) {\n this._loader = loader, this._assetList = [], this._isLoading = !1, this._maxConcurrent = 1, this.verbose = verbose;\n }\n /**\n * Adds an array of assets to load.\n * @param assetUrls - assets to load\n */\n add(assetUrls) {\n assetUrls.forEach((a) => {\n this._assetList.push(a);\n }), this.verbose && console.log(\"[BackgroundLoader] assets: \", this._assetList), this._isActive && !this._isLoading && this._next();\n }\n /**\n * Loads the next set of assets. Will try to load as many assets as it can at the same time.\n *\n * The max assets it will try to load at one time will be 4.\n */\n async _next() {\n if (this._assetList.length && this._isActive) {\n this._isLoading = !0;\n const toLoad = [], toLoadAmount = Math.min(this._assetList.length, this._maxConcurrent);\n for (let i = 0; i < toLoadAmount; i++)\n toLoad.push(this._assetList.pop());\n await this._loader.load(toLoad), this._isLoading = !1, this._next();\n }\n }\n /**\n * Activate/Deactivate the loading. If set to true then it will immediately continue to load the next asset.\n * @returns whether the class is active\n */\n get active() {\n return this._isActive;\n }\n set active(value) {\n this._isActive !== value && (this._isActive = value, value && !this._isLoading && this._next());\n }\n}\n\n//# sourceMappingURL=BackgroundLoader.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/BackgroundLoader.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/cache/Cache.mjs":
-/*!*******************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/cache/Cache.mjs ***!
- \*******************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Cache: () => (/* binding */ Cache)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n/* harmony import */ var _utils_index_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/index.mjs */ \"./node_modules/@pixi/assets/lib/utils/index.mjs\");\n/* harmony import */ var _utils_convertToList_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/convertToList.mjs */ \"./node_modules/@pixi/assets/lib/utils/convertToList.mjs\");\n\n\n\nclass CacheClass {\n constructor() {\n this._parsers = [], this._cache = /* @__PURE__ */ new Map(), this._cacheMap = /* @__PURE__ */ new Map();\n }\n /** Clear all entries. */\n reset() {\n this._cacheMap.clear(), this._cache.clear();\n }\n /**\n * Check if the key exists\n * @param key - The key to check\n */\n has(key) {\n return this._cache.has(key);\n }\n /**\n * Fetch entry by key\n * @param key - The key of the entry to get\n */\n get(key) {\n const result = this._cache.get(key);\n return result || console.warn(`[Assets] Asset id ${key} was not found in the Cache`), result;\n }\n /**\n * Set a value by key or keys name\n * @param key - The key or keys to set\n * @param value - The value to store in the cache or from which cacheable assets will be derived.\n */\n set(key, value) {\n const keys = (0,_utils_convertToList_mjs__WEBPACK_IMPORTED_MODULE_2__.convertToList)(key);\n let cacheableAssets;\n for (let i = 0; i < this.parsers.length; i++) {\n const parser = this.parsers[i];\n if (parser.test(value)) {\n cacheableAssets = parser.getCacheableAssets(keys, value);\n break;\n }\n }\n cacheableAssets || (cacheableAssets = {}, keys.forEach((key2) => {\n cacheableAssets[key2] = value;\n }));\n const cacheKeys = Object.keys(cacheableAssets), cachedAssets = {\n cacheKeys,\n keys\n };\n if (keys.forEach((key2) => {\n this._cacheMap.set(key2, cachedAssets);\n }), cacheKeys.forEach((key2) => {\n this._cache.has(key2) && this._cache.get(key2) !== value && console.warn(\"[Cache] already has key:\", key2), this._cache.set(key2, cacheableAssets[key2]);\n }), value instanceof _pixi_core__WEBPACK_IMPORTED_MODULE_0__.Texture) {\n const texture = value;\n keys.forEach((key2) => {\n texture.baseTexture !== _pixi_core__WEBPACK_IMPORTED_MODULE_0__.Texture.EMPTY.baseTexture && _pixi_core__WEBPACK_IMPORTED_MODULE_0__.BaseTexture.addToCache(texture.baseTexture, key2), _pixi_core__WEBPACK_IMPORTED_MODULE_0__.Texture.addToCache(texture, key2);\n });\n }\n }\n /**\n * Remove entry by key\n *\n * This function will also remove any associated alias from the cache also.\n * @param key - The key of the entry to remove\n */\n remove(key) {\n if (!this._cacheMap.has(key)) {\n console.warn(`[Assets] Asset id ${key} was not found in the Cache`);\n return;\n }\n const cacheMap = this._cacheMap.get(key);\n cacheMap.cacheKeys.forEach((key2) => {\n this._cache.delete(key2);\n }), cacheMap.keys.forEach((key2) => {\n this._cacheMap.delete(key2);\n });\n }\n /** All loader parsers registered */\n get parsers() {\n return this._parsers;\n }\n}\nconst Cache = new CacheClass();\n\n//# sourceMappingURL=Cache.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/cache/Cache.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/cache/CacheParser.mjs":
-/*!*************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/cache/CacheParser.mjs ***!
- \*************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n\n//# sourceMappingURL=CacheParser.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/cache/CacheParser.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/cache/index.mjs":
-/*!*******************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/cache/index.mjs ***!
- \*******************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Cache: () => (/* reexport safe */ _Cache_mjs__WEBPACK_IMPORTED_MODULE_0__.Cache)\n/* harmony export */ });\n/* harmony import */ var _Cache_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Cache.mjs */ \"./node_modules/@pixi/assets/lib/cache/Cache.mjs\");\n/* harmony import */ var _CacheParser_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CacheParser.mjs */ \"./node_modules/@pixi/assets/lib/cache/CacheParser.mjs\");\n/* harmony import */ var _parsers_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./parsers/index.mjs */ \"./node_modules/@pixi/assets/lib/cache/parsers/index.mjs\");\n\n\n\n\n//# sourceMappingURL=index.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/cache/index.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/cache/parsers/cacheTextureArray.mjs":
-/*!***************************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/cache/parsers/cacheTextureArray.mjs ***!
- \***************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ cacheTextureArray: () => (/* binding */ cacheTextureArray)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n\nconst cacheTextureArray = {\n extension: _pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.CacheParser,\n test: (asset) => Array.isArray(asset) && asset.every((t) => t instanceof _pixi_core__WEBPACK_IMPORTED_MODULE_0__.Texture),\n getCacheableAssets: (keys, asset) => {\n const out = {};\n return keys.forEach((key) => {\n asset.forEach((item, i) => {\n out[key + (i === 0 ? \"\" : i + 1)] = item;\n });\n }), out;\n }\n};\n_pixi_core__WEBPACK_IMPORTED_MODULE_0__.extensions.add(cacheTextureArray);\n\n//# sourceMappingURL=cacheTextureArray.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/cache/parsers/cacheTextureArray.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/cache/parsers/index.mjs":
-/*!***************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/cache/parsers/index.mjs ***!
- \***************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ cacheTextureArray: () => (/* reexport safe */ _cacheTextureArray_mjs__WEBPACK_IMPORTED_MODULE_0__.cacheTextureArray)\n/* harmony export */ });\n/* harmony import */ var _cacheTextureArray_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cacheTextureArray.mjs */ \"./node_modules/@pixi/assets/lib/cache/parsers/cacheTextureArray.mjs\");\n\n\n//# sourceMappingURL=index.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/cache/parsers/index.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/detections/index.mjs":
-/*!************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/detections/index.mjs ***!
- \************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _parsers_index_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./parsers/index.mjs */ \"./node_modules/@pixi/assets/lib/detections/parsers/index.mjs\");\n\n//# sourceMappingURL=index.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/detections/index.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/detections/parsers/detectAvif.mjs":
-/*!*************************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/detections/parsers/detectAvif.mjs ***!
- \*************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ detectAvif: () => (/* binding */ detectAvif)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n/* harmony import */ var _utils_testImageFormat_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/testImageFormat.mjs */ \"./node_modules/@pixi/assets/lib/detections/utils/testImageFormat.mjs\");\n\n\nconst detectAvif = {\n extension: {\n type: _pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.DetectionParser,\n priority: 1\n },\n test: async () => (0,_utils_testImageFormat_mjs__WEBPACK_IMPORTED_MODULE_1__.testImageFormat)(\n // eslint-disable-next-line max-len\n \"data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=\"\n ),\n add: async (formats) => [...formats, \"avif\"],\n remove: async (formats) => formats.filter((f) => f !== \"avif\")\n};\n_pixi_core__WEBPACK_IMPORTED_MODULE_0__.extensions.add(detectAvif);\n\n//# sourceMappingURL=detectAvif.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/detections/parsers/detectAvif.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/detections/parsers/detectDefaults.mjs":
-/*!*****************************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/detections/parsers/detectDefaults.mjs ***!
- \*****************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ detectDefaults: () => (/* binding */ detectDefaults)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n\nconst imageFormats = [\"png\", \"jpg\", \"jpeg\"], detectDefaults = {\n extension: {\n type: _pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.DetectionParser,\n priority: -1\n },\n test: () => Promise.resolve(!0),\n add: async (formats) => [...formats, ...imageFormats],\n remove: async (formats) => formats.filter((f) => !imageFormats.includes(f))\n};\n_pixi_core__WEBPACK_IMPORTED_MODULE_0__.extensions.add(detectDefaults);\n\n//# sourceMappingURL=detectDefaults.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/detections/parsers/detectDefaults.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/detections/parsers/detectMp4.mjs":
-/*!************************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/detections/parsers/detectMp4.mjs ***!
- \************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ detectMp4: () => (/* binding */ detectMp4)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n/* harmony import */ var _utils_testVideoFormat_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/testVideoFormat.mjs */ \"./node_modules/@pixi/assets/lib/detections/utils/testVideoFormat.mjs\");\n\n\nconst detectMp4 = {\n extension: {\n type: _pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.DetectionParser,\n priority: 0\n },\n test: async () => (0,_utils_testVideoFormat_mjs__WEBPACK_IMPORTED_MODULE_1__.testVideoFormat)(\"video/mp4\"),\n add: async (formats) => [...formats, \"mp4\", \"m4v\"],\n remove: async (formats) => formats.filter((f) => f !== \"mp4\" && f !== \"m4v\")\n};\n_pixi_core__WEBPACK_IMPORTED_MODULE_0__.extensions.add(detectMp4);\n\n//# sourceMappingURL=detectMp4.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/detections/parsers/detectMp4.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/detections/parsers/detectOgv.mjs":
-/*!************************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/detections/parsers/detectOgv.mjs ***!
- \************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ detectOgv: () => (/* binding */ detectOgv)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n/* harmony import */ var _utils_testVideoFormat_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/testVideoFormat.mjs */ \"./node_modules/@pixi/assets/lib/detections/utils/testVideoFormat.mjs\");\n\n\nconst detectOgv = {\n extension: {\n type: _pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.DetectionParser,\n priority: 0\n },\n test: async () => (0,_utils_testVideoFormat_mjs__WEBPACK_IMPORTED_MODULE_1__.testVideoFormat)(\"video/ogg\"),\n add: async (formats) => [...formats, \"ogv\"],\n remove: async (formats) => formats.filter((f) => f !== \"ogv\")\n};\n_pixi_core__WEBPACK_IMPORTED_MODULE_0__.extensions.add(detectOgv);\n\n//# sourceMappingURL=detectOgv.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/detections/parsers/detectOgv.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/detections/parsers/detectWebm.mjs":
-/*!*************************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/detections/parsers/detectWebm.mjs ***!
- \*************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ detectWebm: () => (/* binding */ detectWebm)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n/* harmony import */ var _utils_testVideoFormat_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/testVideoFormat.mjs */ \"./node_modules/@pixi/assets/lib/detections/utils/testVideoFormat.mjs\");\n\n\nconst detectWebm = {\n extension: {\n type: _pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.DetectionParser,\n priority: 0\n },\n test: async () => (0,_utils_testVideoFormat_mjs__WEBPACK_IMPORTED_MODULE_1__.testVideoFormat)(\"video/webm\"),\n add: async (formats) => [...formats, \"webm\"],\n remove: async (formats) => formats.filter((f) => f !== \"webm\")\n};\n_pixi_core__WEBPACK_IMPORTED_MODULE_0__.extensions.add(detectWebm);\n\n//# sourceMappingURL=detectWebm.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/detections/parsers/detectWebm.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/detections/parsers/detectWebp.mjs":
-/*!*************************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/detections/parsers/detectWebp.mjs ***!
- \*************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ detectWebp: () => (/* binding */ detectWebp)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n/* harmony import */ var _utils_testImageFormat_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/testImageFormat.mjs */ \"./node_modules/@pixi/assets/lib/detections/utils/testImageFormat.mjs\");\n\n\nconst detectWebp = {\n extension: {\n type: _pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.DetectionParser,\n priority: 0\n },\n test: async () => (0,_utils_testImageFormat_mjs__WEBPACK_IMPORTED_MODULE_1__.testImageFormat)(\n \"data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA=\"\n ),\n add: async (formats) => [...formats, \"webp\"],\n remove: async (formats) => formats.filter((f) => f !== \"webp\")\n};\n_pixi_core__WEBPACK_IMPORTED_MODULE_0__.extensions.add(detectWebp);\n\n//# sourceMappingURL=detectWebp.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/detections/parsers/detectWebp.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/detections/parsers/index.mjs":
-/*!********************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/detections/parsers/index.mjs ***!
- \********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ detectAvif: () => (/* reexport safe */ _detectAvif_mjs__WEBPACK_IMPORTED_MODULE_0__.detectAvif),\n/* harmony export */ detectDefaults: () => (/* reexport safe */ _detectDefaults_mjs__WEBPACK_IMPORTED_MODULE_2__.detectDefaults),\n/* harmony export */ detectMp4: () => (/* reexport safe */ _detectMp4_mjs__WEBPACK_IMPORTED_MODULE_4__.detectMp4),\n/* harmony export */ detectOgv: () => (/* reexport safe */ _detectOgv_mjs__WEBPACK_IMPORTED_MODULE_5__.detectOgv),\n/* harmony export */ detectWebm: () => (/* reexport safe */ _detectWebm_mjs__WEBPACK_IMPORTED_MODULE_3__.detectWebm),\n/* harmony export */ detectWebp: () => (/* reexport safe */ _detectWebp_mjs__WEBPACK_IMPORTED_MODULE_1__.detectWebp)\n/* harmony export */ });\n/* harmony import */ var _detectAvif_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./detectAvif.mjs */ \"./node_modules/@pixi/assets/lib/detections/parsers/detectAvif.mjs\");\n/* harmony import */ var _detectWebp_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./detectWebp.mjs */ \"./node_modules/@pixi/assets/lib/detections/parsers/detectWebp.mjs\");\n/* harmony import */ var _detectDefaults_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./detectDefaults.mjs */ \"./node_modules/@pixi/assets/lib/detections/parsers/detectDefaults.mjs\");\n/* harmony import */ var _detectWebm_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./detectWebm.mjs */ \"./node_modules/@pixi/assets/lib/detections/parsers/detectWebm.mjs\");\n/* harmony import */ var _detectMp4_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./detectMp4.mjs */ \"./node_modules/@pixi/assets/lib/detections/parsers/detectMp4.mjs\");\n/* harmony import */ var _detectOgv_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./detectOgv.mjs */ \"./node_modules/@pixi/assets/lib/detections/parsers/detectOgv.mjs\");\n\n\n\n\n\n\n\n//# sourceMappingURL=index.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/detections/parsers/index.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/detections/utils/testImageFormat.mjs":
-/*!****************************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/detections/utils/testImageFormat.mjs ***!
- \****************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ testImageFormat: () => (/* binding */ testImageFormat)\n/* harmony export */ });\nasync function testImageFormat(imageData) {\n if (\"Image\" in globalThis)\n return new Promise((resolve) => {\n const image = new Image();\n image.onload = () => {\n resolve(!0);\n }, image.onerror = () => {\n resolve(!1);\n }, image.src = imageData;\n });\n if (\"createImageBitmap\" in globalThis && \"fetch\" in globalThis) {\n try {\n const blob = await (await fetch(imageData)).blob();\n await createImageBitmap(blob);\n } catch {\n return !1;\n }\n return !0;\n }\n return !1;\n}\n\n//# sourceMappingURL=testImageFormat.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/detections/utils/testImageFormat.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/detections/utils/testVideoFormat.mjs":
-/*!****************************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/detections/utils/testVideoFormat.mjs ***!
- \****************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ testVideoFormat: () => (/* binding */ testVideoFormat)\n/* harmony export */ });\nconst inWorker = \"WorkerGlobalScope\" in globalThis && globalThis instanceof globalThis.WorkerGlobalScope;\nfunction testVideoFormat(mimeType) {\n return inWorker ? !1 : document.createElement(\"video\").canPlayType(mimeType) !== \"\";\n}\n\n//# sourceMappingURL=testVideoFormat.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/detections/utils/testVideoFormat.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/index.mjs":
-/*!*************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/index.mjs ***!
- \*************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Assets: () => (/* reexport safe */ _Assets_mjs__WEBPACK_IMPORTED_MODULE_1__.Assets),\n/* harmony export */ AssetsClass: () => (/* reexport safe */ _Assets_mjs__WEBPACK_IMPORTED_MODULE_1__.AssetsClass),\n/* harmony export */ Cache: () => (/* reexport safe */ _cache_Cache_mjs__WEBPACK_IMPORTED_MODULE_8__.Cache),\n/* harmony export */ LoaderParserPriority: () => (/* reexport safe */ _loader_parsers_LoaderParser_mjs__WEBPACK_IMPORTED_MODULE_16__.LoaderParserPriority),\n/* harmony export */ cacheTextureArray: () => (/* reexport safe */ _cache_parsers_cacheTextureArray_mjs__WEBPACK_IMPORTED_MODULE_9__.cacheTextureArray),\n/* harmony export */ checkDataUrl: () => (/* reexport safe */ _utils_checkDataUrl_mjs__WEBPACK_IMPORTED_MODULE_25__.checkDataUrl),\n/* harmony export */ checkExtension: () => (/* reexport safe */ _utils_checkExtension_mjs__WEBPACK_IMPORTED_MODULE_26__.checkExtension),\n/* harmony export */ convertToList: () => (/* reexport safe */ _utils_convertToList_mjs__WEBPACK_IMPORTED_MODULE_27__.convertToList),\n/* harmony export */ copySearchParams: () => (/* reexport safe */ _utils_copySearchParams_mjs__WEBPACK_IMPORTED_MODULE_28__.copySearchParams),\n/* harmony export */ createStringVariations: () => (/* reexport safe */ _utils_createStringVariations_mjs__WEBPACK_IMPORTED_MODULE_29__.createStringVariations),\n/* harmony export */ createTexture: () => (/* reexport safe */ _loader_parsers_textures_utils_createTexture_mjs__WEBPACK_IMPORTED_MODULE_23__.createTexture),\n/* harmony export */ detectAvif: () => (/* reexport safe */ _detections_parsers_detectAvif_mjs__WEBPACK_IMPORTED_MODULE_10__.detectAvif),\n/* harmony export */ detectDefaults: () => (/* reexport safe */ _detections_parsers_detectDefaults_mjs__WEBPACK_IMPORTED_MODULE_12__.detectDefaults),\n/* harmony export */ detectMp4: () => (/* reexport safe */ _detections_parsers_detectMp4_mjs__WEBPACK_IMPORTED_MODULE_14__.detectMp4),\n/* harmony export */ detectOgv: () => (/* reexport safe */ _detections_parsers_detectOgv_mjs__WEBPACK_IMPORTED_MODULE_15__.detectOgv),\n/* harmony export */ detectWebm: () => (/* reexport safe */ _detections_parsers_detectWebm_mjs__WEBPACK_IMPORTED_MODULE_13__.detectWebm),\n/* harmony export */ detectWebp: () => (/* reexport safe */ _detections_parsers_detectWebp_mjs__WEBPACK_IMPORTED_MODULE_11__.detectWebp),\n/* harmony export */ getFontFamilyName: () => (/* reexport safe */ _loader_parsers_loadWebFont_mjs__WEBPACK_IMPORTED_MODULE_19__.getFontFamilyName),\n/* harmony export */ isSingleItem: () => (/* reexport safe */ _utils_isSingleItem_mjs__WEBPACK_IMPORTED_MODULE_30__.isSingleItem),\n/* harmony export */ loadImageBitmap: () => (/* reexport safe */ _loader_parsers_textures_loadTextures_mjs__WEBPACK_IMPORTED_MODULE_21__.loadImageBitmap),\n/* harmony export */ loadJson: () => (/* reexport safe */ _loader_parsers_loadJson_mjs__WEBPACK_IMPORTED_MODULE_17__.loadJson),\n/* harmony export */ loadSVG: () => (/* reexport safe */ _loader_parsers_textures_loadSVG_mjs__WEBPACK_IMPORTED_MODULE_20__.loadSVG),\n/* harmony export */ loadTextures: () => (/* reexport safe */ _loader_parsers_textures_loadTextures_mjs__WEBPACK_IMPORTED_MODULE_21__.loadTextures),\n/* harmony export */ loadTxt: () => (/* reexport safe */ _loader_parsers_loadTxt_mjs__WEBPACK_IMPORTED_MODULE_18__.loadTxt),\n/* harmony export */ loadVideo: () => (/* reexport safe */ _loader_parsers_textures_loadVideo_mjs__WEBPACK_IMPORTED_MODULE_22__.loadVideo),\n/* harmony export */ loadWebFont: () => (/* reexport safe */ _loader_parsers_loadWebFont_mjs__WEBPACK_IMPORTED_MODULE_19__.loadWebFont),\n/* harmony export */ resolveTextureUrl: () => (/* reexport safe */ _resolver_parsers_resolveTextureUrl_mjs__WEBPACK_IMPORTED_MODULE_24__.resolveTextureUrl)\n/* harmony export */ });\n/* harmony import */ var _AssetExtension_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AssetExtension.mjs */ \"./node_modules/@pixi/assets/lib/AssetExtension.mjs\");\n/* harmony import */ var _Assets_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Assets.mjs */ \"./node_modules/@pixi/assets/lib/Assets.mjs\");\n/* harmony import */ var _cache_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cache/index.mjs */ \"./node_modules/@pixi/assets/lib/cache/index.mjs\");\n/* harmony import */ var _detections_index_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./detections/index.mjs */ \"./node_modules/@pixi/assets/lib/detections/index.mjs\");\n/* harmony import */ var _loader_index_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./loader/index.mjs */ \"./node_modules/@pixi/assets/lib/loader/index.mjs\");\n/* harmony import */ var _resolver_index_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./resolver/index.mjs */ \"./node_modules/@pixi/assets/lib/resolver/index.mjs\");\n/* harmony import */ var _types_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./types.mjs */ \"./node_modules/@pixi/assets/lib/types.mjs\");\n/* harmony import */ var _utils_index_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./utils/index.mjs */ \"./node_modules/@pixi/assets/lib/utils/index.mjs\");\n/* harmony import */ var _cache_Cache_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./cache/Cache.mjs */ \"./node_modules/@pixi/assets/lib/cache/Cache.mjs\");\n/* harmony import */ var _cache_parsers_cacheTextureArray_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./cache/parsers/cacheTextureArray.mjs */ \"./node_modules/@pixi/assets/lib/cache/parsers/cacheTextureArray.mjs\");\n/* harmony import */ var _detections_parsers_detectAvif_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./detections/parsers/detectAvif.mjs */ \"./node_modules/@pixi/assets/lib/detections/parsers/detectAvif.mjs\");\n/* harmony import */ var _detections_parsers_detectWebp_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./detections/parsers/detectWebp.mjs */ \"./node_modules/@pixi/assets/lib/detections/parsers/detectWebp.mjs\");\n/* harmony import */ var _detections_parsers_detectDefaults_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./detections/parsers/detectDefaults.mjs */ \"./node_modules/@pixi/assets/lib/detections/parsers/detectDefaults.mjs\");\n/* harmony import */ var _detections_parsers_detectWebm_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./detections/parsers/detectWebm.mjs */ \"./node_modules/@pixi/assets/lib/detections/parsers/detectWebm.mjs\");\n/* harmony import */ var _detections_parsers_detectMp4_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./detections/parsers/detectMp4.mjs */ \"./node_modules/@pixi/assets/lib/detections/parsers/detectMp4.mjs\");\n/* harmony import */ var _detections_parsers_detectOgv_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./detections/parsers/detectOgv.mjs */ \"./node_modules/@pixi/assets/lib/detections/parsers/detectOgv.mjs\");\n/* harmony import */ var _loader_parsers_LoaderParser_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./loader/parsers/LoaderParser.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/LoaderParser.mjs\");\n/* harmony import */ var _loader_parsers_loadJson_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./loader/parsers/loadJson.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/loadJson.mjs\");\n/* harmony import */ var _loader_parsers_loadTxt_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./loader/parsers/loadTxt.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/loadTxt.mjs\");\n/* harmony import */ var _loader_parsers_loadWebFont_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./loader/parsers/loadWebFont.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/loadWebFont.mjs\");\n/* harmony import */ var _loader_parsers_textures_loadSVG_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./loader/parsers/textures/loadSVG.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/textures/loadSVG.mjs\");\n/* harmony import */ var _loader_parsers_textures_loadTextures_mjs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./loader/parsers/textures/loadTextures.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/textures/loadTextures.mjs\");\n/* harmony import */ var _loader_parsers_textures_loadVideo_mjs__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./loader/parsers/textures/loadVideo.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/textures/loadVideo.mjs\");\n/* harmony import */ var _loader_parsers_textures_utils_createTexture_mjs__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./loader/parsers/textures/utils/createTexture.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/textures/utils/createTexture.mjs\");\n/* harmony import */ var _resolver_parsers_resolveTextureUrl_mjs__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./resolver/parsers/resolveTextureUrl.mjs */ \"./node_modules/@pixi/assets/lib/resolver/parsers/resolveTextureUrl.mjs\");\n/* harmony import */ var _utils_checkDataUrl_mjs__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./utils/checkDataUrl.mjs */ \"./node_modules/@pixi/assets/lib/utils/checkDataUrl.mjs\");\n/* harmony import */ var _utils_checkExtension_mjs__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./utils/checkExtension.mjs */ \"./node_modules/@pixi/assets/lib/utils/checkExtension.mjs\");\n/* harmony import */ var _utils_convertToList_mjs__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./utils/convertToList.mjs */ \"./node_modules/@pixi/assets/lib/utils/convertToList.mjs\");\n/* harmony import */ var _utils_copySearchParams_mjs__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./utils/copySearchParams.mjs */ \"./node_modules/@pixi/assets/lib/utils/copySearchParams.mjs\");\n/* harmony import */ var _utils_createStringVariations_mjs__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./utils/createStringVariations.mjs */ \"./node_modules/@pixi/assets/lib/utils/createStringVariations.mjs\");\n/* harmony import */ var _utils_isSingleItem_mjs__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./utils/isSingleItem.mjs */ \"./node_modules/@pixi/assets/lib/utils/isSingleItem.mjs\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/index.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/loader/Loader.mjs":
-/*!*********************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/loader/Loader.mjs ***!
- \*********************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Loader: () => (/* binding */ Loader)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n/* harmony import */ var _utils_index_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/index.mjs */ \"./node_modules/@pixi/assets/lib/utils/index.mjs\");\n/* harmony import */ var _utils_isSingleItem_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/isSingleItem.mjs */ \"./node_modules/@pixi/assets/lib/utils/isSingleItem.mjs\");\n/* harmony import */ var _utils_convertToList_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/convertToList.mjs */ \"./node_modules/@pixi/assets/lib/utils/convertToList.mjs\");\n\n\n\n\nclass Loader {\n constructor() {\n this._parsers = [], this._parsersValidated = !1, this.parsers = new Proxy(this._parsers, {\n set: (target, key, value) => (this._parsersValidated = !1, target[key] = value, !0)\n }), this.promiseCache = {};\n }\n /** function used for testing */\n reset() {\n this._parsersValidated = !1, this.promiseCache = {};\n }\n /**\n * Used internally to generate a promise for the asset to be loaded.\n * @param url - The URL to be loaded\n * @param data - any custom additional information relevant to the asset being loaded\n * @returns - a promise that will resolve to an Asset for example a Texture of a JSON object\n */\n _getLoadPromiseAndParser(url, data) {\n const result = {\n promise: null,\n parser: null\n };\n return result.promise = (async () => {\n let asset = null, parser = null;\n if (data.loadParser && (parser = this._parserHash[data.loadParser], parser || console.warn(`[Assets] specified load parser \"${data.loadParser}\" not found while loading ${url}`)), !parser) {\n for (let i = 0; i < this.parsers.length; i++) {\n const parserX = this.parsers[i];\n if (parserX.load && parserX.test?.(url, data, this)) {\n parser = parserX;\n break;\n }\n }\n if (!parser)\n return console.warn(`[Assets] ${url} could not be loaded as we don't know how to parse it, ensure the correct parser has been added`), null;\n }\n asset = await parser.load(url, data, this), result.parser = parser;\n for (let i = 0; i < this.parsers.length; i++) {\n const parser2 = this.parsers[i];\n parser2.parse && parser2.parse && await parser2.testParse?.(asset, data, this) && (asset = await parser2.parse(asset, data, this) || asset, result.parser = parser2);\n }\n return asset;\n })(), result;\n }\n async load(assetsToLoadIn, onProgress) {\n this._parsersValidated || this._validateParsers();\n let count = 0;\n const assets = {}, singleAsset = (0,_utils_isSingleItem_mjs__WEBPACK_IMPORTED_MODULE_2__.isSingleItem)(assetsToLoadIn), assetsToLoad = (0,_utils_convertToList_mjs__WEBPACK_IMPORTED_MODULE_3__.convertToList)(assetsToLoadIn, (item) => ({\n alias: [item],\n src: item\n })), total = assetsToLoad.length, promises = assetsToLoad.map(async (asset) => {\n const url = _pixi_core__WEBPACK_IMPORTED_MODULE_0__.utils.path.toAbsolute(asset.src);\n if (!assets[asset.src])\n try {\n this.promiseCache[url] || (this.promiseCache[url] = this._getLoadPromiseAndParser(url, asset)), assets[asset.src] = await this.promiseCache[url].promise, onProgress && onProgress(++count / total);\n } catch (e) {\n throw delete this.promiseCache[url], delete assets[asset.src], new Error(`[Loader.load] Failed to load ${url}.\n${e}`);\n }\n });\n return await Promise.all(promises), singleAsset ? assets[assetsToLoad[0].src] : assets;\n }\n /**\n * Unloads one or more assets. Any unloaded assets will be destroyed, freeing up memory for your app.\n * The parser that created the asset, will be the one that unloads it.\n * @example\n * // Single asset:\n * const asset = await Loader.load('cool.png');\n *\n * await Loader.unload('cool.png');\n *\n * console.log(asset.destroyed); // true\n * @param assetsToUnloadIn - urls that you want to unload, or a single one!\n */\n async unload(assetsToUnloadIn) {\n const promises = (0,_utils_convertToList_mjs__WEBPACK_IMPORTED_MODULE_3__.convertToList)(assetsToUnloadIn, (item) => ({\n alias: [item],\n src: item\n })).map(async (asset) => {\n const url = _pixi_core__WEBPACK_IMPORTED_MODULE_0__.utils.path.toAbsolute(asset.src), loadPromise = this.promiseCache[url];\n if (loadPromise) {\n const loadedAsset = await loadPromise.promise;\n delete this.promiseCache[url], loadPromise.parser?.unload?.(loadedAsset, asset, this);\n }\n });\n await Promise.all(promises);\n }\n /** validates our parsers, right now it only checks for name conflicts but we can add more here as required! */\n _validateParsers() {\n this._parsersValidated = !0, this._parserHash = this._parsers.filter((parser) => parser.name).reduce((hash, parser) => (hash[parser.name] && console.warn(`[Assets] loadParser name conflict \"${parser.name}\"`), { ...hash, [parser.name]: parser }), {});\n }\n}\n\n//# sourceMappingURL=Loader.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/loader/Loader.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/loader/index.mjs":
-/*!********************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/loader/index.mjs ***!
- \********************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _parsers_index_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./parsers/index.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/index.mjs\");\n\n//# sourceMappingURL=index.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/loader/index.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/loader/parsers/LoaderParser.mjs":
-/*!***********************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/loader/parsers/LoaderParser.mjs ***!
- \***********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ LoaderParserPriority: () => (/* binding */ LoaderParserPriority)\n/* harmony export */ });\nvar LoaderParserPriority = /* @__PURE__ */ ((LoaderParserPriority2) => (LoaderParserPriority2[LoaderParserPriority2.Low = 0] = \"Low\", LoaderParserPriority2[LoaderParserPriority2.Normal = 1] = \"Normal\", LoaderParserPriority2[LoaderParserPriority2.High = 2] = \"High\", LoaderParserPriority2))(LoaderParserPriority || {});\n\n//# sourceMappingURL=LoaderParser.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/loader/parsers/LoaderParser.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/loader/parsers/WorkerManager.mjs":
-/*!************************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/loader/parsers/WorkerManager.mjs ***!
- \************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ WorkerManager: () => (/* binding */ WorkerManager)\n/* harmony export */ });\nlet UUID = 0, MAX_WORKERS;\nconst WHITE_PNG = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII=\", checkImageBitmapCode = {\n id: \"checkImageBitmap\",\n code: `\n async function checkImageBitmap()\n {\n try\n {\n if (typeof createImageBitmap !== 'function') return false;\n\n const response = await fetch('${WHITE_PNG}');\n const imageBlob = await response.blob();\n const imageBitmap = await createImageBitmap(imageBlob);\n\n return imageBitmap.width === 1 && imageBitmap.height === 1;\n }\n catch (e)\n {\n return false;\n }\n }\n checkImageBitmap().then((result) => { self.postMessage(result); });\n `\n}, workerCode = {\n id: \"loadImageBitmap\",\n code: `\n async function loadImageBitmap(url)\n {\n const response = await fetch(url);\n\n if (!response.ok)\n {\n throw new Error(\\`[WorkerManager.loadImageBitmap] Failed to fetch \\${url}: \\`\n + \\`\\${response.status} \\${response.statusText}\\`);\n }\n\n const imageBlob = await response.blob();\n const imageBitmap = await createImageBitmap(imageBlob);\n\n return imageBitmap;\n }\n self.onmessage = async (event) =>\n {\n try\n {\n const imageBitmap = await loadImageBitmap(event.data.data[0]);\n\n self.postMessage({\n data: imageBitmap,\n uuid: event.data.uuid,\n id: event.data.id,\n }, [imageBitmap]);\n }\n catch(e)\n {\n self.postMessage({\n error: e,\n uuid: event.data.uuid,\n id: event.data.id,\n });\n }\n };`\n};\nlet workerURL;\nclass WorkerManagerClass {\n constructor() {\n this._initialized = !1, this._createdWorkers = 0, this.workerPool = [], this.queue = [], this.resolveHash = {};\n }\n isImageBitmapSupported() {\n return this._isImageBitmapSupported !== void 0 ? this._isImageBitmapSupported : (this._isImageBitmapSupported = new Promise((resolve) => {\n const workerURL2 = URL.createObjectURL(new Blob(\n [checkImageBitmapCode.code],\n { type: \"application/javascript\" }\n )), worker = new Worker(workerURL2);\n worker.addEventListener(\"message\", (event) => {\n worker.terminate(), URL.revokeObjectURL(workerURL2), resolve(event.data);\n });\n }), this._isImageBitmapSupported);\n }\n loadImageBitmap(src) {\n return this._run(\"loadImageBitmap\", [src]);\n }\n async _initWorkers() {\n this._initialized || (this._initialized = !0);\n }\n getWorker() {\n MAX_WORKERS === void 0 && (MAX_WORKERS = navigator.hardwareConcurrency || 4);\n let worker = this.workerPool.pop();\n return !worker && this._createdWorkers < MAX_WORKERS && (workerURL || (workerURL = URL.createObjectURL(new Blob([workerCode.code], { type: \"application/javascript\" }))), this._createdWorkers++, worker = new Worker(workerURL), worker.addEventListener(\"message\", (event) => {\n this.complete(event.data), this.returnWorker(event.target), this.next();\n })), worker;\n }\n returnWorker(worker) {\n this.workerPool.push(worker);\n }\n complete(data) {\n data.error !== void 0 ? this.resolveHash[data.uuid].reject(data.error) : this.resolveHash[data.uuid].resolve(data.data), this.resolveHash[data.uuid] = null;\n }\n async _run(id, args) {\n await this._initWorkers();\n const promise = new Promise((resolve, reject) => {\n this.queue.push({ id, arguments: args, resolve, reject });\n });\n return this.next(), promise;\n }\n next() {\n if (!this.queue.length)\n return;\n const worker = this.getWorker();\n if (!worker)\n return;\n const toDo = this.queue.pop(), id = toDo.id;\n this.resolveHash[UUID] = { resolve: toDo.resolve, reject: toDo.reject }, worker.postMessage({\n data: toDo.arguments,\n uuid: UUID++,\n id\n });\n }\n}\nconst WorkerManager = new WorkerManagerClass();\n\n//# sourceMappingURL=WorkerManager.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/loader/parsers/WorkerManager.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/loader/parsers/index.mjs":
-/*!****************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/loader/parsers/index.mjs ***!
- \****************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ LoaderParserPriority: () => (/* reexport safe */ _LoaderParser_mjs__WEBPACK_IMPORTED_MODULE_0__.LoaderParserPriority),\n/* harmony export */ getFontFamilyName: () => (/* reexport safe */ _loadWebFont_mjs__WEBPACK_IMPORTED_MODULE_3__.getFontFamilyName),\n/* harmony export */ loadJson: () => (/* reexport safe */ _loadJson_mjs__WEBPACK_IMPORTED_MODULE_1__.loadJson),\n/* harmony export */ loadTxt: () => (/* reexport safe */ _loadTxt_mjs__WEBPACK_IMPORTED_MODULE_2__.loadTxt),\n/* harmony export */ loadWebFont: () => (/* reexport safe */ _loadWebFont_mjs__WEBPACK_IMPORTED_MODULE_3__.loadWebFont)\n/* harmony export */ });\n/* harmony import */ var _LoaderParser_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./LoaderParser.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/LoaderParser.mjs\");\n/* harmony import */ var _loadJson_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loadJson.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/loadJson.mjs\");\n/* harmony import */ var _loadTxt_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./loadTxt.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/loadTxt.mjs\");\n/* harmony import */ var _loadWebFont_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./loadWebFont.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/loadWebFont.mjs\");\n/* harmony import */ var _textures_index_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./textures/index.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/textures/index.mjs\");\n\n\n\n\n\n\n//# sourceMappingURL=index.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/loader/parsers/index.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/loader/parsers/loadJson.mjs":
-/*!*******************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/loader/parsers/loadJson.mjs ***!
- \*******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadJson: () => (/* binding */ loadJson)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n/* harmony import */ var _utils_checkDataUrl_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/checkDataUrl.mjs */ \"./node_modules/@pixi/assets/lib/utils/checkDataUrl.mjs\");\n/* harmony import */ var _utils_checkExtension_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/checkExtension.mjs */ \"./node_modules/@pixi/assets/lib/utils/checkExtension.mjs\");\n/* harmony import */ var _LoaderParser_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./LoaderParser.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/LoaderParser.mjs\");\n\n\n\n\nconst validJSONExtension = \".json\", validJSONMIME = \"application/json\", loadJson = {\n extension: {\n type: _pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.LoadParser,\n priority: _LoaderParser_mjs__WEBPACK_IMPORTED_MODULE_3__.LoaderParserPriority.Low\n },\n name: \"loadJson\",\n test(url) {\n return (0,_utils_checkDataUrl_mjs__WEBPACK_IMPORTED_MODULE_1__.checkDataUrl)(url, validJSONMIME) || (0,_utils_checkExtension_mjs__WEBPACK_IMPORTED_MODULE_2__.checkExtension)(url, validJSONExtension);\n },\n async load(url) {\n return await (await _pixi_core__WEBPACK_IMPORTED_MODULE_0__.settings.ADAPTER.fetch(url)).json();\n }\n};\n_pixi_core__WEBPACK_IMPORTED_MODULE_0__.extensions.add(loadJson);\n\n//# sourceMappingURL=loadJson.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/loader/parsers/loadJson.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/loader/parsers/loadTxt.mjs":
-/*!******************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/loader/parsers/loadTxt.mjs ***!
- \******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadTxt: () => (/* binding */ loadTxt)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n/* harmony import */ var _utils_checkDataUrl_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/checkDataUrl.mjs */ \"./node_modules/@pixi/assets/lib/utils/checkDataUrl.mjs\");\n/* harmony import */ var _utils_checkExtension_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/checkExtension.mjs */ \"./node_modules/@pixi/assets/lib/utils/checkExtension.mjs\");\n/* harmony import */ var _LoaderParser_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./LoaderParser.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/LoaderParser.mjs\");\n\n\n\n\nconst validTXTExtension = \".txt\", validTXTMIME = \"text/plain\", loadTxt = {\n name: \"loadTxt\",\n extension: {\n type: _pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.LoadParser,\n priority: _LoaderParser_mjs__WEBPACK_IMPORTED_MODULE_3__.LoaderParserPriority.Low\n },\n test(url) {\n return (0,_utils_checkDataUrl_mjs__WEBPACK_IMPORTED_MODULE_1__.checkDataUrl)(url, validTXTMIME) || (0,_utils_checkExtension_mjs__WEBPACK_IMPORTED_MODULE_2__.checkExtension)(url, validTXTExtension);\n },\n async load(url) {\n return await (await _pixi_core__WEBPACK_IMPORTED_MODULE_0__.settings.ADAPTER.fetch(url)).text();\n }\n};\n_pixi_core__WEBPACK_IMPORTED_MODULE_0__.extensions.add(loadTxt);\n\n//# sourceMappingURL=loadTxt.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/loader/parsers/loadTxt.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/loader/parsers/loadWebFont.mjs":
-/*!**********************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/loader/parsers/loadWebFont.mjs ***!
- \**********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getFontFamilyName: () => (/* binding */ getFontFamilyName),\n/* harmony export */ loadWebFont: () => (/* binding */ loadWebFont)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n/* harmony import */ var _utils_checkDataUrl_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/checkDataUrl.mjs */ \"./node_modules/@pixi/assets/lib/utils/checkDataUrl.mjs\");\n/* harmony import */ var _utils_checkExtension_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/checkExtension.mjs */ \"./node_modules/@pixi/assets/lib/utils/checkExtension.mjs\");\n/* harmony import */ var _LoaderParser_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./LoaderParser.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/LoaderParser.mjs\");\n\n\n\n\nconst validWeights = [\n \"normal\",\n \"bold\",\n \"100\",\n \"200\",\n \"300\",\n \"400\",\n \"500\",\n \"600\",\n \"700\",\n \"800\",\n \"900\"\n], validFontExtensions = [\".ttf\", \".otf\", \".woff\", \".woff2\"], validFontMIMEs = [\n \"font/ttf\",\n \"font/otf\",\n \"font/woff\",\n \"font/woff2\"\n], CSS_IDENT_TOKEN_REGEX = /^(--|-?[A-Z_])[0-9A-Z_-]*$/i;\nfunction getFontFamilyName(url) {\n const ext = _pixi_core__WEBPACK_IMPORTED_MODULE_0__.utils.path.extname(url), nameTokens = _pixi_core__WEBPACK_IMPORTED_MODULE_0__.utils.path.basename(url, ext).replace(/(-|_)/g, \" \").toLowerCase().split(\" \").map((word) => word.charAt(0).toUpperCase() + word.slice(1));\n let valid = nameTokens.length > 0;\n for (const token of nameTokens)\n if (!token.match(CSS_IDENT_TOKEN_REGEX)) {\n valid = !1;\n break;\n }\n let fontFamilyName = nameTokens.join(\" \");\n return valid || (fontFamilyName = `\"${fontFamilyName.replace(/[\\\\\"]/g, \"\\\\$&\")}\"`), fontFamilyName;\n}\nconst validURICharactersRegex = /^[0-9A-Za-z%:/?#\\[\\]@!\\$&'()\\*\\+,;=\\-._~]*$/;\nfunction encodeURIWhenNeeded(uri) {\n return validURICharactersRegex.test(uri) ? uri : encodeURI(uri);\n}\nconst loadWebFont = {\n extension: {\n type: _pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.LoadParser,\n priority: _LoaderParser_mjs__WEBPACK_IMPORTED_MODULE_3__.LoaderParserPriority.Low\n },\n name: \"loadWebFont\",\n test(url) {\n return (0,_utils_checkDataUrl_mjs__WEBPACK_IMPORTED_MODULE_1__.checkDataUrl)(url, validFontMIMEs) || (0,_utils_checkExtension_mjs__WEBPACK_IMPORTED_MODULE_2__.checkExtension)(url, validFontExtensions);\n },\n async load(url, options) {\n const fonts = _pixi_core__WEBPACK_IMPORTED_MODULE_0__.settings.ADAPTER.getFontFaceSet();\n if (fonts) {\n const fontFaces = [], name = options.data?.family ?? getFontFamilyName(url), weights = options.data?.weights?.filter((weight) => validWeights.includes(weight)) ?? [\"normal\"], data = options.data ?? {};\n for (let i = 0; i < weights.length; i++) {\n const weight = weights[i], font = new FontFace(name, `url(${encodeURIWhenNeeded(url)})`, {\n ...data,\n weight\n });\n await font.load(), fonts.add(font), fontFaces.push(font);\n }\n return fontFaces.length === 1 ? fontFaces[0] : fontFaces;\n }\n return console.warn(\"[loadWebFont] FontFace API is not supported. Skipping loading font\"), null;\n },\n unload(font) {\n (Array.isArray(font) ? font : [font]).forEach((t) => _pixi_core__WEBPACK_IMPORTED_MODULE_0__.settings.ADAPTER.getFontFaceSet().delete(t));\n }\n};\n_pixi_core__WEBPACK_IMPORTED_MODULE_0__.extensions.add(loadWebFont);\n\n//# sourceMappingURL=loadWebFont.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/loader/parsers/loadWebFont.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/loader/parsers/textures/index.mjs":
-/*!*************************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/loader/parsers/textures/index.mjs ***!
- \*************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadImageBitmap: () => (/* reexport safe */ _loadTextures_mjs__WEBPACK_IMPORTED_MODULE_1__.loadImageBitmap),\n/* harmony export */ loadSVG: () => (/* reexport safe */ _loadSVG_mjs__WEBPACK_IMPORTED_MODULE_0__.loadSVG),\n/* harmony export */ loadTextures: () => (/* reexport safe */ _loadTextures_mjs__WEBPACK_IMPORTED_MODULE_1__.loadTextures),\n/* harmony export */ loadVideo: () => (/* reexport safe */ _loadVideo_mjs__WEBPACK_IMPORTED_MODULE_2__.loadVideo)\n/* harmony export */ });\n/* harmony import */ var _loadSVG_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loadSVG.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/textures/loadSVG.mjs\");\n/* harmony import */ var _loadTextures_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loadTextures.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/textures/loadTextures.mjs\");\n/* harmony import */ var _loadVideo_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./loadVideo.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/textures/loadVideo.mjs\");\n/* harmony import */ var _utils_index_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/index.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/textures/utils/index.mjs\");\n\n\n\n\n\n//# sourceMappingURL=index.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/loader/parsers/textures/index.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/loader/parsers/textures/loadSVG.mjs":
-/*!***************************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/loader/parsers/textures/loadSVG.mjs ***!
- \***************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadSVG: () => (/* binding */ loadSVG)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n/* harmony import */ var _utils_checkDataUrl_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../utils/checkDataUrl.mjs */ \"./node_modules/@pixi/assets/lib/utils/checkDataUrl.mjs\");\n/* harmony import */ var _utils_checkExtension_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../utils/checkExtension.mjs */ \"./node_modules/@pixi/assets/lib/utils/checkExtension.mjs\");\n/* harmony import */ var _LoaderParser_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../LoaderParser.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/LoaderParser.mjs\");\n/* harmony import */ var _loadTextures_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./loadTextures.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/textures/loadTextures.mjs\");\n/* harmony import */ var _utils_createTexture_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/createTexture.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/textures/utils/createTexture.mjs\");\n\n\n\n\n\n\nconst validSVGExtension = \".svg\", validSVGMIME = \"image/svg+xml\", loadSVG = {\n extension: {\n type: _pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.LoadParser,\n priority: _LoaderParser_mjs__WEBPACK_IMPORTED_MODULE_3__.LoaderParserPriority.High\n },\n name: \"loadSVG\",\n test(url) {\n return (0,_utils_checkDataUrl_mjs__WEBPACK_IMPORTED_MODULE_1__.checkDataUrl)(url, validSVGMIME) || (0,_utils_checkExtension_mjs__WEBPACK_IMPORTED_MODULE_2__.checkExtension)(url, validSVGExtension);\n },\n async testParse(data) {\n return _pixi_core__WEBPACK_IMPORTED_MODULE_0__.SVGResource.test(data);\n },\n async parse(asset, data, loader) {\n const src = new _pixi_core__WEBPACK_IMPORTED_MODULE_0__.SVGResource(asset, data?.data?.resourceOptions);\n await src.load();\n const base = new _pixi_core__WEBPACK_IMPORTED_MODULE_0__.BaseTexture(src, {\n resolution: _pixi_core__WEBPACK_IMPORTED_MODULE_0__.utils.getResolutionOfUrl(asset),\n ...data?.data\n });\n return base.resource.src = data.src, (0,_utils_createTexture_mjs__WEBPACK_IMPORTED_MODULE_5__.createTexture)(base, loader, data.src);\n },\n async load(url, _options) {\n return (await _pixi_core__WEBPACK_IMPORTED_MODULE_0__.settings.ADAPTER.fetch(url)).text();\n },\n unload: _loadTextures_mjs__WEBPACK_IMPORTED_MODULE_4__.loadTextures.unload\n};\n_pixi_core__WEBPACK_IMPORTED_MODULE_0__.extensions.add(loadSVG);\n\n//# sourceMappingURL=loadSVG.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/loader/parsers/textures/loadSVG.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/loader/parsers/textures/loadTextures.mjs":
-/*!********************************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/loader/parsers/textures/loadTextures.mjs ***!
- \********************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadImageBitmap: () => (/* binding */ loadImageBitmap),\n/* harmony export */ loadTextures: () => (/* binding */ loadTextures)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n/* harmony import */ var _utils_checkDataUrl_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../utils/checkDataUrl.mjs */ \"./node_modules/@pixi/assets/lib/utils/checkDataUrl.mjs\");\n/* harmony import */ var _utils_checkExtension_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../utils/checkExtension.mjs */ \"./node_modules/@pixi/assets/lib/utils/checkExtension.mjs\");\n/* harmony import */ var _LoaderParser_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../LoaderParser.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/LoaderParser.mjs\");\n/* harmony import */ var _WorkerManager_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../WorkerManager.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/WorkerManager.mjs\");\n/* harmony import */ var _utils_createTexture_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/createTexture.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/textures/utils/createTexture.mjs\");\n\n\n\n\n\n\nconst validImageExtensions = [\".jpeg\", \".jpg\", \".png\", \".webp\", \".avif\"], validImageMIMEs = [\n \"image/jpeg\",\n \"image/png\",\n \"image/webp\",\n \"image/avif\"\n];\nasync function loadImageBitmap(url) {\n const response = await _pixi_core__WEBPACK_IMPORTED_MODULE_0__.settings.ADAPTER.fetch(url);\n if (!response.ok)\n throw new Error(`[loadImageBitmap] Failed to fetch ${url}: ${response.status} ${response.statusText}`);\n const imageBlob = await response.blob();\n return await createImageBitmap(imageBlob);\n}\nconst loadTextures = {\n name: \"loadTextures\",\n extension: {\n type: _pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.LoadParser,\n priority: _LoaderParser_mjs__WEBPACK_IMPORTED_MODULE_3__.LoaderParserPriority.High\n },\n config: {\n preferWorkers: !0,\n preferCreateImageBitmap: !0,\n crossOrigin: \"anonymous\"\n },\n test(url) {\n return (0,_utils_checkDataUrl_mjs__WEBPACK_IMPORTED_MODULE_1__.checkDataUrl)(url, validImageMIMEs) || (0,_utils_checkExtension_mjs__WEBPACK_IMPORTED_MODULE_2__.checkExtension)(url, validImageExtensions);\n },\n async load(url, asset, loader) {\n const useImageBitmap = globalThis.createImageBitmap && this.config.preferCreateImageBitmap;\n let src;\n useImageBitmap ? this.config.preferWorkers && await _WorkerManager_mjs__WEBPACK_IMPORTED_MODULE_4__.WorkerManager.isImageBitmapSupported() ? src = await _WorkerManager_mjs__WEBPACK_IMPORTED_MODULE_4__.WorkerManager.loadImageBitmap(url) : src = await loadImageBitmap(url) : src = await new Promise((resolve, reject) => {\n const src2 = new Image();\n src2.crossOrigin = this.config.crossOrigin, src2.src = url, src2.complete ? resolve(src2) : (src2.onload = () => resolve(src2), src2.onerror = (e) => reject(e));\n });\n const options = { ...asset.data };\n options.resolution ?? (options.resolution = _pixi_core__WEBPACK_IMPORTED_MODULE_0__.utils.getResolutionOfUrl(url)), useImageBitmap && options.resourceOptions?.ownsImageBitmap === void 0 && (options.resourceOptions = { ...options.resourceOptions }, options.resourceOptions.ownsImageBitmap = !0);\n const base = new _pixi_core__WEBPACK_IMPORTED_MODULE_0__.BaseTexture(src, options);\n return base.resource.src = url, (0,_utils_createTexture_mjs__WEBPACK_IMPORTED_MODULE_5__.createTexture)(base, loader, url);\n },\n unload(texture) {\n texture.destroy(!0);\n }\n};\n_pixi_core__WEBPACK_IMPORTED_MODULE_0__.extensions.add(loadTextures);\n\n//# sourceMappingURL=loadTextures.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/loader/parsers/textures/loadTextures.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/loader/parsers/textures/loadVideo.mjs":
-/*!*****************************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/loader/parsers/textures/loadVideo.mjs ***!
- \*****************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadVideo: () => (/* binding */ loadVideo)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n/* harmony import */ var _utils_checkDataUrl_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../utils/checkDataUrl.mjs */ \"./node_modules/@pixi/assets/lib/utils/checkDataUrl.mjs\");\n/* harmony import */ var _utils_checkExtension_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../utils/checkExtension.mjs */ \"./node_modules/@pixi/assets/lib/utils/checkExtension.mjs\");\n/* harmony import */ var _LoaderParser_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../LoaderParser.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/LoaderParser.mjs\");\n/* harmony import */ var _utils_createTexture_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/createTexture.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/textures/utils/createTexture.mjs\");\n\n\n\n\n\nconst validVideoExtensions = [\".mp4\", \".m4v\", \".webm\", \".ogv\"], validVideoMIMEs = [\n \"video/mp4\",\n \"video/webm\",\n \"video/ogg\"\n], loadVideo = {\n name: \"loadVideo\",\n extension: {\n type: _pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.LoadParser,\n priority: _LoaderParser_mjs__WEBPACK_IMPORTED_MODULE_3__.LoaderParserPriority.High\n },\n config: {\n defaultAutoPlay: !0\n },\n test(url) {\n return (0,_utils_checkDataUrl_mjs__WEBPACK_IMPORTED_MODULE_1__.checkDataUrl)(url, validVideoMIMEs) || (0,_utils_checkExtension_mjs__WEBPACK_IMPORTED_MODULE_2__.checkExtension)(url, validVideoExtensions);\n },\n async load(url, loadAsset, loader) {\n let texture;\n const blob = await (await _pixi_core__WEBPACK_IMPORTED_MODULE_0__.settings.ADAPTER.fetch(url)).blob(), blobURL = URL.createObjectURL(blob);\n try {\n const options = {\n autoPlay: this.config.defaultAutoPlay,\n ...loadAsset?.data?.resourceOptions\n }, src = new _pixi_core__WEBPACK_IMPORTED_MODULE_0__.VideoResource(blobURL, options);\n await src.load();\n const base = new _pixi_core__WEBPACK_IMPORTED_MODULE_0__.BaseTexture(src, {\n alphaMode: await _pixi_core__WEBPACK_IMPORTED_MODULE_0__.utils.detectVideoAlphaMode(),\n resolution: _pixi_core__WEBPACK_IMPORTED_MODULE_0__.utils.getResolutionOfUrl(url),\n ...loadAsset?.data\n });\n base.resource.src = url, texture = (0,_utils_createTexture_mjs__WEBPACK_IMPORTED_MODULE_4__.createTexture)(base, loader, url), texture.baseTexture.once(\"destroyed\", () => {\n URL.revokeObjectURL(blobURL);\n });\n } catch (e) {\n throw URL.revokeObjectURL(blobURL), e;\n }\n return texture;\n },\n unload(texture) {\n texture.destroy(!0);\n }\n};\n_pixi_core__WEBPACK_IMPORTED_MODULE_0__.extensions.add(loadVideo);\n\n//# sourceMappingURL=loadVideo.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/loader/parsers/textures/loadVideo.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/loader/parsers/textures/utils/createTexture.mjs":
-/*!***************************************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/loader/parsers/textures/utils/createTexture.mjs ***!
- \***************************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createTexture: () => (/* binding */ createTexture)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n/* harmony import */ var _cache_Cache_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../cache/Cache.mjs */ \"./node_modules/@pixi/assets/lib/cache/Cache.mjs\");\n\n\nfunction createTexture(base, loader, url) {\n base.resource.internal = !0;\n const texture = new _pixi_core__WEBPACK_IMPORTED_MODULE_0__.Texture(base), unload = () => {\n delete loader.promiseCache[url], _cache_Cache_mjs__WEBPACK_IMPORTED_MODULE_1__.Cache.has(url) && _cache_Cache_mjs__WEBPACK_IMPORTED_MODULE_1__.Cache.remove(url);\n };\n return texture.baseTexture.once(\"destroyed\", () => {\n url in loader.promiseCache && (console.warn(\"[Assets] A BaseTexture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the BaseTexture.\"), unload());\n }), texture.once(\"destroyed\", () => {\n base.destroyed || (console.warn(\"[Assets] A Texture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the Texture.\"), unload());\n }), texture;\n}\n\n//# sourceMappingURL=createTexture.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/loader/parsers/textures/utils/createTexture.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/loader/parsers/textures/utils/index.mjs":
-/*!*******************************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/loader/parsers/textures/utils/index.mjs ***!
- \*******************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createTexture: () => (/* reexport safe */ _createTexture_mjs__WEBPACK_IMPORTED_MODULE_0__.createTexture)\n/* harmony export */ });\n/* harmony import */ var _createTexture_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createTexture.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/textures/utils/createTexture.mjs\");\n\n\n//# sourceMappingURL=index.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/loader/parsers/textures/utils/index.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/resolver/Resolver.mjs":
-/*!*************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/resolver/Resolver.mjs ***!
- \*************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Resolver: () => (/* binding */ Resolver)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n/* harmony import */ var _utils_convertToList_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/convertToList.mjs */ \"./node_modules/@pixi/assets/lib/utils/convertToList.mjs\");\n/* harmony import */ var _utils_createStringVariations_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/createStringVariations.mjs */ \"./node_modules/@pixi/assets/lib/utils/createStringVariations.mjs\");\n/* harmony import */ var _utils_isSingleItem_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/isSingleItem.mjs */ \"./node_modules/@pixi/assets/lib/utils/isSingleItem.mjs\");\n\n\n\n\nclass Resolver {\n constructor() {\n this._defaultBundleIdentifierOptions = {\n connector: \"-\",\n createBundleAssetId: (bundleId, assetId) => `${bundleId}${this._bundleIdConnector}${assetId}`,\n extractAssetIdFromBundle: (bundleId, assetBundleId) => assetBundleId.replace(`${bundleId}${this._bundleIdConnector}`, \"\")\n }, this._bundleIdConnector = this._defaultBundleIdentifierOptions.connector, this._createBundleAssetId = this._defaultBundleIdentifierOptions.createBundleAssetId, this._extractAssetIdFromBundle = this._defaultBundleIdentifierOptions.extractAssetIdFromBundle, this._assetMap = {}, this._preferredOrder = [], this._parsers = [], this._resolverHash = {}, this._bundles = {};\n }\n /**\n * Override how the resolver deals with generating bundle ids.\n * must be called before any bundles are added\n * @param bundleIdentifier - the bundle identifier options\n */\n setBundleIdentifier(bundleIdentifier) {\n if (this._bundleIdConnector = bundleIdentifier.connector ?? this._bundleIdConnector, this._createBundleAssetId = bundleIdentifier.createBundleAssetId ?? this._createBundleAssetId, this._extractAssetIdFromBundle = bundleIdentifier.extractAssetIdFromBundle ?? this._extractAssetIdFromBundle, this._extractAssetIdFromBundle(\"foo\", this._createBundleAssetId(\"foo\", \"bar\")) !== \"bar\")\n throw new Error(\"[Resolver] GenerateBundleAssetId are not working correctly\");\n }\n /**\n * Let the resolver know which assets you prefer to use when resolving assets.\n * Multiple prefer user defined rules can be added.\n * @example\n * resolver.prefer({\n * // first look for something with the correct format, and then then correct resolution\n * priority: ['format', 'resolution'],\n * params:{\n * format:'webp', // prefer webp images\n * resolution: 2, // prefer a resolution of 2\n * }\n * })\n * resolver.add('foo', ['bar@2x.webp', 'bar@2x.png', 'bar.webp', 'bar.png']);\n * resolver.resolveUrl('foo') // => 'bar@2x.webp'\n * @param preferOrders - the prefer options\n */\n prefer(...preferOrders) {\n preferOrders.forEach((prefer) => {\n this._preferredOrder.push(prefer), prefer.priority || (prefer.priority = Object.keys(prefer.params));\n }), this._resolverHash = {};\n }\n /**\n * Set the base path to prepend to all urls when resolving\n * @example\n * resolver.basePath = 'https://home.com/';\n * resolver.add('foo', 'bar.ong');\n * resolver.resolveUrl('foo', 'bar.png'); // => 'https://home.com/bar.png'\n * @param basePath - the base path to use\n */\n set basePath(basePath) {\n this._basePath = basePath;\n }\n get basePath() {\n return this._basePath;\n }\n /**\n * Set the root path for root-relative URLs. By default the `basePath`'s root is used. If no `basePath` is set, then the\n * default value for browsers is `window.location.origin`\n * @example\n * // Application hosted on https://home.com/some-path/index.html\n * resolver.basePath = 'https://home.com/some-path/';\n * resolver.rootPath = 'https://home.com/';\n * resolver.add('foo', '/bar.png');\n * resolver.resolveUrl('foo', '/bar.png'); // => 'https://home.com/bar.png'\n * @param rootPath - the root path to use\n */\n set rootPath(rootPath) {\n this._rootPath = rootPath;\n }\n get rootPath() {\n return this._rootPath;\n }\n /**\n * All the active URL parsers that help the parser to extract information and create\n * an asset object-based on parsing the URL itself.\n *\n * Can be added using the extensions API\n * @example\n * resolver.add('foo', [\n * {\n * resolution: 2,\n * format: 'png',\n * src: 'image@2x.png',\n * },\n * {\n * resolution:1,\n * format:'png',\n * src: 'image.png',\n * },\n * ]);\n *\n * // With a url parser the information such as resolution and file format could extracted from the url itself:\n * extensions.add({\n * extension: ExtensionType.ResolveParser,\n * test: loadTextures.test, // test if url ends in an image\n * parse: (value: string) =>\n * ({\n * resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? '1'),\n * format: value.split('.').pop(),\n * src: value,\n * }),\n * });\n *\n * // Now resolution and format can be extracted from the url\n * resolver.add('foo', [\n * 'image@2x.png',\n * 'image.png',\n * ]);\n */\n get parsers() {\n return this._parsers;\n }\n /** Used for testing, this resets the resolver to its initial state */\n reset() {\n this.setBundleIdentifier(this._defaultBundleIdentifierOptions), this._assetMap = {}, this._preferredOrder = [], this._resolverHash = {}, this._rootPath = null, this._basePath = null, this._manifest = null, this._bundles = {}, this._defaultSearchParams = null;\n }\n /**\n * Sets the default URL search parameters for the URL resolver. The urls can be specified as a string or an object.\n * @param searchParams - the default url parameters to append when resolving urls\n */\n setDefaultSearchParams(searchParams) {\n if (typeof searchParams == \"string\")\n this._defaultSearchParams = searchParams;\n else {\n const queryValues = searchParams;\n this._defaultSearchParams = Object.keys(queryValues).map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(queryValues[key])}`).join(\"&\");\n }\n }\n /**\n * Returns the aliases for a given asset\n * @param asset - the asset to get the aliases for\n */\n getAlias(asset) {\n const { alias, name, src, srcs } = asset;\n return (0,_utils_convertToList_mjs__WEBPACK_IMPORTED_MODULE_1__.convertToList)(\n alias || name || src || srcs,\n (value) => typeof value == \"string\" ? value : Array.isArray(value) ? value.map((v) => v?.src ?? v?.srcs ?? v) : value?.src || value?.srcs ? value.src ?? value.srcs : value,\n !0\n );\n }\n /**\n * Add a manifest to the asset resolver. This is a nice way to add all the asset information in one go.\n * generally a manifest would be built using a tool.\n * @param manifest - the manifest to add to the resolver\n */\n addManifest(manifest) {\n this._manifest && console.warn(\"[Resolver] Manifest already exists, this will be overwritten\"), this._manifest = manifest, manifest.bundles.forEach((bundle) => {\n this.addBundle(bundle.name, bundle.assets);\n });\n }\n /**\n * This adds a bundle of assets in one go so that you can resolve them as a group.\n * For example you could add a bundle for each screen in you pixi app\n * @example\n * resolver.addBundle('animals', {\n * bunny: 'bunny.png',\n * chicken: 'chicken.png',\n * thumper: 'thumper.png',\n * });\n *\n * const resolvedAssets = await resolver.resolveBundle('animals');\n * @param bundleId - The id of the bundle to add\n * @param assets - A record of the asset or assets that will be chosen from when loading via the specified key\n */\n addBundle(bundleId, assets) {\n const assetNames = [];\n Array.isArray(assets) ? assets.forEach((asset) => {\n const srcs = asset.src ?? asset.srcs, aliases = asset.alias ?? asset.name;\n let ids;\n if (typeof aliases == \"string\") {\n const bundleAssetId = this._createBundleAssetId(bundleId, aliases);\n assetNames.push(bundleAssetId), ids = [aliases, bundleAssetId];\n } else {\n const bundleIds = aliases.map((name) => this._createBundleAssetId(bundleId, name));\n assetNames.push(...bundleIds), ids = [...aliases, ...bundleIds];\n }\n this.add({\n ...asset,\n alias: ids,\n src: srcs\n });\n }) : Object.keys(assets).forEach((key) => {\n const aliases = [key, this._createBundleAssetId(bundleId, key)];\n if (typeof assets[key] == \"string\")\n this.add({\n alias: aliases,\n src: assets[key]\n });\n else if (Array.isArray(assets[key]))\n this.add({\n alias: aliases,\n src: assets[key]\n });\n else {\n const asset = assets[key], assetSrc = asset.src ?? asset.srcs;\n this.add({\n ...asset,\n alias: aliases,\n src: Array.isArray(assetSrc) ? assetSrc : [assetSrc]\n });\n }\n assetNames.push(...aliases);\n }), this._bundles[bundleId] = assetNames;\n }\n add(aliases, srcs, data, format, loadParser) {\n const assets = [];\n typeof aliases == \"string\" || Array.isArray(aliases) && typeof aliases[0] == \"string\" ? (_pixi_core__WEBPACK_IMPORTED_MODULE_0__.utils.deprecation(\"7.2.0\", `Assets.add now uses an object instead of individual parameters.\nPlease use Assets.add({ alias, src, data, format, loadParser }) instead.`), assets.push({ alias: aliases, src: srcs, data, format, loadParser })) : Array.isArray(aliases) ? assets.push(...aliases) : assets.push(aliases);\n let keyCheck;\n keyCheck = (key) => {\n this.hasKey(key) && console.warn(`[Resolver] already has key: ${key} overwriting`);\n }, (0,_utils_convertToList_mjs__WEBPACK_IMPORTED_MODULE_1__.convertToList)(assets).forEach((asset) => {\n const { src, srcs: srcs2 } = asset;\n let { data: data2, format: format2, loadParser: loadParser2 } = asset;\n const srcsToUse = (0,_utils_convertToList_mjs__WEBPACK_IMPORTED_MODULE_1__.convertToList)(src || srcs2).map((src2) => typeof src2 == \"string\" ? (0,_utils_createStringVariations_mjs__WEBPACK_IMPORTED_MODULE_2__.createStringVariations)(src2) : Array.isArray(src2) ? src2 : [src2]), aliasesToUse = this.getAlias(asset);\n Array.isArray(aliasesToUse) ? aliasesToUse.forEach(keyCheck) : keyCheck(aliasesToUse);\n const resolvedAssets = [];\n srcsToUse.forEach((srcs3) => {\n srcs3.forEach((src2) => {\n let formattedAsset = {};\n if (typeof src2 != \"object\") {\n formattedAsset.src = src2;\n for (let i = 0; i < this._parsers.length; i++) {\n const parser = this._parsers[i];\n if (parser.test(src2)) {\n formattedAsset = parser.parse(src2);\n break;\n }\n }\n } else\n data2 = src2.data ?? data2, format2 = src2.format ?? format2, loadParser2 = src2.loadParser ?? loadParser2, formattedAsset = {\n ...formattedAsset,\n ...src2\n };\n if (!aliasesToUse)\n throw new Error(`[Resolver] alias is undefined for this asset: ${formattedAsset.src}`);\n formattedAsset = this.buildResolvedAsset(formattedAsset, {\n aliases: aliasesToUse,\n data: data2,\n format: format2,\n loadParser: loadParser2\n }), resolvedAssets.push(formattedAsset);\n });\n }), aliasesToUse.forEach((alias) => {\n this._assetMap[alias] = resolvedAssets;\n });\n });\n }\n // TODO: this needs an overload like load did in Assets\n /**\n * If the resolver has had a manifest set via setManifest, this will return the assets urls for\n * a given bundleId or bundleIds.\n * @example\n * // Manifest Example\n * const manifest = {\n * bundles: [\n * {\n * name: 'load-screen',\n * assets: [\n * {\n * alias: 'background',\n * src: 'sunset.png',\n * },\n * {\n * alias: 'bar',\n * src: 'load-bar.{png,webp}',\n * },\n * ],\n * },\n * {\n * name: 'game-screen',\n * assets: [\n * {\n * alias: 'character',\n * src: 'robot.png',\n * },\n * {\n * alias: 'enemy',\n * src: 'bad-guy.png',\n * },\n * ],\n * },\n * ]\n * };\n *\n * resolver.setManifest(manifest);\n * const resolved = resolver.resolveBundle('load-screen');\n * @param bundleIds - The bundle ids to resolve\n * @returns All the bundles assets or a hash of assets for each bundle specified\n */\n resolveBundle(bundleIds) {\n const singleAsset = (0,_utils_isSingleItem_mjs__WEBPACK_IMPORTED_MODULE_3__.isSingleItem)(bundleIds);\n bundleIds = (0,_utils_convertToList_mjs__WEBPACK_IMPORTED_MODULE_1__.convertToList)(bundleIds);\n const out = {};\n return bundleIds.forEach((bundleId) => {\n const assetNames = this._bundles[bundleId];\n if (assetNames) {\n const results = this.resolve(assetNames), assets = {};\n for (const key in results) {\n const asset = results[key];\n assets[this._extractAssetIdFromBundle(bundleId, key)] = asset;\n }\n out[bundleId] = assets;\n }\n }), singleAsset ? out[bundleIds[0]] : out;\n }\n /**\n * Does exactly what resolve does, but returns just the URL rather than the whole asset object\n * @param key - The key or keys to resolve\n * @returns - The URLs associated with the key(s)\n */\n resolveUrl(key) {\n const result = this.resolve(key);\n if (typeof key != \"string\") {\n const out = {};\n for (const i in result)\n out[i] = result[i].src;\n return out;\n }\n return result.src;\n }\n resolve(keys) {\n const singleAsset = (0,_utils_isSingleItem_mjs__WEBPACK_IMPORTED_MODULE_3__.isSingleItem)(keys);\n keys = (0,_utils_convertToList_mjs__WEBPACK_IMPORTED_MODULE_1__.convertToList)(keys);\n const result = {};\n return keys.forEach((key) => {\n if (!this._resolverHash[key])\n if (this._assetMap[key]) {\n let assets = this._assetMap[key];\n const bestAsset = assets[0], preferredOrder = this._getPreferredOrder(assets);\n preferredOrder?.priority.forEach((priorityKey) => {\n preferredOrder.params[priorityKey].forEach((value) => {\n const filteredAssets = assets.filter((asset) => asset[priorityKey] ? asset[priorityKey] === value : !1);\n filteredAssets.length && (assets = filteredAssets);\n });\n }), this._resolverHash[key] = assets[0] ?? bestAsset;\n } else\n this._resolverHash[key] = this.buildResolvedAsset({\n alias: [key],\n src: key\n }, {});\n result[key] = this._resolverHash[key];\n }), singleAsset ? result[keys[0]] : result;\n }\n /**\n * Checks if an asset with a given key exists in the resolver\n * @param key - The key of the asset\n */\n hasKey(key) {\n return !!this._assetMap[key];\n }\n /**\n * Checks if a bundle with the given key exists in the resolver\n * @param key - The key of the bundle\n */\n hasBundle(key) {\n return !!this._bundles[key];\n }\n /**\n * Internal function for figuring out what prefer criteria an asset should use.\n * @param assets\n */\n _getPreferredOrder(assets) {\n for (let i = 0; i < assets.length; i++) {\n const asset = assets[0], preferred = this._preferredOrder.find((preference) => preference.params.format.includes(asset.format));\n if (preferred)\n return preferred;\n }\n return this._preferredOrder[0];\n }\n /**\n * Appends the default url parameters to the url\n * @param url - The url to append the default parameters to\n * @returns - The url with the default parameters appended\n */\n _appendDefaultSearchParams(url) {\n if (!this._defaultSearchParams)\n return url;\n const paramConnector = /\\?/.test(url) ? \"&\" : \"?\";\n return `${url}${paramConnector}${this._defaultSearchParams}`;\n }\n buildResolvedAsset(formattedAsset, data) {\n const { aliases, data: assetData, loadParser, format } = data;\n return (this._basePath || this._rootPath) && (formattedAsset.src = _pixi_core__WEBPACK_IMPORTED_MODULE_0__.utils.path.toAbsolute(formattedAsset.src, this._basePath, this._rootPath)), formattedAsset.alias = aliases ?? formattedAsset.alias ?? [formattedAsset.src], formattedAsset.src = this._appendDefaultSearchParams(formattedAsset.src), formattedAsset.data = { ...assetData || {}, ...formattedAsset.data }, formattedAsset.loadParser = loadParser ?? formattedAsset.loadParser, formattedAsset.format = format ?? _pixi_core__WEBPACK_IMPORTED_MODULE_0__.utils.path.extname(formattedAsset.src).slice(1), formattedAsset.srcs = formattedAsset.src, formattedAsset.name = formattedAsset.alias, formattedAsset;\n }\n}\n\n//# sourceMappingURL=Resolver.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/resolver/Resolver.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/resolver/index.mjs":
-/*!**********************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/resolver/index.mjs ***!
- \**********************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _parsers_index_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./parsers/index.mjs */ \"./node_modules/@pixi/assets/lib/resolver/parsers/index.mjs\");\n/* harmony import */ var _types_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./types.mjs */ \"./node_modules/@pixi/assets/lib/resolver/types.mjs\");\n\n\n//# sourceMappingURL=index.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/resolver/index.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/resolver/parsers/index.mjs":
-/*!******************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/resolver/parsers/index.mjs ***!
- \******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ resolveTextureUrl: () => (/* reexport safe */ _resolveTextureUrl_mjs__WEBPACK_IMPORTED_MODULE_0__.resolveTextureUrl)\n/* harmony export */ });\n/* harmony import */ var _resolveTextureUrl_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./resolveTextureUrl.mjs */ \"./node_modules/@pixi/assets/lib/resolver/parsers/resolveTextureUrl.mjs\");\n\n\n//# sourceMappingURL=index.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/resolver/parsers/index.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/resolver/parsers/resolveTextureUrl.mjs":
-/*!******************************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/resolver/parsers/resolveTextureUrl.mjs ***!
- \******************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ resolveTextureUrl: () => (/* binding */ resolveTextureUrl)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n/* harmony import */ var _loader_index_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../loader/index.mjs */ \"./node_modules/@pixi/assets/lib/loader/index.mjs\");\n/* harmony import */ var _loader_parsers_textures_loadTextures_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../loader/parsers/textures/loadTextures.mjs */ \"./node_modules/@pixi/assets/lib/loader/parsers/textures/loadTextures.mjs\");\n\n\n\nconst resolveTextureUrl = {\n extension: _pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.ResolveParser,\n test: _loader_parsers_textures_loadTextures_mjs__WEBPACK_IMPORTED_MODULE_2__.loadTextures.test,\n parse: (value) => ({\n resolution: parseFloat(_pixi_core__WEBPACK_IMPORTED_MODULE_0__.settings.RETINA_PREFIX.exec(value)?.[1] ?? \"1\"),\n format: _pixi_core__WEBPACK_IMPORTED_MODULE_0__.utils.path.extname(value).slice(1),\n src: value\n })\n};\n_pixi_core__WEBPACK_IMPORTED_MODULE_0__.extensions.add(resolveTextureUrl);\n\n//# sourceMappingURL=resolveTextureUrl.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/resolver/parsers/resolveTextureUrl.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/resolver/types.mjs":
-/*!**********************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/resolver/types.mjs ***!
- \**********************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n\n//# sourceMappingURL=types.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/resolver/types.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/types.mjs":
-/*!*************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/types.mjs ***!
- \*************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n\n//# sourceMappingURL=types.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/types.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/utils/checkDataUrl.mjs":
-/*!**************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/utils/checkDataUrl.mjs ***!
- \**************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ checkDataUrl: () => (/* binding */ checkDataUrl)\n/* harmony export */ });\nfunction checkDataUrl(url, mimes) {\n if (Array.isArray(mimes)) {\n for (const mime of mimes)\n if (url.startsWith(`data:${mime}`))\n return !0;\n return !1;\n }\n return url.startsWith(`data:${mimes}`);\n}\n\n//# sourceMappingURL=checkDataUrl.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/utils/checkDataUrl.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/utils/checkExtension.mjs":
-/*!****************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/utils/checkExtension.mjs ***!
- \****************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ checkExtension: () => (/* binding */ checkExtension)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n\nfunction checkExtension(url, extension) {\n const tempURL = url.split(\"?\")[0], ext = _pixi_core__WEBPACK_IMPORTED_MODULE_0__.utils.path.extname(tempURL).toLowerCase();\n return Array.isArray(extension) ? extension.includes(ext) : ext === extension;\n}\n\n//# sourceMappingURL=checkExtension.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/utils/checkExtension.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/utils/convertToList.mjs":
-/*!***************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/utils/convertToList.mjs ***!
- \***************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ convertToList: () => (/* binding */ convertToList)\n/* harmony export */ });\nconst convertToList = (input, transform, forceTransform = !1) => (Array.isArray(input) || (input = [input]), transform ? input.map((item) => typeof item == \"string\" || forceTransform ? transform(item) : item) : input);\n\n//# sourceMappingURL=convertToList.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/utils/convertToList.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/utils/copySearchParams.mjs":
-/*!******************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/utils/copySearchParams.mjs ***!
- \******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ copySearchParams: () => (/* binding */ copySearchParams)\n/* harmony export */ });\nconst copySearchParams = (targetUrl, sourceUrl) => {\n const searchParams = sourceUrl.split(\"?\")[1];\n return searchParams && (targetUrl += `?${searchParams}`), targetUrl;\n};\n\n//# sourceMappingURL=copySearchParams.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/utils/copySearchParams.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/utils/createStringVariations.mjs":
-/*!************************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/utils/createStringVariations.mjs ***!
- \************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createStringVariations: () => (/* binding */ createStringVariations)\n/* harmony export */ });\nfunction processX(base, ids, depth, result, tags) {\n const id = ids[depth];\n for (let i = 0; i < id.length; i++) {\n const value = id[i];\n depth < ids.length - 1 ? processX(base.replace(result[depth], value), ids, depth + 1, result, tags) : tags.push(base.replace(result[depth], value));\n }\n}\nfunction createStringVariations(string) {\n const regex = /\\{(.*?)\\}/g, result = string.match(regex), tags = [];\n if (result) {\n const ids = [];\n result.forEach((vars) => {\n const split = vars.substring(1, vars.length - 1).split(\",\");\n ids.push(split);\n }), processX(string, ids, 0, result, tags);\n } else\n tags.push(string);\n return tags;\n}\n\n//# sourceMappingURL=createStringVariations.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/utils/createStringVariations.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/utils/index.mjs":
-/*!*******************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/utils/index.mjs ***!
- \*******************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ checkDataUrl: () => (/* reexport safe */ _checkDataUrl_mjs__WEBPACK_IMPORTED_MODULE_0__.checkDataUrl),\n/* harmony export */ checkExtension: () => (/* reexport safe */ _checkExtension_mjs__WEBPACK_IMPORTED_MODULE_1__.checkExtension),\n/* harmony export */ convertToList: () => (/* reexport safe */ _convertToList_mjs__WEBPACK_IMPORTED_MODULE_2__.convertToList),\n/* harmony export */ copySearchParams: () => (/* reexport safe */ _copySearchParams_mjs__WEBPACK_IMPORTED_MODULE_3__.copySearchParams),\n/* harmony export */ createStringVariations: () => (/* reexport safe */ _createStringVariations_mjs__WEBPACK_IMPORTED_MODULE_4__.createStringVariations),\n/* harmony export */ isSingleItem: () => (/* reexport safe */ _isSingleItem_mjs__WEBPACK_IMPORTED_MODULE_5__.isSingleItem)\n/* harmony export */ });\n/* harmony import */ var _checkDataUrl_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./checkDataUrl.mjs */ \"./node_modules/@pixi/assets/lib/utils/checkDataUrl.mjs\");\n/* harmony import */ var _checkExtension_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./checkExtension.mjs */ \"./node_modules/@pixi/assets/lib/utils/checkExtension.mjs\");\n/* harmony import */ var _convertToList_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./convertToList.mjs */ \"./node_modules/@pixi/assets/lib/utils/convertToList.mjs\");\n/* harmony import */ var _copySearchParams_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./copySearchParams.mjs */ \"./node_modules/@pixi/assets/lib/utils/copySearchParams.mjs\");\n/* harmony import */ var _createStringVariations_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./createStringVariations.mjs */ \"./node_modules/@pixi/assets/lib/utils/createStringVariations.mjs\");\n/* harmony import */ var _isSingleItem_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./isSingleItem.mjs */ \"./node_modules/@pixi/assets/lib/utils/isSingleItem.mjs\");\n\n\n\n\n\n\n\n//# sourceMappingURL=index.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/utils/index.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/assets/lib/utils/isSingleItem.mjs":
-/*!**************************************************************!*\
- !*** ./node_modules/@pixi/assets/lib/utils/isSingleItem.mjs ***!
- \**************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ isSingleItem: () => (/* binding */ isSingleItem)\n/* harmony export */ });\nconst isSingleItem = (item) => !Array.isArray(item);\n\n//# sourceMappingURL=isSingleItem.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/assets/lib/utils/isSingleItem.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/color/lib/Color.mjs":
-/*!************************************************!*\
- !*** ./node_modules/@pixi/color/lib/Color.mjs ***!
- \************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Color: () => (/* binding */ Color)\n/* harmony export */ });\n/* harmony import */ var _pixi_colord__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/colord */ \"./node_modules/@pixi/colord/index.mjs\");\n/* harmony import */ var _pixi_colord_plugins_names__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/colord/plugins/names */ \"./node_modules/@pixi/colord/plugins/names.mjs\");\n\n\n(0,_pixi_colord__WEBPACK_IMPORTED_MODULE_0__.extend)([_pixi_colord_plugins_names__WEBPACK_IMPORTED_MODULE_1__[\"default\"]]);\nconst _Color = class _Color2 {\n /**\n * @param {PIXI.ColorSource} value - Optional value to use, if not provided, white is used.\n */\n constructor(value = 16777215) {\n this._value = null, this._components = new Float32Array(4), this._components.fill(1), this._int = 16777215, this.value = value;\n }\n /** Get red component (0 - 1) */\n get red() {\n return this._components[0];\n }\n /** Get green component (0 - 1) */\n get green() {\n return this._components[1];\n }\n /** Get blue component (0 - 1) */\n get blue() {\n return this._components[2];\n }\n /** Get alpha component (0 - 1) */\n get alpha() {\n return this._components[3];\n }\n /**\n * Set the value, suitable for chaining\n * @param value\n * @see PIXI.Color.value\n */\n setValue(value) {\n return this.value = value, this;\n }\n /**\n * The current color source.\n *\n * When setting:\n * - Setting to an instance of `Color` will copy its color source and components.\n * - Otherwise, `Color` will try to normalize the color source and set the components.\n * If the color source is invalid, an `Error` will be thrown and the `Color` will left unchanged.\n *\n * Note: The `null` in the setter's parameter type is added to match the TypeScript rule: return type of getter\n * must be assignable to its setter's parameter type. Setting `value` to `null` will throw an `Error`.\n *\n * When getting:\n * - A return value of `null` means the previous value was overridden (e.g., {@link PIXI.Color.multiply multiply},\n * {@link PIXI.Color.premultiply premultiply} or {@link PIXI.Color.round round}).\n * - Otherwise, the color source used when setting is returned.\n * @type {PIXI.ColorSource}\n */\n set value(value) {\n if (value instanceof _Color2)\n this._value = this.cloneSource(value._value), this._int = value._int, this._components.set(value._components);\n else {\n if (value === null)\n throw new Error(\"Cannot set PIXI.Color#value to null\");\n (this._value === null || !this.isSourceEqual(this._value, value)) && (this.normalize(value), this._value = this.cloneSource(value));\n }\n }\n get value() {\n return this._value;\n }\n /**\n * Copy a color source internally.\n * @param value - Color source\n */\n cloneSource(value) {\n return typeof value == \"string\" || typeof value == \"number\" || value instanceof Number || value === null ? value : Array.isArray(value) || ArrayBuffer.isView(value) ? value.slice(0) : typeof value == \"object\" && value !== null ? { ...value } : value;\n }\n /**\n * Equality check for color sources.\n * @param value1 - First color source\n * @param value2 - Second color source\n * @returns `true` if the color sources are equal, `false` otherwise.\n */\n isSourceEqual(value1, value2) {\n const type1 = typeof value1;\n if (type1 !== typeof value2)\n return !1;\n if (type1 === \"number\" || type1 === \"string\" || value1 instanceof Number)\n return value1 === value2;\n if (Array.isArray(value1) && Array.isArray(value2) || ArrayBuffer.isView(value1) && ArrayBuffer.isView(value2))\n return value1.length !== value2.length ? !1 : value1.every((v, i) => v === value2[i]);\n if (value1 !== null && value2 !== null) {\n const keys1 = Object.keys(value1), keys2 = Object.keys(value2);\n return keys1.length !== keys2.length ? !1 : keys1.every((key) => value1[key] === value2[key]);\n }\n return value1 === value2;\n }\n /**\n * Convert to a RGBA color object.\n * @example\n * import { Color } from 'pixi.js';\n * new Color('white').toRgb(); // returns { r: 1, g: 1, b: 1, a: 1 }\n */\n toRgba() {\n const [r, g, b, a] = this._components;\n return { r, g, b, a };\n }\n /**\n * Convert to a RGB color object.\n * @example\n * import { Color } from 'pixi.js';\n * new Color('white').toRgb(); // returns { r: 1, g: 1, b: 1 }\n */\n toRgb() {\n const [r, g, b] = this._components;\n return { r, g, b };\n }\n /** Convert to a CSS-style rgba string: `rgba(255,255,255,1.0)`. */\n toRgbaString() {\n const [r, g, b] = this.toUint8RgbArray();\n return `rgba(${r},${g},${b},${this.alpha})`;\n }\n toUint8RgbArray(out) {\n const [r, g, b] = this._components;\n return out = out ?? [], out[0] = Math.round(r * 255), out[1] = Math.round(g * 255), out[2] = Math.round(b * 255), out;\n }\n toRgbArray(out) {\n out = out ?? [];\n const [r, g, b] = this._components;\n return out[0] = r, out[1] = g, out[2] = b, out;\n }\n /**\n * Convert to a hexadecimal number.\n * @example\n * import { Color } from 'pixi.js';\n * new Color('white').toNumber(); // returns 16777215\n */\n toNumber() {\n return this._int;\n }\n /**\n * Convert to a hexadecimal number in little endian format (e.g., BBGGRR).\n * @example\n * import { Color } from 'pixi.js';\n * new Color(0xffcc99).toLittleEndianNumber(); // returns 0x99ccff\n * @returns {number} - The color as a number in little endian format.\n */\n toLittleEndianNumber() {\n const value = this._int;\n return (value >> 16) + (value & 65280) + ((value & 255) << 16);\n }\n /**\n * Multiply with another color. This action is destructive, and will\n * override the previous `value` property to be `null`.\n * @param {PIXI.ColorSource} value - The color to multiply by.\n */\n multiply(value) {\n const [r, g, b, a] = _Color2.temp.setValue(value)._components;\n return this._components[0] *= r, this._components[1] *= g, this._components[2] *= b, this._components[3] *= a, this.refreshInt(), this._value = null, this;\n }\n /**\n * Converts color to a premultiplied alpha format. This action is destructive, and will\n * override the previous `value` property to be `null`.\n * @param alpha - The alpha to multiply by.\n * @param {boolean} [applyToRGB=true] - Whether to premultiply RGB channels.\n * @returns {PIXI.Color} - Itself.\n */\n premultiply(alpha, applyToRGB = !0) {\n return applyToRGB && (this._components[0] *= alpha, this._components[1] *= alpha, this._components[2] *= alpha), this._components[3] = alpha, this.refreshInt(), this._value = null, this;\n }\n /**\n * Premultiplies alpha with current color.\n * @param {number} alpha - The alpha to multiply by.\n * @param {boolean} [applyToRGB=true] - Whether to premultiply RGB channels.\n * @returns {number} tint multiplied by alpha\n */\n toPremultiplied(alpha, applyToRGB = !0) {\n if (alpha === 1)\n return (255 << 24) + this._int;\n if (alpha === 0)\n return applyToRGB ? 0 : this._int;\n let r = this._int >> 16 & 255, g = this._int >> 8 & 255, b = this._int & 255;\n return applyToRGB && (r = r * alpha + 0.5 | 0, g = g * alpha + 0.5 | 0, b = b * alpha + 0.5 | 0), (alpha * 255 << 24) + (r << 16) + (g << 8) + b;\n }\n /**\n * Convert to a hexidecimal string.\n * @example\n * import { Color } from 'pixi.js';\n * new Color('white').toHex(); // returns \"#ffffff\"\n */\n toHex() {\n const hexString = this._int.toString(16);\n return `#${\"000000\".substring(0, 6 - hexString.length) + hexString}`;\n }\n /**\n * Convert to a hexidecimal string with alpha.\n * @example\n * import { Color } from 'pixi.js';\n * new Color('white').toHexa(); // returns \"#ffffffff\"\n */\n toHexa() {\n const alphaString = Math.round(this._components[3] * 255).toString(16);\n return this.toHex() + \"00\".substring(0, 2 - alphaString.length) + alphaString;\n }\n /**\n * Set alpha, suitable for chaining.\n * @param alpha\n */\n setAlpha(alpha) {\n return this._components[3] = this._clamp(alpha), this;\n }\n /**\n * Rounds the specified color according to the step. This action is destructive, and will\n * override the previous `value` property to be `null`. The alpha component is not rounded.\n * @param steps - Number of steps which will be used as a cap when rounding colors\n * @deprecated since 7.3.0\n */\n round(steps) {\n const [r, g, b] = this._components;\n return this._components[0] = Math.round(r * steps) / steps, this._components[1] = Math.round(g * steps) / steps, this._components[2] = Math.round(b * steps) / steps, this.refreshInt(), this._value = null, this;\n }\n toArray(out) {\n out = out ?? [];\n const [r, g, b, a] = this._components;\n return out[0] = r, out[1] = g, out[2] = b, out[3] = a, out;\n }\n /**\n * Normalize the input value into rgba\n * @param value - Input value\n */\n normalize(value) {\n let r, g, b, a;\n if ((typeof value == \"number\" || value instanceof Number) && value >= 0 && value <= 16777215) {\n const int = value;\n r = (int >> 16 & 255) / 255, g = (int >> 8 & 255) / 255, b = (int & 255) / 255, a = 1;\n } else if ((Array.isArray(value) || value instanceof Float32Array) && value.length >= 3 && value.length <= 4)\n value = this._clamp(value), [r, g, b, a = 1] = value;\n else if ((value instanceof Uint8Array || value instanceof Uint8ClampedArray) && value.length >= 3 && value.length <= 4)\n value = this._clamp(value, 0, 255), [r, g, b, a = 255] = value, r /= 255, g /= 255, b /= 255, a /= 255;\n else if (typeof value == \"string\" || typeof value == \"object\") {\n if (typeof value == \"string\") {\n const match = _Color2.HEX_PATTERN.exec(value);\n match && (value = `#${match[2]}`);\n }\n const color = (0,_pixi_colord__WEBPACK_IMPORTED_MODULE_0__.colord)(value);\n color.isValid() && ({ r, g, b, a } = color.rgba, r /= 255, g /= 255, b /= 255);\n }\n if (r !== void 0)\n this._components[0] = r, this._components[1] = g, this._components[2] = b, this._components[3] = a, this.refreshInt();\n else\n throw new Error(`Unable to convert color ${value}`);\n }\n /** Refresh the internal color rgb number */\n refreshInt() {\n this._clamp(this._components);\n const [r, g, b] = this._components;\n this._int = (r * 255 << 16) + (g * 255 << 8) + (b * 255 | 0);\n }\n /**\n * Clamps values to a range. Will override original values\n * @param value - Value(s) to clamp\n * @param min - Minimum value\n * @param max - Maximum value\n */\n _clamp(value, min = 0, max = 1) {\n return typeof value == \"number\" ? Math.min(Math.max(value, min), max) : (value.forEach((v, i) => {\n value[i] = Math.min(Math.max(v, min), max);\n }), value);\n }\n};\n_Color.shared = new _Color(), /**\n* Temporary Color object for static uses internally.\n* As to not conflict with Color.shared.\n* @ignore\n*/\n_Color.temp = new _Color(), /** Pattern for hex strings */\n_Color.HEX_PATTERN = /^(#|0x)?(([a-f0-9]{3}){1,2}([a-f0-9]{2})?)$/i;\nlet Color = _Color;\n\n//# sourceMappingURL=Color.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/color/lib/Color.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/color/lib/index.mjs":
-/*!************************************************!*\
- !*** ./node_modules/@pixi/color/lib/index.mjs ***!
- \************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Color: () => (/* reexport safe */ _Color_mjs__WEBPACK_IMPORTED_MODULE_0__.Color)\n/* harmony export */ });\n/* harmony import */ var _Color_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Color.mjs */ \"./node_modules/@pixi/color/lib/Color.mjs\");\n\n\n//# sourceMappingURL=index.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/color/lib/index.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/colord/index.mjs":
-/*!*********************************************!*\
- !*** ./node_modules/@pixi/colord/index.mjs ***!
- \*********************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Colord: () => (/* binding */ j),\n/* harmony export */ colord: () => (/* binding */ w),\n/* harmony export */ extend: () => (/* binding */ k),\n/* harmony export */ getFormat: () => (/* binding */ I),\n/* harmony export */ random: () => (/* binding */ E)\n/* harmony export */ });\nvar r={grad:.9,turn:360,rad:360/(2*Math.PI)},t=function(r){return\"string\"==typeof r?r.length>0:\"number\"==typeof r},n=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=Math.pow(10,t)),Math.round(n*r)/n+0},e=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),r>n?n:r>t?r:t},u=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},a=function(r){return{r:e(r.r,0,255),g:e(r.g,0,255),b:e(r.b,0,255),a:e(r.a)}},o=function(r){return{r:n(r.r),g:n(r.g),b:n(r.b),a:n(r.a,3)}},i=/^#([0-9a-f]{3,8})$/i,s=function(r){var t=r.toString(16);return t.length<2?\"0\"+t:t},h=function(r){var t=r.r,n=r.g,e=r.b,u=r.a,a=Math.max(t,n,e),o=a-Math.min(t,n,e),i=o?a===t?(n-e)/o:a===n?2+(e-t)/o:4+(t-n)/o:0;return{h:60*(i<0?i+6:i),s:a?o/a*100:0,v:a/255*100,a:u}},b=function(r){var t=r.h,n=r.s,e=r.v,u=r.a;t=t/360*6,n/=100,e/=100;var a=Math.floor(t),o=e*(1-n),i=e*(1-(t-a)*n),s=e*(1-(1-t+a)*n),h=a%6;return{r:255*[e,i,o,o,s,e][h],g:255*[s,e,e,i,o,o][h],b:255*[o,o,s,e,e,i][h],a:u}},g=function(r){return{h:u(r.h),s:e(r.s,0,100),l:e(r.l,0,100),a:e(r.a)}},d=function(r){return{h:n(r.h),s:n(r.s),l:n(r.l),a:n(r.a,3)}},f=function(r){return b((n=(t=r).s,{h:t.h,s:(n*=((e=t.l)<50?e:100-e)/100)>0?2*n/(e+n)*100:0,v:e+n,a:t.a}));var t,n,e},c=function(r){return{h:(t=h(r)).h,s:(u=(200-(n=t.s))*(e=t.v)/100)>0&&u<200?n*e/100/(u<=100?u:200-u)*100:0,l:u/2,a:t.a};var t,n,e,u},l=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,p=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s+([+-]?\\d*\\.?\\d+)%\\s+([+-]?\\d*\\.?\\d+)%\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,v=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,m=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,y={string:[[function(r){var t=i.exec(r);return t?(r=t[1]).length<=4?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:4===r.length?n(parseInt(r[3]+r[3],16)/255,2):1}:6===r.length||8===r.length?{r:parseInt(r.substr(0,2),16),g:parseInt(r.substr(2,2),16),b:parseInt(r.substr(4,2),16),a:8===r.length?n(parseInt(r.substr(6,2),16)/255,2):1}:null:null},\"hex\"],[function(r){var t=v.exec(r)||m.exec(r);return t?t[2]!==t[4]||t[4]!==t[6]?null:a({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:void 0===t[7]?1:Number(t[7])/(t[8]?100:1)}):null},\"rgb\"],[function(t){var n=l.exec(t)||p.exec(t);if(!n)return null;var e,u,a=g({h:(e=n[1],u=n[2],void 0===u&&(u=\"deg\"),Number(e)*(r[u]||1)),s:Number(n[3]),l:Number(n[4]),a:void 0===n[5]?1:Number(n[5])/(n[6]?100:1)});return f(a)},\"hsl\"]],object:[[function(r){var n=r.r,e=r.g,u=r.b,o=r.a,i=void 0===o?1:o;return t(n)&&t(e)&&t(u)?a({r:Number(n),g:Number(e),b:Number(u),a:Number(i)}):null},\"rgb\"],[function(r){var n=r.h,e=r.s,u=r.l,a=r.a,o=void 0===a?1:a;if(!t(n)||!t(e)||!t(u))return null;var i=g({h:Number(n),s:Number(e),l:Number(u),a:Number(o)});return f(i)},\"hsl\"],[function(r){var n=r.h,a=r.s,o=r.v,i=r.a,s=void 0===i?1:i;if(!t(n)||!t(a)||!t(o))return null;var h=function(r){return{h:u(r.h),s:e(r.s,0,100),v:e(r.v,0,100),a:e(r.a)}}({h:Number(n),s:Number(a),v:Number(o),a:Number(s)});return b(h)},\"hsv\"]]},N=function(r,t){for(var n=0;n=.5},r.prototype.toHex=function(){return r=o(this.rgba),t=r.r,e=r.g,u=r.b,i=(a=r.a)<1?s(n(255*a)):\"\",\"#\"+s(t)+s(e)+s(u)+i;var r,t,e,u,a,i},r.prototype.toRgb=function(){return o(this.rgba)},r.prototype.toRgbString=function(){return r=o(this.rgba),t=r.r,n=r.g,e=r.b,(u=r.a)<1?\"rgba(\"+t+\", \"+n+\", \"+e+\", \"+u+\")\":\"rgb(\"+t+\", \"+n+\", \"+e+\")\";var r,t,n,e,u},r.prototype.toHsl=function(){return d(c(this.rgba))},r.prototype.toHslString=function(){return r=d(c(this.rgba)),t=r.h,n=r.s,e=r.l,(u=r.a)<1?\"hsla(\"+t+\", \"+n+\"%, \"+e+\"%, \"+u+\")\":\"hsl(\"+t+\", \"+n+\"%, \"+e+\"%)\";var r,t,n,e,u},r.prototype.toHsv=function(){return r=h(this.rgba),{h:n(r.h),s:n(r.s),v:n(r.v),a:n(r.a,3)};var r},r.prototype.invert=function(){return w({r:255-(r=this.rgba).r,g:255-r.g,b:255-r.b,a:r.a});var r},r.prototype.saturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,r))},r.prototype.desaturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,-r))},r.prototype.grayscale=function(){return w(M(this.rgba,-1))},r.prototype.lighten=function(r){return void 0===r&&(r=.1),w($(this.rgba,r))},r.prototype.darken=function(r){return void 0===r&&(r=.1),w($(this.rgba,-r))},r.prototype.rotate=function(r){return void 0===r&&(r=15),this.hue(this.hue()+r)},r.prototype.alpha=function(r){return\"number\"==typeof r?w({r:(t=this.rgba).r,g:t.g,b:t.b,a:r}):n(this.rgba.a,3);var t},r.prototype.hue=function(r){var t=c(this.rgba);return\"number\"==typeof r?w({h:r,s:t.s,l:t.l,a:t.a}):n(t.h)},r.prototype.isEqual=function(r){return this.toHex()===w(r).toHex()},r}(),w=function(r){return r instanceof j?r:new j(r)},S=[],k=function(r){r.forEach(function(r){S.indexOf(r)<0&&(r(j,y),S.push(r))})},E=function(){return new j({r:255*Math.random(),g:255*Math.random(),b:255*Math.random()})};\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/colord/index.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/colord/plugins/names.mjs":
-/*!*****************************************************!*\
- !*** ./node_modules/@pixi/colord/plugins/names.mjs ***!
- \*****************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(e,f){var a={white:\"#ffffff\",bisque:\"#ffe4c4\",blue:\"#0000ff\",cadetblue:\"#5f9ea0\",chartreuse:\"#7fff00\",chocolate:\"#d2691e\",coral:\"#ff7f50\",antiquewhite:\"#faebd7\",aqua:\"#00ffff\",azure:\"#f0ffff\",whitesmoke:\"#f5f5f5\",papayawhip:\"#ffefd5\",plum:\"#dda0dd\",blanchedalmond:\"#ffebcd\",black:\"#000000\",gold:\"#ffd700\",goldenrod:\"#daa520\",gainsboro:\"#dcdcdc\",cornsilk:\"#fff8dc\",cornflowerblue:\"#6495ed\",burlywood:\"#deb887\",aquamarine:\"#7fffd4\",beige:\"#f5f5dc\",crimson:\"#dc143c\",cyan:\"#00ffff\",darkblue:\"#00008b\",darkcyan:\"#008b8b\",darkgoldenrod:\"#b8860b\",darkkhaki:\"#bdb76b\",darkgray:\"#a9a9a9\",darkgreen:\"#006400\",darkgrey:\"#a9a9a9\",peachpuff:\"#ffdab9\",darkmagenta:\"#8b008b\",darkred:\"#8b0000\",darkorchid:\"#9932cc\",darkorange:\"#ff8c00\",darkslateblue:\"#483d8b\",gray:\"#808080\",darkslategray:\"#2f4f4f\",darkslategrey:\"#2f4f4f\",deeppink:\"#ff1493\",deepskyblue:\"#00bfff\",wheat:\"#f5deb3\",firebrick:\"#b22222\",floralwhite:\"#fffaf0\",ghostwhite:\"#f8f8ff\",darkviolet:\"#9400d3\",magenta:\"#ff00ff\",green:\"#008000\",dodgerblue:\"#1e90ff\",grey:\"#808080\",honeydew:\"#f0fff0\",hotpink:\"#ff69b4\",blueviolet:\"#8a2be2\",forestgreen:\"#228b22\",lawngreen:\"#7cfc00\",indianred:\"#cd5c5c\",indigo:\"#4b0082\",fuchsia:\"#ff00ff\",brown:\"#a52a2a\",maroon:\"#800000\",mediumblue:\"#0000cd\",lightcoral:\"#f08080\",darkturquoise:\"#00ced1\",lightcyan:\"#e0ffff\",ivory:\"#fffff0\",lightyellow:\"#ffffe0\",lightsalmon:\"#ffa07a\",lightseagreen:\"#20b2aa\",linen:\"#faf0e6\",mediumaquamarine:\"#66cdaa\",lemonchiffon:\"#fffacd\",lime:\"#00ff00\",khaki:\"#f0e68c\",mediumseagreen:\"#3cb371\",limegreen:\"#32cd32\",mediumspringgreen:\"#00fa9a\",lightskyblue:\"#87cefa\",lightblue:\"#add8e6\",midnightblue:\"#191970\",lightpink:\"#ffb6c1\",mistyrose:\"#ffe4e1\",moccasin:\"#ffe4b5\",mintcream:\"#f5fffa\",lightslategray:\"#778899\",lightslategrey:\"#778899\",navajowhite:\"#ffdead\",navy:\"#000080\",mediumvioletred:\"#c71585\",powderblue:\"#b0e0e6\",palegoldenrod:\"#eee8aa\",oldlace:\"#fdf5e6\",paleturquoise:\"#afeeee\",mediumturquoise:\"#48d1cc\",mediumorchid:\"#ba55d3\",rebeccapurple:\"#663399\",lightsteelblue:\"#b0c4de\",mediumslateblue:\"#7b68ee\",thistle:\"#d8bfd8\",tan:\"#d2b48c\",orchid:\"#da70d6\",mediumpurple:\"#9370db\",purple:\"#800080\",pink:\"#ffc0cb\",skyblue:\"#87ceeb\",springgreen:\"#00ff7f\",palegreen:\"#98fb98\",red:\"#ff0000\",yellow:\"#ffff00\",slateblue:\"#6a5acd\",lavenderblush:\"#fff0f5\",peru:\"#cd853f\",palevioletred:\"#db7093\",violet:\"#ee82ee\",teal:\"#008080\",slategray:\"#708090\",slategrey:\"#708090\",aliceblue:\"#f0f8ff\",darkseagreen:\"#8fbc8f\",darkolivegreen:\"#556b2f\",greenyellow:\"#adff2f\",seagreen:\"#2e8b57\",seashell:\"#fff5ee\",tomato:\"#ff6347\",silver:\"#c0c0c0\",sienna:\"#a0522d\",lavender:\"#e6e6fa\",lightgreen:\"#90ee90\",orange:\"#ffa500\",orangered:\"#ff4500\",steelblue:\"#4682b4\",royalblue:\"#4169e1\",turquoise:\"#40e0d0\",yellowgreen:\"#9acd32\",salmon:\"#fa8072\",saddlebrown:\"#8b4513\",sandybrown:\"#f4a460\",rosybrown:\"#bc8f8f\",darksalmon:\"#e9967a\",lightgoldenrodyellow:\"#fafad2\",snow:\"#fffafa\",lightgrey:\"#d3d3d3\",lightgray:\"#d3d3d3\",dimgray:\"#696969\",dimgrey:\"#696969\",olivedrab:\"#6b8e23\",olive:\"#808000\"},r={};for(var d in a)r[a[d]]=d;var l={};e.prototype.toName=function(f){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return\"transparent\";var d,i,n=r[this.toHex()];if(n)return n;if(null==f?void 0:f.closest){var o=this.toRgb(),t=1/0,b=\"black\";if(!l.length)for(var c in a)l[c]=new e(a[c]).toRgb();for(var g in a){var u=(d=o,i=l[g],Math.pow(d.r-i.r,2)+Math.pow(d.g-i.g,2)+Math.pow(d.b-i.b,2));u {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ INTERNAL_FORMATS: () => (/* binding */ INTERNAL_FORMATS),\n/* harmony export */ INTERNAL_FORMAT_TO_BYTES_PER_PIXEL: () => (/* binding */ INTERNAL_FORMAT_TO_BYTES_PER_PIXEL)\n/* harmony export */ });\nvar INTERNAL_FORMATS = /* @__PURE__ */ ((INTERNAL_FORMATS2) => (INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_S3TC_DXT1_EXT = 33776] = \"COMPRESSED_RGB_S3TC_DXT1_EXT\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_S3TC_DXT1_EXT = 33777] = \"COMPRESSED_RGBA_S3TC_DXT1_EXT\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_S3TC_DXT3_EXT = 33778] = \"COMPRESSED_RGBA_S3TC_DXT3_EXT\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_S3TC_DXT5_EXT = 33779] = \"COMPRESSED_RGBA_S3TC_DXT5_EXT\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = 35917] = \"COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = 35918] = \"COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = 35919] = \"COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB_S3TC_DXT1_EXT = 35916] = \"COMPRESSED_SRGB_S3TC_DXT1_EXT\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_R11_EAC = 37488] = \"COMPRESSED_R11_EAC\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SIGNED_R11_EAC = 37489] = \"COMPRESSED_SIGNED_R11_EAC\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RG11_EAC = 37490] = \"COMPRESSED_RG11_EAC\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SIGNED_RG11_EAC = 37491] = \"COMPRESSED_SIGNED_RG11_EAC\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB8_ETC2 = 37492] = \"COMPRESSED_RGB8_ETC2\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA8_ETC2_EAC = 37496] = \"COMPRESSED_RGBA8_ETC2_EAC\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB8_ETC2 = 37493] = \"COMPRESSED_SRGB8_ETC2\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 37497] = \"COMPRESSED_SRGB8_ALPHA8_ETC2_EAC\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37494] = \"COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37495] = \"COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 35840] = \"COMPRESSED_RGB_PVRTC_4BPPV1_IMG\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 35842] = \"COMPRESSED_RGBA_PVRTC_4BPPV1_IMG\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 35841] = \"COMPRESSED_RGB_PVRTC_2BPPV1_IMG\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 35843] = \"COMPRESSED_RGBA_PVRTC_2BPPV1_IMG\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_ETC1_WEBGL = 36196] = \"COMPRESSED_RGB_ETC1_WEBGL\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGB_ATC_WEBGL = 35986] = \"COMPRESSED_RGB_ATC_WEBGL\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL = 35986] = \"COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL = 34798] = \"COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL\", INTERNAL_FORMATS2[INTERNAL_FORMATS2.COMPRESSED_RGBA_ASTC_4x4_KHR = 37808] = \"COMPRESSED_RGBA_ASTC_4x4_KHR\", INTERNAL_FORMATS2))(INTERNAL_FORMATS || {});\nconst INTERNAL_FORMAT_TO_BYTES_PER_PIXEL = {\n // WEBGL_compressed_texture_s3tc\n 33776: 0.5,\n 33777: 0.5,\n 33778: 1,\n 33779: 1,\n // WEBGL_compressed_texture_s3tc\n 35916: 0.5,\n 35917: 0.5,\n 35918: 1,\n 35919: 1,\n // WEBGL_compressed_texture_etc\n 37488: 0.5,\n 37489: 0.5,\n 37490: 1,\n 37491: 1,\n 37492: 0.5,\n 37496: 1,\n 37493: 0.5,\n 37497: 1,\n 37494: 0.5,\n // ~~\n 37495: 0.5,\n // ~~\n // WEBGL_compressed_texture_pvrtc\n 35840: 0.5,\n 35842: 0.5,\n 35841: 0.25,\n 35843: 0.25,\n // WEBGL_compressed_texture_etc1\n 36196: 0.5,\n // @see https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_compressed_ATC_texture.txt\n // WEBGL_compressed_texture_atc\n 35986: 0.5,\n 35986: 1,\n 34798: 1,\n // @see https://registry.khronos.org/OpenGL/extensions/KHR/KHR_texture_compression_astc_hdr.txt\n // WEBGL_compressed_texture_astc\n /* eslint-disable-next-line camelcase */\n 37808: 1\n};\n\n//# sourceMappingURL=const.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/compressed-textures/lib/const.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/compressed-textures/lib/index.mjs":
-/*!**************************************************************!*\
- !*** ./node_modules/@pixi/compressed-textures/lib/index.mjs ***!
- \**************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BlobResource: () => (/* reexport safe */ _resources_BlobResource_mjs__WEBPACK_IMPORTED_MODULE_10__.BlobResource),\n/* harmony export */ CompressedTextureResource: () => (/* reexport safe */ _resources_CompressedTextureResource_mjs__WEBPACK_IMPORTED_MODULE_11__.CompressedTextureResource),\n/* harmony export */ FORMATS_TO_COMPONENTS: () => (/* reexport safe */ _parsers_parseKTX_mjs__WEBPACK_IMPORTED_MODULE_9__.FORMATS_TO_COMPONENTS),\n/* harmony export */ INTERNAL_FORMATS: () => (/* reexport safe */ _const_mjs__WEBPACK_IMPORTED_MODULE_0__.INTERNAL_FORMATS),\n/* harmony export */ INTERNAL_FORMAT_TO_BYTES_PER_PIXEL: () => (/* reexport safe */ _const_mjs__WEBPACK_IMPORTED_MODULE_0__.INTERNAL_FORMAT_TO_BYTES_PER_PIXEL),\n/* harmony export */ TYPES_TO_BYTES_PER_COMPONENT: () => (/* reexport safe */ _parsers_parseKTX_mjs__WEBPACK_IMPORTED_MODULE_9__.TYPES_TO_BYTES_PER_COMPONENT),\n/* harmony export */ TYPES_TO_BYTES_PER_PIXEL: () => (/* reexport safe */ _parsers_parseKTX_mjs__WEBPACK_IMPORTED_MODULE_9__.TYPES_TO_BYTES_PER_PIXEL),\n/* harmony export */ detectCompressedTextures: () => (/* reexport safe */ _loaders_detectCompressedTextures_mjs__WEBPACK_IMPORTED_MODULE_4__.detectCompressedTextures),\n/* harmony export */ loadDDS: () => (/* reexport safe */ _loaders_loadDDS_mjs__WEBPACK_IMPORTED_MODULE_5__.loadDDS),\n/* harmony export */ loadKTX: () => (/* reexport safe */ _loaders_loadKTX_mjs__WEBPACK_IMPORTED_MODULE_6__.loadKTX),\n/* harmony export */ parseDDS: () => (/* reexport safe */ _parsers_parseDDS_mjs__WEBPACK_IMPORTED_MODULE_8__.parseDDS),\n/* harmony export */ parseKTX: () => (/* reexport safe */ _parsers_parseKTX_mjs__WEBPACK_IMPORTED_MODULE_9__.parseKTX),\n/* harmony export */ resolveCompressedTextureUrl: () => (/* reexport safe */ _loaders_resolveCompressedTextureUrl_mjs__WEBPACK_IMPORTED_MODULE_7__.resolveCompressedTextureUrl)\n/* harmony export */ });\n/* harmony import */ var _const_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./const.mjs */ \"./node_modules/@pixi/compressed-textures/lib/const.mjs\");\n/* harmony import */ var _loaders_index_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loaders/index.mjs */ \"./node_modules/@pixi/compressed-textures/lib/loaders/index.mjs\");\n/* harmony import */ var _parsers_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./parsers/index.mjs */ \"./node_modules/@pixi/compressed-textures/lib/parsers/index.mjs\");\n/* harmony import */ var _resources_index_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./resources/index.mjs */ \"./node_modules/@pixi/compressed-textures/lib/resources/index.mjs\");\n/* harmony import */ var _loaders_detectCompressedTextures_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./loaders/detectCompressedTextures.mjs */ \"./node_modules/@pixi/compressed-textures/lib/loaders/detectCompressedTextures.mjs\");\n/* harmony import */ var _loaders_loadDDS_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./loaders/loadDDS.mjs */ \"./node_modules/@pixi/compressed-textures/lib/loaders/loadDDS.mjs\");\n/* harmony import */ var _loaders_loadKTX_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./loaders/loadKTX.mjs */ \"./node_modules/@pixi/compressed-textures/lib/loaders/loadKTX.mjs\");\n/* harmony import */ var _loaders_resolveCompressedTextureUrl_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./loaders/resolveCompressedTextureUrl.mjs */ \"./node_modules/@pixi/compressed-textures/lib/loaders/resolveCompressedTextureUrl.mjs\");\n/* harmony import */ var _parsers_parseDDS_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./parsers/parseDDS.mjs */ \"./node_modules/@pixi/compressed-textures/lib/parsers/parseDDS.mjs\");\n/* harmony import */ var _parsers_parseKTX_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./parsers/parseKTX.mjs */ \"./node_modules/@pixi/compressed-textures/lib/parsers/parseKTX.mjs\");\n/* harmony import */ var _resources_BlobResource_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./resources/BlobResource.mjs */ \"./node_modules/@pixi/compressed-textures/lib/resources/BlobResource.mjs\");\n/* harmony import */ var _resources_CompressedTextureResource_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./resources/CompressedTextureResource.mjs */ \"./node_modules/@pixi/compressed-textures/lib/resources/CompressedTextureResource.mjs\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/compressed-textures/lib/index.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/compressed-textures/lib/loaders/compressedTextureExtensions.mjs":
-/*!********************************************************************************************!*\
- !*** ./node_modules/@pixi/compressed-textures/lib/loaders/compressedTextureExtensions.mjs ***!
- \********************************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n\n//# sourceMappingURL=compressedTextureExtensions.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/compressed-textures/lib/loaders/compressedTextureExtensions.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/compressed-textures/lib/loaders/detectCompressedTextures.mjs":
-/*!*****************************************************************************************!*\
- !*** ./node_modules/@pixi/compressed-textures/lib/loaders/detectCompressedTextures.mjs ***!
- \*****************************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ detectCompressedTextures: () => (/* binding */ detectCompressedTextures)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n\nlet storedGl, extensions;\nfunction getCompressedTextureExtensions() {\n extensions = {\n s3tc: storedGl.getExtension(\"WEBGL_compressed_texture_s3tc\"),\n s3tc_sRGB: storedGl.getExtension(\"WEBGL_compressed_texture_s3tc_srgb\"),\n /* eslint-disable-line camelcase */\n etc: storedGl.getExtension(\"WEBGL_compressed_texture_etc\"),\n etc1: storedGl.getExtension(\"WEBGL_compressed_texture_etc1\"),\n pvrtc: storedGl.getExtension(\"WEBGL_compressed_texture_pvrtc\") || storedGl.getExtension(\"WEBKIT_WEBGL_compressed_texture_pvrtc\"),\n atc: storedGl.getExtension(\"WEBGL_compressed_texture_atc\"),\n astc: storedGl.getExtension(\"WEBGL_compressed_texture_astc\")\n };\n}\nconst detectCompressedTextures = {\n extension: {\n type: _pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.DetectionParser,\n priority: 2\n },\n test: async () => {\n const gl = _pixi_core__WEBPACK_IMPORTED_MODULE_0__.settings.ADAPTER.createCanvas().getContext(\"webgl\");\n return gl ? (storedGl = gl, !0) : (console.warn(\"WebGL not available for compressed textures.\"), !1);\n },\n add: async (formats) => {\n extensions || getCompressedTextureExtensions();\n const textureFormats = [];\n for (const extensionName in extensions)\n extensions[extensionName] && textureFormats.push(extensionName);\n return [...textureFormats, ...formats];\n },\n remove: async (formats) => (extensions || getCompressedTextureExtensions(), formats.filter((f) => !(f in extensions)))\n};\n_pixi_core__WEBPACK_IMPORTED_MODULE_0__.extensions.add(detectCompressedTextures);\n\n//# sourceMappingURL=detectCompressedTextures.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/compressed-textures/lib/loaders/detectCompressedTextures.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/compressed-textures/lib/loaders/index.mjs":
-/*!**********************************************************************!*\
- !*** ./node_modules/@pixi/compressed-textures/lib/loaders/index.mjs ***!
- \**********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ detectCompressedTextures: () => (/* reexport safe */ _detectCompressedTextures_mjs__WEBPACK_IMPORTED_MODULE_1__.detectCompressedTextures),\n/* harmony export */ loadDDS: () => (/* reexport safe */ _loadDDS_mjs__WEBPACK_IMPORTED_MODULE_2__.loadDDS),\n/* harmony export */ loadKTX: () => (/* reexport safe */ _loadKTX_mjs__WEBPACK_IMPORTED_MODULE_3__.loadKTX),\n/* harmony export */ resolveCompressedTextureUrl: () => (/* reexport safe */ _resolveCompressedTextureUrl_mjs__WEBPACK_IMPORTED_MODULE_4__.resolveCompressedTextureUrl)\n/* harmony export */ });\n/* harmony import */ var _compressedTextureExtensions_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./compressedTextureExtensions.mjs */ \"./node_modules/@pixi/compressed-textures/lib/loaders/compressedTextureExtensions.mjs\");\n/* harmony import */ var _detectCompressedTextures_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./detectCompressedTextures.mjs */ \"./node_modules/@pixi/compressed-textures/lib/loaders/detectCompressedTextures.mjs\");\n/* harmony import */ var _loadDDS_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./loadDDS.mjs */ \"./node_modules/@pixi/compressed-textures/lib/loaders/loadDDS.mjs\");\n/* harmony import */ var _loadKTX_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./loadKTX.mjs */ \"./node_modules/@pixi/compressed-textures/lib/loaders/loadKTX.mjs\");\n/* harmony import */ var _resolveCompressedTextureUrl_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./resolveCompressedTextureUrl.mjs */ \"./node_modules/@pixi/compressed-textures/lib/loaders/resolveCompressedTextureUrl.mjs\");\n\n\n\n\n\n\n//# sourceMappingURL=index.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/compressed-textures/lib/loaders/index.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/compressed-textures/lib/loaders/loadDDS.mjs":
-/*!************************************************************************!*\
- !*** ./node_modules/@pixi/compressed-textures/lib/loaders/loadDDS.mjs ***!
- \************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadDDS: () => (/* binding */ loadDDS)\n/* harmony export */ });\n/* harmony import */ var _pixi_assets__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/assets */ \"./node_modules/@pixi/assets/lib/index.mjs\");\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n/* harmony import */ var _parsers_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../parsers/index.mjs */ \"./node_modules/@pixi/compressed-textures/lib/parsers/index.mjs\");\n/* harmony import */ var _parsers_parseDDS_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../parsers/parseDDS.mjs */ \"./node_modules/@pixi/compressed-textures/lib/parsers/parseDDS.mjs\");\n\n\n\n\nconst loadDDS = {\n extension: {\n type: _pixi_core__WEBPACK_IMPORTED_MODULE_1__.ExtensionType.LoadParser,\n priority: _pixi_assets__WEBPACK_IMPORTED_MODULE_0__.LoaderParserPriority.High\n },\n name: \"loadDDS\",\n test(url) {\n return (0,_pixi_assets__WEBPACK_IMPORTED_MODULE_0__.checkExtension)(url, \".dds\");\n },\n async load(url, asset, loader) {\n const arrayBuffer = await (await _pixi_core__WEBPACK_IMPORTED_MODULE_1__.settings.ADAPTER.fetch(url)).arrayBuffer(), textures = (0,_parsers_parseDDS_mjs__WEBPACK_IMPORTED_MODULE_3__.parseDDS)(arrayBuffer).map((resource) => {\n const base = new _pixi_core__WEBPACK_IMPORTED_MODULE_1__.BaseTexture(resource, {\n mipmap: _pixi_core__WEBPACK_IMPORTED_MODULE_1__.MIPMAP_MODES.OFF,\n alphaMode: _pixi_core__WEBPACK_IMPORTED_MODULE_1__.ALPHA_MODES.NO_PREMULTIPLIED_ALPHA,\n resolution: _pixi_core__WEBPACK_IMPORTED_MODULE_1__.utils.getResolutionOfUrl(url),\n ...asset.data\n });\n return (0,_pixi_assets__WEBPACK_IMPORTED_MODULE_0__.createTexture)(base, loader, url);\n });\n return textures.length === 1 ? textures[0] : textures;\n },\n unload(texture) {\n Array.isArray(texture) ? texture.forEach((t) => t.destroy(!0)) : texture.destroy(!0);\n }\n};\n_pixi_core__WEBPACK_IMPORTED_MODULE_1__.extensions.add(loadDDS);\n\n//# sourceMappingURL=loadDDS.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/compressed-textures/lib/loaders/loadDDS.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/compressed-textures/lib/loaders/loadKTX.mjs":
-/*!************************************************************************!*\
- !*** ./node_modules/@pixi/compressed-textures/lib/loaders/loadKTX.mjs ***!
- \************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadKTX: () => (/* binding */ loadKTX)\n/* harmony export */ });\n/* harmony import */ var _pixi_assets__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/assets */ \"./node_modules/@pixi/assets/lib/index.mjs\");\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n/* harmony import */ var _parsers_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../parsers/index.mjs */ \"./node_modules/@pixi/compressed-textures/lib/parsers/index.mjs\");\n/* harmony import */ var _parsers_parseKTX_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../parsers/parseKTX.mjs */ \"./node_modules/@pixi/compressed-textures/lib/parsers/parseKTX.mjs\");\n\n\n\n\nconst loadKTX = {\n extension: {\n type: _pixi_core__WEBPACK_IMPORTED_MODULE_1__.ExtensionType.LoadParser,\n priority: _pixi_assets__WEBPACK_IMPORTED_MODULE_0__.LoaderParserPriority.High\n },\n name: \"loadKTX\",\n test(url) {\n return (0,_pixi_assets__WEBPACK_IMPORTED_MODULE_0__.checkExtension)(url, \".ktx\");\n },\n async load(url, asset, loader) {\n const arrayBuffer = await (await _pixi_core__WEBPACK_IMPORTED_MODULE_1__.settings.ADAPTER.fetch(url)).arrayBuffer(), { compressed, uncompressed, kvData } = (0,_parsers_parseKTX_mjs__WEBPACK_IMPORTED_MODULE_3__.parseKTX)(url, arrayBuffer), resources = compressed ?? uncompressed, options = {\n mipmap: _pixi_core__WEBPACK_IMPORTED_MODULE_1__.MIPMAP_MODES.OFF,\n alphaMode: _pixi_core__WEBPACK_IMPORTED_MODULE_1__.ALPHA_MODES.NO_PREMULTIPLIED_ALPHA,\n resolution: _pixi_core__WEBPACK_IMPORTED_MODULE_1__.utils.getResolutionOfUrl(url),\n ...asset.data\n }, textures = resources.map((resource) => {\n resources === uncompressed && Object.assign(options, {\n type: resource.type,\n format: resource.format\n });\n const res = resource.resource ?? resource, base = new _pixi_core__WEBPACK_IMPORTED_MODULE_1__.BaseTexture(res, options);\n return base.ktxKeyValueData = kvData, (0,_pixi_assets__WEBPACK_IMPORTED_MODULE_0__.createTexture)(base, loader, url);\n });\n return textures.length === 1 ? textures[0] : textures;\n },\n unload(texture) {\n Array.isArray(texture) ? texture.forEach((t) => t.destroy(!0)) : texture.destroy(!0);\n }\n};\n_pixi_core__WEBPACK_IMPORTED_MODULE_1__.extensions.add(loadKTX);\n\n//# sourceMappingURL=loadKTX.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/compressed-textures/lib/loaders/loadKTX.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/compressed-textures/lib/loaders/resolveCompressedTextureUrl.mjs":
-/*!********************************************************************************************!*\
- !*** ./node_modules/@pixi/compressed-textures/lib/loaders/resolveCompressedTextureUrl.mjs ***!
- \********************************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ resolveCompressedTextureUrl: () => (/* binding */ resolveCompressedTextureUrl)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n\nconst resolveCompressedTextureUrl = {\n extension: _pixi_core__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.ResolveParser,\n test: (value) => {\n const extension = _pixi_core__WEBPACK_IMPORTED_MODULE_0__.utils.path.extname(value).slice(1);\n return [\"basis\", \"ktx\", \"dds\"].includes(extension);\n },\n parse: (value) => {\n const extension = _pixi_core__WEBPACK_IMPORTED_MODULE_0__.utils.path.extname(value).slice(1);\n if (extension === \"ktx\") {\n const extensions2 = [\n \".s3tc.ktx\",\n \".s3tc_sRGB.ktx\",\n \".etc.ktx\",\n \".etc1.ktx\",\n \".pvrt.ktx\",\n \".atc.ktx\",\n \".astc.ktx\"\n ];\n if (extensions2.some((ext) => value.endsWith(ext)))\n return {\n resolution: parseFloat(_pixi_core__WEBPACK_IMPORTED_MODULE_0__.settings.RETINA_PREFIX.exec(value)?.[1] ?? \"1\"),\n format: extensions2.find((ext) => value.endsWith(ext)),\n src: value\n };\n }\n return {\n resolution: parseFloat(_pixi_core__WEBPACK_IMPORTED_MODULE_0__.settings.RETINA_PREFIX.exec(value)?.[1] ?? \"1\"),\n format: extension,\n src: value\n };\n }\n};\n_pixi_core__WEBPACK_IMPORTED_MODULE_0__.extensions.add(resolveCompressedTextureUrl);\n\n//# sourceMappingURL=resolveCompressedTextureUrl.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/compressed-textures/lib/loaders/resolveCompressedTextureUrl.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/compressed-textures/lib/parsers/index.mjs":
-/*!**********************************************************************!*\
- !*** ./node_modules/@pixi/compressed-textures/lib/parsers/index.mjs ***!
- \**********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ FORMATS_TO_COMPONENTS: () => (/* reexport safe */ _parseKTX_mjs__WEBPACK_IMPORTED_MODULE_1__.FORMATS_TO_COMPONENTS),\n/* harmony export */ TYPES_TO_BYTES_PER_COMPONENT: () => (/* reexport safe */ _parseKTX_mjs__WEBPACK_IMPORTED_MODULE_1__.TYPES_TO_BYTES_PER_COMPONENT),\n/* harmony export */ TYPES_TO_BYTES_PER_PIXEL: () => (/* reexport safe */ _parseKTX_mjs__WEBPACK_IMPORTED_MODULE_1__.TYPES_TO_BYTES_PER_PIXEL),\n/* harmony export */ parseDDS: () => (/* reexport safe */ _parseDDS_mjs__WEBPACK_IMPORTED_MODULE_0__.parseDDS),\n/* harmony export */ parseKTX: () => (/* reexport safe */ _parseKTX_mjs__WEBPACK_IMPORTED_MODULE_1__.parseKTX)\n/* harmony export */ });\n/* harmony import */ var _parseDDS_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./parseDDS.mjs */ \"./node_modules/@pixi/compressed-textures/lib/parsers/parseDDS.mjs\");\n/* harmony import */ var _parseKTX_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parseKTX.mjs */ \"./node_modules/@pixi/compressed-textures/lib/parsers/parseKTX.mjs\");\n\n\n\n//# sourceMappingURL=index.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/compressed-textures/lib/parsers/index.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/compressed-textures/lib/parsers/parseDDS.mjs":
-/*!*************************************************************************!*\
- !*** ./node_modules/@pixi/compressed-textures/lib/parsers/parseDDS.mjs ***!
- \*************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ parseDDS: () => (/* binding */ parseDDS)\n/* harmony export */ });\n/* harmony import */ var _const_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../const.mjs */ \"./node_modules/@pixi/compressed-textures/lib/const.mjs\");\n/* harmony import */ var _resources_index_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../resources/index.mjs */ \"./node_modules/@pixi/compressed-textures/lib/resources/index.mjs\");\n/* harmony import */ var _resources_CompressedTextureResource_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../resources/CompressedTextureResource.mjs */ \"./node_modules/@pixi/compressed-textures/lib/resources/CompressedTextureResource.mjs\");\n\n\n\nconst DDS_MAGIC_SIZE = 4, DDS_HEADER_SIZE = 124, DDS_HEADER_PF_SIZE = 32, DDS_HEADER_DX10_SIZE = 20, DDS_MAGIC = 542327876, DDS_FIELDS = {\n SIZE: 1,\n FLAGS: 2,\n HEIGHT: 3,\n WIDTH: 4,\n MIPMAP_COUNT: 7,\n PIXEL_FORMAT: 19\n}, DDS_PF_FIELDS = {\n SIZE: 0,\n FLAGS: 1,\n FOURCC: 2,\n RGB_BITCOUNT: 3,\n R_BIT_MASK: 4,\n G_BIT_MASK: 5,\n B_BIT_MASK: 6,\n A_BIT_MASK: 7\n}, DDS_DX10_FIELDS = {\n DXGI_FORMAT: 0,\n RESOURCE_DIMENSION: 1,\n MISC_FLAG: 2,\n ARRAY_SIZE: 3,\n MISC_FLAGS2: 4\n}, PF_FLAGS = 1, DDPF_ALPHA = 2, DDPF_FOURCC = 4, DDPF_RGB = 64, DDPF_YUV = 512, DDPF_LUMINANCE = 131072, FOURCC_DXT1 = 827611204, FOURCC_DXT3 = 861165636, FOURCC_DXT5 = 894720068, FOURCC_DX10 = 808540228, DDS_RESOURCE_MISC_TEXTURECUBE = 4, FOURCC_TO_FORMAT = {\n [FOURCC_DXT1]: _const_mjs__WEBPACK_IMPORTED_MODULE_0__.INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT1_EXT,\n [FOURCC_DXT3]: _const_mjs__WEBPACK_IMPORTED_MODULE_0__.INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n [FOURCC_DXT5]: _const_mjs__WEBPACK_IMPORTED_MODULE_0__.INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT5_EXT\n}, DXGI_TO_FORMAT = {\n // WEBGL_compressed_texture_s3tc\n 70: _const_mjs__WEBPACK_IMPORTED_MODULE_0__.INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT1_EXT,\n 71: _const_mjs__WEBPACK_IMPORTED_MODULE_0__.INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT1_EXT,\n 73: _const_mjs__WEBPACK_IMPORTED_MODULE_0__.INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n 74: _const_mjs__WEBPACK_IMPORTED_MODULE_0__.INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n 76: _const_mjs__WEBPACK_IMPORTED_MODULE_0__.INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT5_EXT,\n 77: _const_mjs__WEBPACK_IMPORTED_MODULE_0__.INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT5_EXT,\n // WEBGL_compressed_texture_s3tc_srgb\n 72: _const_mjs__WEBPACK_IMPORTED_MODULE_0__.INTERNAL_FORMATS.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,\n 75: _const_mjs__WEBPACK_IMPORTED_MODULE_0__.INTERNAL_FORMATS.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,\n 78: _const_mjs__WEBPACK_IMPORTED_MODULE_0__.INTERNAL_FORMATS.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT\n};\nfunction parseDDS(arrayBuffer) {\n const data = new Uint32Array(arrayBuffer);\n if (data[0] !== DDS_MAGIC)\n throw new Error(\"Invalid DDS file magic word\");\n const header = new Uint32Array(arrayBuffer, 0, DDS_HEADER_SIZE / Uint32Array.BYTES_PER_ELEMENT), height = header[DDS_FIELDS.HEIGHT], width = header[DDS_FIELDS.WIDTH], mipmapCount = header[DDS_FIELDS.MIPMAP_COUNT], pixelFormat = new Uint32Array(\n arrayBuffer,\n DDS_FIELDS.PIXEL_FORMAT * Uint32Array.BYTES_PER_ELEMENT,\n DDS_HEADER_PF_SIZE / Uint32Array.BYTES_PER_ELEMENT\n ), formatFlags = pixelFormat[PF_FLAGS];\n if (formatFlags & DDPF_FOURCC) {\n const fourCC = pixelFormat[DDS_PF_FIELDS.FOURCC];\n if (fourCC !== FOURCC_DX10) {\n const internalFormat2 = FOURCC_TO_FORMAT[fourCC], dataOffset2 = DDS_MAGIC_SIZE + DDS_HEADER_SIZE, texData = new Uint8Array(arrayBuffer, dataOffset2);\n return [new _resources_CompressedTextureResource_mjs__WEBPACK_IMPORTED_MODULE_2__.CompressedTextureResource(texData, {\n format: internalFormat2,\n width,\n height,\n levels: mipmapCount\n // CompressedTextureResource will separate the levelBuffers for us!\n })];\n }\n const dx10Offset = DDS_MAGIC_SIZE + DDS_HEADER_SIZE, dx10Header = new Uint32Array(\n data.buffer,\n dx10Offset,\n DDS_HEADER_DX10_SIZE / Uint32Array.BYTES_PER_ELEMENT\n ), dxgiFormat = dx10Header[DDS_DX10_FIELDS.DXGI_FORMAT], resourceDimension = dx10Header[DDS_DX10_FIELDS.RESOURCE_DIMENSION], miscFlag = dx10Header[DDS_DX10_FIELDS.MISC_FLAG], arraySize = dx10Header[DDS_DX10_FIELDS.ARRAY_SIZE], internalFormat = DXGI_TO_FORMAT[dxgiFormat];\n if (internalFormat === void 0)\n throw new Error(`DDSParser cannot parse texture data with DXGI format ${dxgiFormat}`);\n if (miscFlag === DDS_RESOURCE_MISC_TEXTURECUBE)\n throw new Error(\"DDSParser does not support cubemap textures\");\n if (resourceDimension === 6)\n throw new Error(\"DDSParser does not supported 3D texture data\");\n const imageBuffers = new Array(), dataOffset = DDS_MAGIC_SIZE + DDS_HEADER_SIZE + DDS_HEADER_DX10_SIZE;\n if (arraySize === 1)\n imageBuffers.push(new Uint8Array(arrayBuffer, dataOffset));\n else {\n const pixelSize = _const_mjs__WEBPACK_IMPORTED_MODULE_0__.INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[internalFormat];\n let imageSize = 0, levelWidth = width, levelHeight = height;\n for (let i = 0; i < mipmapCount; i++) {\n const alignedLevelWidth = Math.max(1, levelWidth + 3 & -4), alignedLevelHeight = Math.max(1, levelHeight + 3 & -4), levelSize = alignedLevelWidth * alignedLevelHeight * pixelSize;\n imageSize += levelSize, levelWidth = levelWidth >>> 1, levelHeight = levelHeight >>> 1;\n }\n let imageOffset = dataOffset;\n for (let i = 0; i < arraySize; i++)\n imageBuffers.push(new Uint8Array(arrayBuffer, imageOffset, imageSize)), imageOffset += imageSize;\n }\n return imageBuffers.map((buffer) => new _resources_CompressedTextureResource_mjs__WEBPACK_IMPORTED_MODULE_2__.CompressedTextureResource(buffer, {\n format: internalFormat,\n width,\n height,\n levels: mipmapCount\n }));\n }\n throw formatFlags & DDPF_RGB ? new Error(\"DDSParser does not support uncompressed texture data.\") : formatFlags & DDPF_YUV ? new Error(\"DDSParser does not supported YUV uncompressed texture data.\") : formatFlags & DDPF_LUMINANCE ? new Error(\"DDSParser does not support single-channel (lumninance) texture data!\") : formatFlags & DDPF_ALPHA ? new Error(\"DDSParser does not support single-channel (alpha) texture data!\") : new Error(\"DDSParser failed to load a texture file due to an unknown reason!\");\n}\n\n//# sourceMappingURL=parseDDS.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/compressed-textures/lib/parsers/parseDDS.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/compressed-textures/lib/parsers/parseKTX.mjs":
-/*!*************************************************************************!*\
- !*** ./node_modules/@pixi/compressed-textures/lib/parsers/parseKTX.mjs ***!
- \*************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ FORMATS_TO_COMPONENTS: () => (/* binding */ FORMATS_TO_COMPONENTS),\n/* harmony export */ TYPES_TO_BYTES_PER_COMPONENT: () => (/* binding */ TYPES_TO_BYTES_PER_COMPONENT),\n/* harmony export */ TYPES_TO_BYTES_PER_PIXEL: () => (/* binding */ TYPES_TO_BYTES_PER_PIXEL),\n/* harmony export */ parseKTX: () => (/* binding */ parseKTX)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n/* harmony import */ var _const_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../const.mjs */ \"./node_modules/@pixi/compressed-textures/lib/const.mjs\");\n/* harmony import */ var _resources_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../resources/index.mjs */ \"./node_modules/@pixi/compressed-textures/lib/resources/index.mjs\");\n/* harmony import */ var _resources_CompressedTextureResource_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../resources/CompressedTextureResource.mjs */ \"./node_modules/@pixi/compressed-textures/lib/resources/CompressedTextureResource.mjs\");\n\n\n\n\nconst FILE_IDENTIFIER = [171, 75, 84, 88, 32, 49, 49, 187, 13, 10, 26, 10], ENDIANNESS = 67305985, KTX_FIELDS = {\n FILE_IDENTIFIER: 0,\n ENDIANNESS: 12,\n GL_TYPE: 16,\n GL_TYPE_SIZE: 20,\n GL_FORMAT: 24,\n GL_INTERNAL_FORMAT: 28,\n GL_BASE_INTERNAL_FORMAT: 32,\n PIXEL_WIDTH: 36,\n PIXEL_HEIGHT: 40,\n PIXEL_DEPTH: 44,\n NUMBER_OF_ARRAY_ELEMENTS: 48,\n NUMBER_OF_FACES: 52,\n NUMBER_OF_MIPMAP_LEVELS: 56,\n BYTES_OF_KEY_VALUE_DATA: 60\n}, FILE_HEADER_SIZE = 64, TYPES_TO_BYTES_PER_COMPONENT = {\n [_pixi_core__WEBPACK_IMPORTED_MODULE_0__.TYPES.UNSIGNED_BYTE]: 1,\n [_pixi_core__WEBPACK_IMPORTED_MODULE_0__.TYPES.UNSIGNED_SHORT]: 2,\n [_pixi_core__WEBPACK_IMPORTED_MODULE_0__.TYPES.INT]: 4,\n [_pixi_core__WEBPACK_IMPORTED_MODULE_0__.TYPES.UNSIGNED_INT]: 4,\n [_pixi_core__WEBPACK_IMPORTED_MODULE_0__.TYPES.FLOAT]: 4,\n [_pixi_core__WEBPACK_IMPORTED_MODULE_0__.TYPES.HALF_FLOAT]: 8\n}, FORMATS_TO_COMPONENTS = {\n [_pixi_core__WEBPACK_IMPORTED_MODULE_0__.FORMATS.RGBA]: 4,\n [_pixi_core__WEBPACK_IMPORTED_MODULE_0__.FORMATS.RGB]: 3,\n [_pixi_core__WEBPACK_IMPORTED_MODULE_0__.FORMATS.RG]: 2,\n [_pixi_core__WEBPACK_IMPORTED_MODULE_0__.FORMATS.RED]: 1,\n [_pixi_core__WEBPACK_IMPORTED_MODULE_0__.FORMATS.LUMINANCE]: 1,\n [_pixi_core__WEBPACK_IMPORTED_MODULE_0__.FORMATS.LUMINANCE_ALPHA]: 2,\n [_pixi_core__WEBPACK_IMPORTED_MODULE_0__.FORMATS.ALPHA]: 1\n}, TYPES_TO_BYTES_PER_PIXEL = {\n [_pixi_core__WEBPACK_IMPORTED_MODULE_0__.TYPES.UNSIGNED_SHORT_4_4_4_4]: 2,\n [_pixi_core__WEBPACK_IMPORTED_MODULE_0__.TYPES.UNSIGNED_SHORT_5_5_5_1]: 2,\n [_pixi_core__WEBPACK_IMPORTED_MODULE_0__.TYPES.UNSIGNED_SHORT_5_6_5]: 2\n};\nfunction parseKTX(url, arrayBuffer, loadKeyValueData = !1) {\n const dataView = new DataView(arrayBuffer);\n if (!validate(url, dataView))\n return null;\n const littleEndian = dataView.getUint32(KTX_FIELDS.ENDIANNESS, !0) === ENDIANNESS, glType = dataView.getUint32(KTX_FIELDS.GL_TYPE, littleEndian), glFormat = dataView.getUint32(KTX_FIELDS.GL_FORMAT, littleEndian), glInternalFormat = dataView.getUint32(KTX_FIELDS.GL_INTERNAL_FORMAT, littleEndian), pixelWidth = dataView.getUint32(KTX_FIELDS.PIXEL_WIDTH, littleEndian), pixelHeight = dataView.getUint32(KTX_FIELDS.PIXEL_HEIGHT, littleEndian) || 1, pixelDepth = dataView.getUint32(KTX_FIELDS.PIXEL_DEPTH, littleEndian) || 1, numberOfArrayElements = dataView.getUint32(KTX_FIELDS.NUMBER_OF_ARRAY_ELEMENTS, littleEndian) || 1, numberOfFaces = dataView.getUint32(KTX_FIELDS.NUMBER_OF_FACES, littleEndian), numberOfMipmapLevels = dataView.getUint32(KTX_FIELDS.NUMBER_OF_MIPMAP_LEVELS, littleEndian), bytesOfKeyValueData = dataView.getUint32(KTX_FIELDS.BYTES_OF_KEY_VALUE_DATA, littleEndian);\n if (pixelHeight === 0 || pixelDepth !== 1)\n throw new Error(\"Only 2D textures are supported\");\n if (numberOfFaces !== 1)\n throw new Error(\"CubeTextures are not supported by KTXLoader yet!\");\n if (numberOfArrayElements !== 1)\n throw new Error(\"WebGL does not support array textures\");\n const blockWidth = 4, blockHeight = 4, alignedWidth = pixelWidth + 3 & -4, alignedHeight = pixelHeight + 3 & -4, imageBuffers = new Array(numberOfArrayElements);\n let imagePixels = pixelWidth * pixelHeight;\n glType === 0 && (imagePixels = alignedWidth * alignedHeight);\n let imagePixelByteSize;\n if (glType !== 0 ? TYPES_TO_BYTES_PER_COMPONENT[glType] ? imagePixelByteSize = TYPES_TO_BYTES_PER_COMPONENT[glType] * FORMATS_TO_COMPONENTS[glFormat] : imagePixelByteSize = TYPES_TO_BYTES_PER_PIXEL[glType] : imagePixelByteSize = _const_mjs__WEBPACK_IMPORTED_MODULE_1__.INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[glInternalFormat], imagePixelByteSize === void 0)\n throw new Error(\"Unable to resolve the pixel format stored in the *.ktx file!\");\n const kvData = loadKeyValueData ? parseKvData(dataView, bytesOfKeyValueData, littleEndian) : null;\n let mipByteSize = imagePixels * imagePixelByteSize, mipWidth = pixelWidth, mipHeight = pixelHeight, alignedMipWidth = alignedWidth, alignedMipHeight = alignedHeight, imageOffset = FILE_HEADER_SIZE + bytesOfKeyValueData;\n for (let mipmapLevel = 0; mipmapLevel < numberOfMipmapLevels; mipmapLevel++) {\n const imageSize = dataView.getUint32(imageOffset, littleEndian);\n let elementOffset = imageOffset + 4;\n for (let arrayElement = 0; arrayElement < numberOfArrayElements; arrayElement++) {\n let mips = imageBuffers[arrayElement];\n mips || (mips = imageBuffers[arrayElement] = new Array(numberOfMipmapLevels)), mips[mipmapLevel] = {\n levelID: mipmapLevel,\n // don't align mipWidth when texture not compressed! (glType not zero)\n levelWidth: numberOfMipmapLevels > 1 || glType !== 0 ? mipWidth : alignedMipWidth,\n levelHeight: numberOfMipmapLevels > 1 || glType !== 0 ? mipHeight : alignedMipHeight,\n levelBuffer: new Uint8Array(arrayBuffer, elementOffset, mipByteSize)\n }, elementOffset += mipByteSize;\n }\n imageOffset += imageSize + 4, imageOffset = imageOffset % 4 !== 0 ? imageOffset + 4 - imageOffset % 4 : imageOffset, mipWidth = mipWidth >> 1 || 1, mipHeight = mipHeight >> 1 || 1, alignedMipWidth = mipWidth + blockWidth - 1 & ~(blockWidth - 1), alignedMipHeight = mipHeight + blockHeight - 1 & ~(blockHeight - 1), mipByteSize = alignedMipWidth * alignedMipHeight * imagePixelByteSize;\n }\n return glType !== 0 ? {\n uncompressed: imageBuffers.map((levelBuffers) => {\n let buffer = levelBuffers[0].levelBuffer, convertToInt = !1;\n return glType === _pixi_core__WEBPACK_IMPORTED_MODULE_0__.TYPES.FLOAT ? buffer = new Float32Array(\n levelBuffers[0].levelBuffer.buffer,\n levelBuffers[0].levelBuffer.byteOffset,\n levelBuffers[0].levelBuffer.byteLength / 4\n ) : glType === _pixi_core__WEBPACK_IMPORTED_MODULE_0__.TYPES.UNSIGNED_INT ? (convertToInt = !0, buffer = new Uint32Array(\n levelBuffers[0].levelBuffer.buffer,\n levelBuffers[0].levelBuffer.byteOffset,\n levelBuffers[0].levelBuffer.byteLength / 4\n )) : glType === _pixi_core__WEBPACK_IMPORTED_MODULE_0__.TYPES.INT && (convertToInt = !0, buffer = new Int32Array(\n levelBuffers[0].levelBuffer.buffer,\n levelBuffers[0].levelBuffer.byteOffset,\n levelBuffers[0].levelBuffer.byteLength / 4\n )), {\n resource: new _pixi_core__WEBPACK_IMPORTED_MODULE_0__.BufferResource(\n buffer,\n {\n width: levelBuffers[0].levelWidth,\n height: levelBuffers[0].levelHeight\n }\n ),\n type: glType,\n format: convertToInt ? convertFormatToInteger(glFormat) : glFormat\n };\n }),\n kvData\n } : {\n compressed: imageBuffers.map((levelBuffers) => new _resources_CompressedTextureResource_mjs__WEBPACK_IMPORTED_MODULE_3__.CompressedTextureResource(null, {\n format: glInternalFormat,\n width: pixelWidth,\n height: pixelHeight,\n levels: numberOfMipmapLevels,\n levelBuffers\n })),\n kvData\n };\n}\nfunction validate(url, dataView) {\n for (let i = 0; i < FILE_IDENTIFIER.length; i++)\n if (dataView.getUint8(i) !== FILE_IDENTIFIER[i])\n return console.error(`${url} is not a valid *.ktx file!`), !1;\n return !0;\n}\nfunction convertFormatToInteger(format) {\n switch (format) {\n case _pixi_core__WEBPACK_IMPORTED_MODULE_0__.FORMATS.RGBA:\n return _pixi_core__WEBPACK_IMPORTED_MODULE_0__.FORMATS.RGBA_INTEGER;\n case _pixi_core__WEBPACK_IMPORTED_MODULE_0__.FORMATS.RGB:\n return _pixi_core__WEBPACK_IMPORTED_MODULE_0__.FORMATS.RGB_INTEGER;\n case _pixi_core__WEBPACK_IMPORTED_MODULE_0__.FORMATS.RG:\n return _pixi_core__WEBPACK_IMPORTED_MODULE_0__.FORMATS.RG_INTEGER;\n case _pixi_core__WEBPACK_IMPORTED_MODULE_0__.FORMATS.RED:\n return _pixi_core__WEBPACK_IMPORTED_MODULE_0__.FORMATS.RED_INTEGER;\n default:\n return format;\n }\n}\nfunction parseKvData(dataView, bytesOfKeyValueData, littleEndian) {\n const kvData = /* @__PURE__ */ new Map();\n let bytesIntoKeyValueData = 0;\n for (; bytesIntoKeyValueData < bytesOfKeyValueData; ) {\n const keyAndValueByteSize = dataView.getUint32(FILE_HEADER_SIZE + bytesIntoKeyValueData, littleEndian), keyAndValueByteOffset = FILE_HEADER_SIZE + bytesIntoKeyValueData + 4, valuePadding = 3 - (keyAndValueByteSize + 3) % 4;\n if (keyAndValueByteSize === 0 || keyAndValueByteSize > bytesOfKeyValueData - bytesIntoKeyValueData) {\n console.error(\"KTXLoader: keyAndValueByteSize out of bounds\");\n break;\n }\n let keyNulByte = 0;\n for (; keyNulByte < keyAndValueByteSize && dataView.getUint8(keyAndValueByteOffset + keyNulByte) !== 0; keyNulByte++)\n ;\n if (keyNulByte === -1) {\n console.error(\"KTXLoader: Failed to find null byte terminating kvData key\");\n break;\n }\n const key = new TextDecoder().decode(\n new Uint8Array(dataView.buffer, keyAndValueByteOffset, keyNulByte)\n ), value = new DataView(\n dataView.buffer,\n keyAndValueByteOffset + keyNulByte + 1,\n keyAndValueByteSize - keyNulByte - 1\n );\n kvData.set(key, value), bytesIntoKeyValueData += 4 + keyAndValueByteSize + valuePadding;\n }\n return kvData;\n}\n\n//# sourceMappingURL=parseKTX.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/compressed-textures/lib/parsers/parseKTX.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/compressed-textures/lib/resources/BlobResource.mjs":
-/*!*******************************************************************************!*\
- !*** ./node_modules/@pixi/compressed-textures/lib/resources/BlobResource.mjs ***!
- \*******************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BlobResource: () => (/* binding */ BlobResource)\n/* harmony export */ });\n/* harmony import */ var _pixi_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/core */ \"./node_modules/@pixi/core/lib/index.mjs\");\n\nclass BlobResource extends _pixi_core__WEBPACK_IMPORTED_MODULE_0__.BufferResource {\n /**\n * @param source - The buffer/URL of the texture file.\n * @param {PIXI.IBlobResourceOptions} [options]\n * @param {boolean} [options.autoLoad=false] - Whether to fetch the data immediately;\n * you can fetch it later via {@link PIXI.BlobResource#load}.\n * @param {number} [options.width=1] - The width in pixels.\n * @param {number} [options.height=1] - The height in pixels.\n * @param {1|2|4|8} [options.unpackAlignment=4] - The alignment of the pixel rows.\n */\n constructor(source, options = { width: 1, height: 1, autoLoad: !0 }) {\n let origin, data;\n typeof source == \"string\" ? (origin = source, data = new Uint8Array()) : (origin = null, data = source), super(data, options), this.origin = origin, this.buffer = data ? new _pixi_core__WEBPACK_IMPORTED_MODULE_0__.ViewableBuffer(data) : null, this._load = null, this.loaded = !1, this.origin !== null && options.autoLoad !== !1 && this.load(), this.origin === null && this.buffer && (this._load = Promise.resolve(this), this.loaded = !0, this.onBlobLoaded(this.buffer.rawBinaryData));\n }\n onBlobLoaded(_data) {\n }\n /** Loads the blob */\n load() {\n return this._load ? this._load : (this._load = fetch(this.origin).then((response) => response.blob()).then((blob) => blob.arrayBuffer()).then((arrayBuffer) => (this.data = new Uint32Array(arrayBuffer), this.buffer = new _pixi_core__WEBPACK_IMPORTED_MODULE_0__.ViewableBuffer(arrayBuffer), this.loaded = !0, this.onBlobLoaded(arrayBuffer), this.update(), this)), this._load);\n }\n}\n\n//# sourceMappingURL=BlobResource.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/compressed-textures/lib/resources/BlobResource.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/compressed-textures/lib/resources/CompressedTextureResource.mjs":
-/*!********************************************************************************************!*\
- !*** ./node_modules/@pixi/compressed-textures/lib/resources/CompressedTextureResource.mjs ***!
- \********************************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CompressedTextureResource: () => (/* binding */ CompressedTextureResource)\n/* harmony export */ });\n/* harmony import */ var _const_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../const.mjs */ \"./node_modules/@pixi/compressed-textures/lib/const.mjs\");\n/* harmony import */ var _BlobResource_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./BlobResource.mjs */ \"./node_modules/@pixi/compressed-textures/lib/resources/BlobResource.mjs\");\n\n\nclass CompressedTextureResource extends _BlobResource_mjs__WEBPACK_IMPORTED_MODULE_1__.BlobResource {\n /**\n * @param source - the buffer/URL holding the compressed texture data\n * @param options\n * @param {PIXI.INTERNAL_FORMATS} options.format - the compression format\n * @param {number} options.width - the image width in pixels.\n * @param {number} options.height - the image height in pixels.\n * @param {number} [options.level=1] - the mipmap levels stored in the compressed texture, including level 0.\n * @param {number} [options.levelBuffers] - the buffers for each mipmap level. `CompressedTextureResource` can allows you\n * to pass `null` for `source`, for cases where each level is stored in non-contiguous memory.\n */\n constructor(source, options) {\n super(source, options), this.format = options.format, this.levels = options.levels || 1, this._width = options.width, this._height = options.height, this._extension = CompressedTextureResource._formatToExtension(this.format), (options.levelBuffers || this.buffer) && (this._levelBuffers = options.levelBuffers || CompressedTextureResource._createLevelBuffers(\n source instanceof Uint8Array ? source : this.buffer.uint8View,\n this.format,\n this.levels,\n 4,\n 4,\n // PVRTC has 8x4 blocks in 2bpp mode\n this.width,\n this.height\n ));\n }\n /**\n * @override\n * @param renderer - A reference to the current renderer\n * @param _texture - the texture\n * @param _glTexture - texture instance for this webgl context\n */\n upload(renderer, _texture, _glTexture) {\n const gl = renderer.gl;\n if (!renderer.context.extensions[this._extension])\n throw new Error(`${this._extension} textures are not supported on the current machine`);\n if (!this._levelBuffers)\n return !1;\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 4);\n for (let i = 0, j = this.levels; i < j; i++) {\n const { levelID, levelWidth, levelHeight, levelBuffer } = this._levelBuffers[i];\n gl.compressedTexImage2D(gl.TEXTURE_2D, levelID, this.format, levelWidth, levelHeight, 0, levelBuffer);\n }\n return !0;\n }\n /** @protected */\n onBlobLoaded() {\n this._levelBuffers = CompressedTextureResource._createLevelBuffers(\n this.buffer.uint8View,\n this.format,\n this.levels,\n 4,\n 4,\n // PVRTC has 8x4 blocks in 2bpp mode\n this.width,\n this.height\n );\n }\n /**\n * Returns the key (to ContextSystem#extensions) for the WebGL extension supporting the compression format\n * @private\n * @param format - the compression format to get the extension for.\n */\n static _formatToExtension(format) {\n if (format >= 33776 && format <= 33779)\n return \"s3tc\";\n if (format >= 37488 && format <= 37497)\n return \"etc\";\n if (format >= 35840 && format <= 35843)\n return \"pvrtc\";\n if (format >= 36196)\n return \"etc1\";\n if (format >= 35986 && format <= 34798)\n return \"atc\";\n throw new Error(\"Invalid (compressed) texture format given!\");\n }\n /**\n * Pre-creates buffer views for each mipmap level\n * @private\n * @param buffer -\n * @param format - compression formats\n * @param levels - mipmap levels\n * @param blockWidth -\n * @param blockHeight -\n * @param imageWidth - width of the image in pixels\n * @param imageHeight - height of the image in pixels\n */\n static _createLevelBuffers(buffer, format, levels, blockWidth, blockHeight, imageWidth, imageHeight) {\n const buffers = new Array(levels);\n let offset = buffer.byteOffset, levelWidth = imageWidth, levelHeight = imageHeight, alignedLevelWidth = levelWidth + blockWidth - 1 & ~(blockWidth - 1), alignedLevelHeight = levelHeight + blockHeight - 1 & ~(blockHeight - 1), levelSize = alignedLevelWidth * alignedLevelHeight * _const_mjs__WEBPACK_IMPORTED_MODULE_0__.INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[format];\n for (let i = 0; i < levels; i++)\n buffers[i] = {\n levelID: i,\n levelWidth: levels > 1 ? levelWidth : alignedLevelWidth,\n levelHeight: levels > 1 ? levelHeight : alignedLevelHeight,\n levelBuffer: new Uint8Array(buffer.buffer, offset, levelSize)\n }, offset += levelSize, levelWidth = levelWidth >> 1 || 1, levelHeight = levelHeight >> 1 || 1, alignedLevelWidth = levelWidth + blockWidth - 1 & ~(blockWidth - 1), alignedLevelHeight = levelHeight + blockHeight - 1 & ~(blockHeight - 1), levelSize = alignedLevelWidth * alignedLevelHeight * _const_mjs__WEBPACK_IMPORTED_MODULE_0__.INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[format];\n return buffers;\n }\n}\n\n//# sourceMappingURL=CompressedTextureResource.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/compressed-textures/lib/resources/CompressedTextureResource.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/compressed-textures/lib/resources/index.mjs":
-/*!************************************************************************!*\
- !*** ./node_modules/@pixi/compressed-textures/lib/resources/index.mjs ***!
- \************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BlobResource: () => (/* reexport safe */ _BlobResource_mjs__WEBPACK_IMPORTED_MODULE_0__.BlobResource),\n/* harmony export */ CompressedTextureResource: () => (/* reexport safe */ _CompressedTextureResource_mjs__WEBPACK_IMPORTED_MODULE_1__.CompressedTextureResource)\n/* harmony export */ });\n/* harmony import */ var _BlobResource_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BlobResource.mjs */ \"./node_modules/@pixi/compressed-textures/lib/resources/BlobResource.mjs\");\n/* harmony import */ var _CompressedTextureResource_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CompressedTextureResource.mjs */ \"./node_modules/@pixi/compressed-textures/lib/resources/CompressedTextureResource.mjs\");\n\n\n\n//# sourceMappingURL=index.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/compressed-textures/lib/resources/index.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/constants/lib/index.mjs":
-/*!****************************************************!*\
- !*** ./node_modules/@pixi/constants/lib/index.mjs ***!
- \****************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ALPHA_MODES: () => (/* binding */ ALPHA_MODES),\n/* harmony export */ BLEND_MODES: () => (/* binding */ BLEND_MODES),\n/* harmony export */ BUFFER_BITS: () => (/* binding */ BUFFER_BITS),\n/* harmony export */ BUFFER_TYPE: () => (/* binding */ BUFFER_TYPE),\n/* harmony export */ CLEAR_MODES: () => (/* binding */ CLEAR_MODES),\n/* harmony export */ COLOR_MASK_BITS: () => (/* binding */ COLOR_MASK_BITS),\n/* harmony export */ DRAW_MODES: () => (/* binding */ DRAW_MODES),\n/* harmony export */ ENV: () => (/* binding */ ENV),\n/* harmony export */ FORMATS: () => (/* binding */ FORMATS),\n/* harmony export */ GC_MODES: () => (/* binding */ GC_MODES),\n/* harmony export */ MASK_TYPES: () => (/* binding */ MASK_TYPES),\n/* harmony export */ MIPMAP_MODES: () => (/* binding */ MIPMAP_MODES),\n/* harmony export */ MSAA_QUALITY: () => (/* binding */ MSAA_QUALITY),\n/* harmony export */ PRECISION: () => (/* binding */ PRECISION),\n/* harmony export */ RENDERER_TYPE: () => (/* binding */ RENDERER_TYPE),\n/* harmony export */ SAMPLER_TYPES: () => (/* binding */ SAMPLER_TYPES),\n/* harmony export */ SCALE_MODES: () => (/* binding */ SCALE_MODES),\n/* harmony export */ TARGETS: () => (/* binding */ TARGETS),\n/* harmony export */ TYPES: () => (/* binding */ TYPES),\n/* harmony export */ WRAP_MODES: () => (/* binding */ WRAP_MODES)\n/* harmony export */ });\nvar ENV = /* @__PURE__ */ ((ENV2) => (ENV2[ENV2.WEBGL_LEGACY = 0] = \"WEBGL_LEGACY\", ENV2[ENV2.WEBGL = 1] = \"WEBGL\", ENV2[ENV2.WEBGL2 = 2] = \"WEBGL2\", ENV2))(ENV || {}), RENDERER_TYPE = /* @__PURE__ */ ((RENDERER_TYPE2) => (RENDERER_TYPE2[RENDERER_TYPE2.UNKNOWN = 0] = \"UNKNOWN\", RENDERER_TYPE2[RENDERER_TYPE2.WEBGL = 1] = \"WEBGL\", RENDERER_TYPE2[RENDERER_TYPE2.CANVAS = 2] = \"CANVAS\", RENDERER_TYPE2))(RENDERER_TYPE || {}), BUFFER_BITS = /* @__PURE__ */ ((BUFFER_BITS2) => (BUFFER_BITS2[BUFFER_BITS2.COLOR = 16384] = \"COLOR\", BUFFER_BITS2[BUFFER_BITS2.DEPTH = 256] = \"DEPTH\", BUFFER_BITS2[BUFFER_BITS2.STENCIL = 1024] = \"STENCIL\", BUFFER_BITS2))(BUFFER_BITS || {}), BLEND_MODES = /* @__PURE__ */ ((BLEND_MODES2) => (BLEND_MODES2[BLEND_MODES2.NORMAL = 0] = \"NORMAL\", BLEND_MODES2[BLEND_MODES2.ADD = 1] = \"ADD\", BLEND_MODES2[BLEND_MODES2.MULTIPLY = 2] = \"MULTIPLY\", BLEND_MODES2[BLEND_MODES2.SCREEN = 3] = \"SCREEN\", BLEND_MODES2[BLEND_MODES2.OVERLAY = 4] = \"OVERLAY\", BLEND_MODES2[BLEND_MODES2.DARKEN = 5] = \"DARKEN\", BLEND_MODES2[BLEND_MODES2.LIGHTEN = 6] = \"LIGHTEN\", BLEND_MODES2[BLEND_MODES2.COLOR_DODGE = 7] = \"COLOR_DODGE\", BLEND_MODES2[BLEND_MODES2.COLOR_BURN = 8] = \"COLOR_BURN\", BLEND_MODES2[BLEND_MODES2.HARD_LIGHT = 9] = \"HARD_LIGHT\", BLEND_MODES2[BLEND_MODES2.SOFT_LIGHT = 10] = \"SOFT_LIGHT\", BLEND_MODES2[BLEND_MODES2.DIFFERENCE = 11] = \"DIFFERENCE\", BLEND_MODES2[BLEND_MODES2.EXCLUSION = 12] = \"EXCLUSION\", BLEND_MODES2[BLEND_MODES2.HUE = 13] = \"HUE\", BLEND_MODES2[BLEND_MODES2.SATURATION = 14] = \"SATURATION\", BLEND_MODES2[BLEND_MODES2.COLOR = 15] = \"COLOR\", BLEND_MODES2[BLEND_MODES2.LUMINOSITY = 16] = \"LUMINOSITY\", BLEND_MODES2[BLEND_MODES2.NORMAL_NPM = 17] = \"NORMAL_NPM\", BLEND_MODES2[BLEND_MODES2.ADD_NPM = 18] = \"ADD_NPM\", BLEND_MODES2[BLEND_MODES2.SCREEN_NPM = 19] = \"SCREEN_NPM\", BLEND_MODES2[BLEND_MODES2.NONE = 20] = \"NONE\", BLEND_MODES2[BLEND_MODES2.SRC_OVER = 0] = \"SRC_OVER\", BLEND_MODES2[BLEND_MODES2.SRC_IN = 21] = \"SRC_IN\", BLEND_MODES2[BLEND_MODES2.SRC_OUT = 22] = \"SRC_OUT\", BLEND_MODES2[BLEND_MODES2.SRC_ATOP = 23] = \"SRC_ATOP\", BLEND_MODES2[BLEND_MODES2.DST_OVER = 24] = \"DST_OVER\", BLEND_MODES2[BLEND_MODES2.DST_IN = 25] = \"DST_IN\", BLEND_MODES2[BLEND_MODES2.DST_OUT = 26] = \"DST_OUT\", BLEND_MODES2[BLEND_MODES2.DST_ATOP = 27] = \"DST_ATOP\", BLEND_MODES2[BLEND_MODES2.ERASE = 26] = \"ERASE\", BLEND_MODES2[BLEND_MODES2.SUBTRACT = 28] = \"SUBTRACT\", BLEND_MODES2[BLEND_MODES2.XOR = 29] = \"XOR\", BLEND_MODES2))(BLEND_MODES || {}), DRAW_MODES = /* @__PURE__ */ ((DRAW_MODES2) => (DRAW_MODES2[DRAW_MODES2.POINTS = 0] = \"POINTS\", DRAW_MODES2[DRAW_MODES2.LINES = 1] = \"LINES\", DRAW_MODES2[DRAW_MODES2.LINE_LOOP = 2] = \"LINE_LOOP\", DRAW_MODES2[DRAW_MODES2.LINE_STRIP = 3] = \"LINE_STRIP\", DRAW_MODES2[DRAW_MODES2.TRIANGLES = 4] = \"TRIANGLES\", DRAW_MODES2[DRAW_MODES2.TRIANGLE_STRIP = 5] = \"TRIANGLE_STRIP\", DRAW_MODES2[DRAW_MODES2.TRIANGLE_FAN = 6] = \"TRIANGLE_FAN\", DRAW_MODES2))(DRAW_MODES || {}), FORMATS = /* @__PURE__ */ ((FORMATS2) => (FORMATS2[FORMATS2.RGBA = 6408] = \"RGBA\", FORMATS2[FORMATS2.RGB = 6407] = \"RGB\", FORMATS2[FORMATS2.RG = 33319] = \"RG\", FORMATS2[FORMATS2.RED = 6403] = \"RED\", FORMATS2[FORMATS2.RGBA_INTEGER = 36249] = \"RGBA_INTEGER\", FORMATS2[FORMATS2.RGB_INTEGER = 36248] = \"RGB_INTEGER\", FORMATS2[FORMATS2.RG_INTEGER = 33320] = \"RG_INTEGER\", FORMATS2[FORMATS2.RED_INTEGER = 36244] = \"RED_INTEGER\", FORMATS2[FORMATS2.ALPHA = 6406] = \"ALPHA\", FORMATS2[FORMATS2.LUMINANCE = 6409] = \"LUMINANCE\", FORMATS2[FORMATS2.LUMINANCE_ALPHA = 6410] = \"LUMINANCE_ALPHA\", FORMATS2[FORMATS2.DEPTH_COMPONENT = 6402] = \"DEPTH_COMPONENT\", FORMATS2[FORMATS2.DEPTH_STENCIL = 34041] = \"DEPTH_STENCIL\", FORMATS2))(FORMATS || {}), TARGETS = /* @__PURE__ */ ((TARGETS2) => (TARGETS2[TARGETS2.TEXTURE_2D = 3553] = \"TEXTURE_2D\", TARGETS2[TARGETS2.TEXTURE_CUBE_MAP = 34067] = \"TEXTURE_CUBE_MAP\", TARGETS2[TARGETS2.TEXTURE_2D_ARRAY = 35866] = \"TEXTURE_2D_ARRAY\", TARGETS2[TARGETS2.TEXTURE_CUBE_MAP_POSITIVE_X = 34069] = \"TEXTURE_CUBE_MAP_POSITIVE_X\", TARGETS2[TARGETS2.TEXTURE_CUBE_MAP_NEGATIVE_X = 34070] = \"TEXTURE_CUBE_MAP_NEGATIVE_X\", TARGETS2[TARGETS2.TEXTURE_CUBE_MAP_POSITIVE_Y = 34071] = \"TEXTURE_CUBE_MAP_POSITIVE_Y\", TARGETS2[TARGETS2.TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072] = \"TEXTURE_CUBE_MAP_NEGATIVE_Y\", TARGETS2[TARGETS2.TEXTURE_CUBE_MAP_POSITIVE_Z = 34073] = \"TEXTURE_CUBE_MAP_POSITIVE_Z\", TARGETS2[TARGETS2.TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074] = \"TEXTURE_CUBE_MAP_NEGATIVE_Z\", TARGETS2))(TARGETS || {}), TYPES = /* @__PURE__ */ ((TYPES2) => (TYPES2[TYPES2.UNSIGNED_BYTE = 5121] = \"UNSIGNED_BYTE\", TYPES2[TYPES2.UNSIGNED_SHORT = 5123] = \"UNSIGNED_SHORT\", TYPES2[TYPES2.UNSIGNED_SHORT_5_6_5 = 33635] = \"UNSIGNED_SHORT_5_6_5\", TYPES2[TYPES2.UNSIGNED_SHORT_4_4_4_4 = 32819] = \"UNSIGNED_SHORT_4_4_4_4\", TYPES2[TYPES2.UNSIGNED_SHORT_5_5_5_1 = 32820] = \"UNSIGNED_SHORT_5_5_5_1\", TYPES2[TYPES2.UNSIGNED_INT = 5125] = \"UNSIGNED_INT\", TYPES2[TYPES2.UNSIGNED_INT_10F_11F_11F_REV = 35899] = \"UNSIGNED_INT_10F_11F_11F_REV\", TYPES2[TYPES2.UNSIGNED_INT_2_10_10_10_REV = 33640] = \"UNSIGNED_INT_2_10_10_10_REV\", TYPES2[TYPES2.UNSIGNED_INT_24_8 = 34042] = \"UNSIGNED_INT_24_8\", TYPES2[TYPES2.UNSIGNED_INT_5_9_9_9_REV = 35902] = \"UNSIGNED_INT_5_9_9_9_REV\", TYPES2[TYPES2.BYTE = 5120] = \"BYTE\", TYPES2[TYPES2.SHORT = 5122] = \"SHORT\", TYPES2[TYPES2.INT = 5124] = \"INT\", TYPES2[TYPES2.FLOAT = 5126] = \"FLOAT\", TYPES2[TYPES2.FLOAT_32_UNSIGNED_INT_24_8_REV = 36269] = \"FLOAT_32_UNSIGNED_INT_24_8_REV\", TYPES2[TYPES2.HALF_FLOAT = 36193] = \"HALF_FLOAT\", TYPES2))(TYPES || {}), SAMPLER_TYPES = /* @__PURE__ */ ((SAMPLER_TYPES2) => (SAMPLER_TYPES2[SAMPLER_TYPES2.FLOAT = 0] = \"FLOAT\", SAMPLER_TYPES2[SAMPLER_TYPES2.INT = 1] = \"INT\", SAMPLER_TYPES2[SAMPLER_TYPES2.UINT = 2] = \"UINT\", SAMPLER_TYPES2))(SAMPLER_TYPES || {}), SCALE_MODES = /* @__PURE__ */ ((SCALE_MODES2) => (SCALE_MODES2[SCALE_MODES2.NEAREST = 0] = \"NEAREST\", SCALE_MODES2[SCALE_MODES2.LINEAR = 1] = \"LINEAR\", SCALE_MODES2))(SCALE_MODES || {}), WRAP_MODES = /* @__PURE__ */ ((WRAP_MODES2) => (WRAP_MODES2[WRAP_MODES2.CLAMP = 33071] = \"CLAMP\", WRAP_MODES2[WRAP_MODES2.REPEAT = 10497] = \"REPEAT\", WRAP_MODES2[WRAP_MODES2.MIRRORED_REPEAT = 33648] = \"MIRRORED_REPEAT\", WRAP_MODES2))(WRAP_MODES || {}), MIPMAP_MODES = /* @__PURE__ */ ((MIPMAP_MODES2) => (MIPMAP_MODES2[MIPMAP_MODES2.OFF = 0] = \"OFF\", MIPMAP_MODES2[MIPMAP_MODES2.POW2 = 1] = \"POW2\", MIPMAP_MODES2[MIPMAP_MODES2.ON = 2] = \"ON\", MIPMAP_MODES2[MIPMAP_MODES2.ON_MANUAL = 3] = \"ON_MANUAL\", MIPMAP_MODES2))(MIPMAP_MODES || {}), ALPHA_MODES = /* @__PURE__ */ ((ALPHA_MODES2) => (ALPHA_MODES2[ALPHA_MODES2.NPM = 0] = \"NPM\", ALPHA_MODES2[ALPHA_MODES2.UNPACK = 1] = \"UNPACK\", ALPHA_MODES2[ALPHA_MODES2.PMA = 2] = \"PMA\", ALPHA_MODES2[ALPHA_MODES2.NO_PREMULTIPLIED_ALPHA = 0] = \"NO_PREMULTIPLIED_ALPHA\", ALPHA_MODES2[ALPHA_MODES2.PREMULTIPLY_ON_UPLOAD = 1] = \"PREMULTIPLY_ON_UPLOAD\", ALPHA_MODES2[ALPHA_MODES2.PREMULTIPLIED_ALPHA = 2] = \"PREMULTIPLIED_ALPHA\", ALPHA_MODES2))(ALPHA_MODES || {}), CLEAR_MODES = /* @__PURE__ */ ((CLEAR_MODES2) => (CLEAR_MODES2[CLEAR_MODES2.NO = 0] = \"NO\", CLEAR_MODES2[CLEAR_MODES2.YES = 1] = \"YES\", CLEAR_MODES2[CLEAR_MODES2.AUTO = 2] = \"AUTO\", CLEAR_MODES2[CLEAR_MODES2.BLEND = 0] = \"BLEND\", CLEAR_MODES2[CLEAR_MODES2.CLEAR = 1] = \"CLEAR\", CLEAR_MODES2[CLEAR_MODES2.BLIT = 2] = \"BLIT\", CLEAR_MODES2))(CLEAR_MODES || {}), GC_MODES = /* @__PURE__ */ ((GC_MODES2) => (GC_MODES2[GC_MODES2.AUTO = 0] = \"AUTO\", GC_MODES2[GC_MODES2.MANUAL = 1] = \"MANUAL\", GC_MODES2))(GC_MODES || {}), PRECISION = /* @__PURE__ */ ((PRECISION2) => (PRECISION2.LOW = \"lowp\", PRECISION2.MEDIUM = \"mediump\", PRECISION2.HIGH = \"highp\", PRECISION2))(PRECISION || {}), MASK_TYPES = /* @__PURE__ */ ((MASK_TYPES2) => (MASK_TYPES2[MASK_TYPES2.NONE = 0] = \"NONE\", MASK_TYPES2[MASK_TYPES2.SCISSOR = 1] = \"SCISSOR\", MASK_TYPES2[MASK_TYPES2.STENCIL = 2] = \"STENCIL\", MASK_TYPES2[MASK_TYPES2.SPRITE = 3] = \"SPRITE\", MASK_TYPES2[MASK_TYPES2.COLOR = 4] = \"COLOR\", MASK_TYPES2))(MASK_TYPES || {}), COLOR_MASK_BITS = /* @__PURE__ */ ((COLOR_MASK_BITS2) => (COLOR_MASK_BITS2[COLOR_MASK_BITS2.RED = 1] = \"RED\", COLOR_MASK_BITS2[COLOR_MASK_BITS2.GREEN = 2] = \"GREEN\", COLOR_MASK_BITS2[COLOR_MASK_BITS2.BLUE = 4] = \"BLUE\", COLOR_MASK_BITS2[COLOR_MASK_BITS2.ALPHA = 8] = \"ALPHA\", COLOR_MASK_BITS2))(COLOR_MASK_BITS || {}), MSAA_QUALITY = /* @__PURE__ */ ((MSAA_QUALITY2) => (MSAA_QUALITY2[MSAA_QUALITY2.NONE = 0] = \"NONE\", MSAA_QUALITY2[MSAA_QUALITY2.LOW = 2] = \"LOW\", MSAA_QUALITY2[MSAA_QUALITY2.MEDIUM = 4] = \"MEDIUM\", MSAA_QUALITY2[MSAA_QUALITY2.HIGH = 8] = \"HIGH\", MSAA_QUALITY2))(MSAA_QUALITY || {}), BUFFER_TYPE = /* @__PURE__ */ ((BUFFER_TYPE2) => (BUFFER_TYPE2[BUFFER_TYPE2.ELEMENT_ARRAY_BUFFER = 34963] = \"ELEMENT_ARRAY_BUFFER\", BUFFER_TYPE2[BUFFER_TYPE2.ARRAY_BUFFER = 34962] = \"ARRAY_BUFFER\", BUFFER_TYPE2[BUFFER_TYPE2.UNIFORM_BUFFER = 35345] = \"UNIFORM_BUFFER\", BUFFER_TYPE2))(BUFFER_TYPE || {});\n\n//# sourceMappingURL=index.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/constants/lib/index.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/IRenderer.mjs":
-/*!***************************************************!*\
- !*** ./node_modules/@pixi/core/lib/IRenderer.mjs ***!
- \***************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n\n//# sourceMappingURL=IRenderer.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/IRenderer.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/Renderer.mjs":
-/*!**************************************************!*\
- !*** ./node_modules/@pixi/core/lib/Renderer.mjs ***!
- \**************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Renderer: () => (/* binding */ Renderer)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _pixi_extensions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/extensions */ \"./node_modules/@pixi/extensions/lib/index.mjs\");\n/* harmony import */ var _pixi_math__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @pixi/math */ \"./node_modules/@pixi/math/lib/index.mjs\");\n/* harmony import */ var _pixi_settings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @pixi/settings */ \"./node_modules/@pixi/settings/lib/index.mjs\");\n/* harmony import */ var _pixi_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @pixi/utils */ \"./node_modules/@pixi/utils/lib/index.mjs\");\n/* harmony import */ var _shader_UniformGroup_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./shader/UniformGroup.mjs */ \"./node_modules/@pixi/core/lib/shader/UniformGroup.mjs\");\n/* harmony import */ var _system_SystemManager_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./system/SystemManager.mjs */ \"./node_modules/@pixi/core/lib/system/SystemManager.mjs\");\n\n\n\n\n\n\n\nconst _Renderer = class _Renderer2 extends _system_SystemManager_mjs__WEBPACK_IMPORTED_MODULE_6__.SystemManager {\n /**\n * @param {PIXI.IRendererOptions} [options] - See {@link PIXI.settings.RENDER_OPTIONS} for defaults.\n */\n constructor(options) {\n super(), this.type = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.RENDERER_TYPE.WEBGL, options = Object.assign({}, _pixi_settings__WEBPACK_IMPORTED_MODULE_3__.settings.RENDER_OPTIONS, options), this.gl = null, this.CONTEXT_UID = 0, this.globalUniforms = new _shader_UniformGroup_mjs__WEBPACK_IMPORTED_MODULE_5__.UniformGroup({\n projectionMatrix: new _pixi_math__WEBPACK_IMPORTED_MODULE_2__.Matrix()\n }, !0);\n const systemConfig = {\n runners: [\n \"init\",\n \"destroy\",\n \"contextChange\",\n \"resolutionChange\",\n \"reset\",\n \"update\",\n \"postrender\",\n \"prerender\",\n \"resize\"\n ],\n systems: _Renderer2.__systems,\n priority: [\n \"_view\",\n \"textureGenerator\",\n \"background\",\n \"_plugin\",\n \"startup\",\n // low level WebGL systems\n \"context\",\n \"state\",\n \"texture\",\n \"buffer\",\n \"geometry\",\n \"framebuffer\",\n \"transformFeedback\",\n // high level pixi specific rendering\n \"mask\",\n \"scissor\",\n \"stencil\",\n \"projection\",\n \"textureGC\",\n \"filter\",\n \"renderTexture\",\n \"batch\",\n \"objectRenderer\",\n \"_multisample\"\n ]\n };\n this.setup(systemConfig), \"useContextAlpha\" in options && ((0,_pixi_utils__WEBPACK_IMPORTED_MODULE_4__.deprecation)(\"7.0.0\", \"options.useContextAlpha is deprecated, use options.premultipliedAlpha and options.backgroundAlpha instead\"), options.premultipliedAlpha = options.useContextAlpha && options.useContextAlpha !== \"notMultiplied\", options.backgroundAlpha = options.useContextAlpha === !1 ? 1 : options.backgroundAlpha), this._plugin.rendererPlugins = _Renderer2.__plugins, this.options = options, this.startup.run(this.options);\n }\n /**\n * Create renderer if WebGL is available. Overrideable\n * by the **@pixi/canvas-renderer** package to allow fallback.\n * throws error if WebGL is not available.\n * @param options\n * @private\n */\n static test(options) {\n return options?.forceCanvas ? !1 : (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_4__.isWebGLSupported)();\n }\n /**\n * Renders the object to its WebGL view.\n * @param displayObject - The object to be rendered.\n * @param {object} [options] - Object to use for render options.\n * @param {PIXI.RenderTexture} [options.renderTexture] - The render texture to render to.\n * @param {boolean} [options.clear=true] - Should the canvas be cleared before the new render.\n * @param {PIXI.Matrix} [options.transform] - A transform to apply to the render texture before rendering.\n * @param {boolean} [options.skipUpdateTransform=false] - Should we skip the update transform pass?\n */\n render(displayObject, options) {\n this.objectRenderer.render(displayObject, options);\n }\n /**\n * Resizes the WebGL view to the specified width and height.\n * @param desiredScreenWidth - The desired width of the screen.\n * @param desiredScreenHeight - The desired height of the screen.\n */\n resize(desiredScreenWidth, desiredScreenHeight) {\n this._view.resizeView(desiredScreenWidth, desiredScreenHeight);\n }\n /**\n * Resets the WebGL state so you can render things however you fancy!\n * @returns Returns itself.\n */\n reset() {\n return this.runners.reset.emit(), this;\n }\n /** Clear the frame buffer. */\n clear() {\n this.renderTexture.bind(), this.renderTexture.clear();\n }\n /**\n * Removes everything from the renderer (event listeners, spritebatch, etc...)\n * @param [removeView=false] - Removes the Canvas element from the DOM.\n * See: https://github.com/pixijs/pixijs/issues/2233\n */\n destroy(removeView = !1) {\n this.runners.destroy.items.reverse(), this.emitWithCustomOptions(this.runners.destroy, {\n _view: removeView\n }), super.destroy();\n }\n /** Collection of plugins */\n get plugins() {\n return this._plugin.plugins;\n }\n /** The number of msaa samples of the canvas. */\n get multisample() {\n return this._multisample.multisample;\n }\n /**\n * Same as view.width, actual number of pixels in the canvas by horizontal.\n * @member {number}\n * @readonly\n * @default 800\n */\n get width() {\n return this._view.element.width;\n }\n /**\n * Same as view.height, actual number of pixels in the canvas by vertical.\n * @default 600\n */\n get height() {\n return this._view.element.height;\n }\n /** The resolution / device pixel ratio of the renderer. */\n get resolution() {\n return this._view.resolution;\n }\n set resolution(value) {\n this._view.resolution = value, this.runners.resolutionChange.emit(value);\n }\n /** Whether CSS dimensions of canvas view should be resized to screen dimensions automatically. */\n get autoDensity() {\n return this._view.autoDensity;\n }\n /** The canvas element that everything is drawn to.*/\n get view() {\n return this._view.element;\n }\n /**\n * Measurements of the screen. (0, 0, screenWidth, screenHeight).\n *\n * Its safe to use as filterArea or hitArea for the whole stage.\n * @member {PIXI.Rectangle}\n */\n get screen() {\n return this._view.screen;\n }\n /** the last object rendered by the renderer. Useful for other plugins like interaction managers */\n get lastObjectRendered() {\n return this.objectRenderer.lastObjectRendered;\n }\n /** Flag if we are rendering to the screen vs renderTexture */\n get renderingToScreen() {\n return this.objectRenderer.renderingToScreen;\n }\n /** When logging Pixi to the console, this is the name we will show */\n get rendererLogId() {\n return `WebGL ${this.context.webGLVersion}`;\n }\n /**\n * This sets weather the screen is totally cleared between each frame withthe background color and alpha\n * @deprecated since 7.0.0\n */\n get clearBeforeRender() {\n return (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_4__.deprecation)(\"7.0.0\", \"renderer.clearBeforeRender has been deprecated, please use renderer.background.clearBeforeRender instead.\"), this.background.clearBeforeRender;\n }\n /**\n * Pass-thru setting for the canvas' context `alpha` property. This is typically\n * not something you need to fiddle with. If you want transparency, use `backgroundAlpha`.\n * @deprecated since 7.0.0\n * @member {boolean}\n */\n get useContextAlpha() {\n return (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_4__.deprecation)(\"7.0.0\", \"renderer.useContextAlpha has been deprecated, please use renderer.context.premultipliedAlpha instead.\"), this.context.useContextAlpha;\n }\n /**\n * readonly drawing buffer preservation\n * we can only know this if Pixi created the context\n * @deprecated since 7.0.0\n */\n get preserveDrawingBuffer() {\n return (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_4__.deprecation)(\"7.0.0\", \"renderer.preserveDrawingBuffer has been deprecated, we cannot truly know this unless pixi created the context\"), this.context.preserveDrawingBuffer;\n }\n /**\n * The background color to fill if not transparent\n * @member {number}\n * @deprecated since 7.0.0\n */\n get backgroundColor() {\n return (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_4__.deprecation)(\"7.0.0\", \"renderer.backgroundColor has been deprecated, use renderer.background.color instead.\"), this.background.color;\n }\n set backgroundColor(value) {\n (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_4__.deprecation)(\"7.0.0\", \"renderer.backgroundColor has been deprecated, use renderer.background.color instead.\"), this.background.color = value;\n }\n /**\n * The background color alpha. Setting this to 0 will make the canvas transparent.\n * @member {number}\n * @deprecated since 7.0.0\n */\n get backgroundAlpha() {\n return (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_4__.deprecation)(\"7.0.0\", \"renderer.backgroundAlpha has been deprecated, use renderer.background.alpha instead.\"), this.background.alpha;\n }\n /**\n * @deprecated since 7.0.0\n */\n set backgroundAlpha(value) {\n (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_4__.deprecation)(\"7.0.0\", \"renderer.backgroundAlpha has been deprecated, use renderer.background.alpha instead.\"), this.background.alpha = value;\n }\n /**\n * @deprecated since 7.0.0\n */\n get powerPreference() {\n return (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_4__.deprecation)(\"7.0.0\", \"renderer.powerPreference has been deprecated, we can only know this if pixi creates the context\"), this.context.powerPreference;\n }\n /**\n * Useful function that returns a texture of the display object that can then be used to create sprites\n * This can be quite useful if your displayObject is complicated and needs to be reused multiple times.\n * @param displayObject - The displayObject the object will be generated from.\n * @param {IGenerateTextureOptions} options - Generate texture options.\n * @param {PIXI.Rectangle} options.region - The region of the displayObject, that shall be rendered,\n * if no region is specified, defaults to the local bounds of the displayObject.\n * @param {number} [options.resolution] - If not given, the renderer's resolution is used.\n * @param {PIXI.MSAA_QUALITY} [options.multisample] - If not given, the renderer's multisample is used.\n * @returns A texture of the graphics object.\n */\n generateTexture(displayObject, options) {\n return this.textureGenerator.generateTexture(displayObject, options);\n }\n};\n_Renderer.extension = {\n type: _pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.ExtensionType.Renderer,\n priority: 1\n}, /**\n* Collection of installed plugins. These are included by default in PIXI, but can be excluded\n* by creating a custom build. Consult the README for more information about creating custom\n* builds and excluding plugins.\n* @private\n*/\n_Renderer.__plugins = {}, /**\n* The collection of installed systems.\n* @private\n*/\n_Renderer.__systems = {};\nlet Renderer = _Renderer;\n_pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.extensions.handleByMap(_pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.ExtensionType.RendererPlugin, Renderer.__plugins);\n_pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.extensions.handleByMap(_pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.ExtensionType.RendererSystem, Renderer.__systems);\n_pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.extensions.add(Renderer);\n\n//# sourceMappingURL=Renderer.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/Renderer.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/autoDetectRenderer.mjs":
-/*!************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/autoDetectRenderer.mjs ***!
- \************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ autoDetectRenderer: () => (/* binding */ autoDetectRenderer)\n/* harmony export */ });\n/* harmony import */ var _pixi_extensions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/extensions */ \"./node_modules/@pixi/extensions/lib/index.mjs\");\n\nconst renderers = [];\n_pixi_extensions__WEBPACK_IMPORTED_MODULE_0__.extensions.handleByList(_pixi_extensions__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.Renderer, renderers);\nfunction autoDetectRenderer(options) {\n for (const RendererType of renderers)\n if (RendererType.test(options))\n return new RendererType(options);\n throw new Error(\"Unable to auto-detect a suitable renderer.\");\n}\n\n//# sourceMappingURL=autoDetectRenderer.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/autoDetectRenderer.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/background/BackgroundSystem.mjs":
-/*!*********************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/background/BackgroundSystem.mjs ***!
- \*********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BackgroundSystem: () => (/* binding */ BackgroundSystem)\n/* harmony export */ });\n/* harmony import */ var _pixi_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/color */ \"./node_modules/@pixi/color/lib/index.mjs\");\n/* harmony import */ var _pixi_extensions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/extensions */ \"./node_modules/@pixi/extensions/lib/index.mjs\");\n\n\nclass BackgroundSystem {\n constructor() {\n this.clearBeforeRender = !0, this._backgroundColor = new _pixi_color__WEBPACK_IMPORTED_MODULE_0__.Color(0), this.alpha = 1;\n }\n /**\n * initiates the background system\n * @param {PIXI.IRendererOptions} options - the options for the background colors\n */\n init(options) {\n this.clearBeforeRender = options.clearBeforeRender;\n const { backgroundColor, background, backgroundAlpha } = options, color = background ?? backgroundColor;\n color !== void 0 && (this.color = color), this.alpha = backgroundAlpha;\n }\n /**\n * The background color to fill if not transparent.\n * @member {PIXI.ColorSource}\n */\n get color() {\n return this._backgroundColor.value;\n }\n set color(value) {\n this._backgroundColor.setValue(value);\n }\n /**\n * The background color alpha. Setting this to 0 will make the canvas transparent.\n * @member {number}\n */\n get alpha() {\n return this._backgroundColor.alpha;\n }\n set alpha(value) {\n this._backgroundColor.setAlpha(value);\n }\n /** The background color object. */\n get backgroundColor() {\n return this._backgroundColor;\n }\n destroy() {\n }\n}\nBackgroundSystem.defaultOptions = {\n /**\n * {@link PIXI.IRendererOptions.backgroundAlpha}\n * @default 1\n * @memberof PIXI.settings.RENDER_OPTIONS\n */\n backgroundAlpha: 1,\n /**\n * {@link PIXI.IRendererOptions.backgroundColor}\n * @default 0x000000\n * @memberof PIXI.settings.RENDER_OPTIONS\n */\n backgroundColor: 0,\n /**\n * {@link PIXI.IRendererOptions.clearBeforeRender}\n * @default true\n * @memberof PIXI.settings.RENDER_OPTIONS\n */\n clearBeforeRender: !0\n}, /** @ignore */\nBackgroundSystem.extension = {\n type: [\n _pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.ExtensionType.RendererSystem,\n _pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.ExtensionType.CanvasRendererSystem\n ],\n name: \"background\"\n};\n_pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.extensions.add(BackgroundSystem);\n\n//# sourceMappingURL=BackgroundSystem.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/background/BackgroundSystem.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/batch/BatchDrawCall.mjs":
-/*!*************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/batch/BatchDrawCall.mjs ***!
- \*************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BatchDrawCall: () => (/* binding */ BatchDrawCall)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n\nclass BatchDrawCall {\n constructor() {\n this.texArray = null, this.blend = 0, this.type = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.DRAW_MODES.TRIANGLES, this.start = 0, this.size = 0, this.data = null;\n }\n}\n\n//# sourceMappingURL=BatchDrawCall.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/batch/BatchDrawCall.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/batch/BatchGeometry.mjs":
-/*!*************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/batch/BatchGeometry.mjs ***!
- \*************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BatchGeometry: () => (/* binding */ BatchGeometry)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _geometry_Buffer_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry/Buffer.mjs */ \"./node_modules/@pixi/core/lib/geometry/Buffer.mjs\");\n/* harmony import */ var _geometry_Geometry_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry/Geometry.mjs */ \"./node_modules/@pixi/core/lib/geometry/Geometry.mjs\");\n\n\n\nclass BatchGeometry extends _geometry_Geometry_mjs__WEBPACK_IMPORTED_MODULE_2__.Geometry {\n /**\n * @param {boolean} [_static=false] - Optimization flag, where `false`\n * is updated every frame, `true` doesn't change frame-to-frame.\n */\n constructor(_static = !1) {\n super(), this._buffer = new _geometry_Buffer_mjs__WEBPACK_IMPORTED_MODULE_1__.Buffer(null, _static, !1), this._indexBuffer = new _geometry_Buffer_mjs__WEBPACK_IMPORTED_MODULE_1__.Buffer(null, _static, !0), this.addAttribute(\"aVertexPosition\", this._buffer, 2, !1, _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.TYPES.FLOAT).addAttribute(\"aTextureCoord\", this._buffer, 2, !1, _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.TYPES.FLOAT).addAttribute(\"aColor\", this._buffer, 4, !0, _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.TYPES.UNSIGNED_BYTE).addAttribute(\"aTextureId\", this._buffer, 1, !0, _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.TYPES.FLOAT).addIndex(this._indexBuffer);\n }\n}\n\n//# sourceMappingURL=BatchGeometry.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/batch/BatchGeometry.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/batch/BatchRenderer.mjs":
-/*!*************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/batch/BatchRenderer.mjs ***!
- \*************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BatchRenderer: () => (/* binding */ BatchRenderer)\n/* harmony export */ });\n/* harmony import */ var _pixi_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/color */ \"./node_modules/@pixi/color/lib/index.mjs\");\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _pixi_extensions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @pixi/extensions */ \"./node_modules/@pixi/extensions/lib/index.mjs\");\n/* harmony import */ var _pixi_settings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @pixi/settings */ \"./node_modules/@pixi/settings/lib/index.mjs\");\n/* harmony import */ var _pixi_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @pixi/utils */ \"./node_modules/@pixi/utils/lib/index.mjs\");\n/* harmony import */ var _geometry_ViewableBuffer_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../geometry/ViewableBuffer.mjs */ \"./node_modules/@pixi/core/lib/geometry/ViewableBuffer.mjs\");\n/* harmony import */ var _shader_utils_checkMaxIfStatementsInShader_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../shader/utils/checkMaxIfStatementsInShader.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/checkMaxIfStatementsInShader.mjs\");\n/* harmony import */ var _state_State_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../state/State.mjs */ \"./node_modules/@pixi/core/lib/state/State.mjs\");\n/* harmony import */ var _textures_BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../textures/BaseTexture.mjs */ \"./node_modules/@pixi/core/lib/textures/BaseTexture.mjs\");\n/* harmony import */ var _BatchDrawCall_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./BatchDrawCall.mjs */ \"./node_modules/@pixi/core/lib/batch/BatchDrawCall.mjs\");\n/* harmony import */ var _BatchGeometry_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./BatchGeometry.mjs */ \"./node_modules/@pixi/core/lib/batch/BatchGeometry.mjs\");\n/* harmony import */ var _BatchShaderGenerator_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./BatchShaderGenerator.mjs */ \"./node_modules/@pixi/core/lib/batch/BatchShaderGenerator.mjs\");\n/* harmony import */ var _BatchTextureArray_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./BatchTextureArray.mjs */ \"./node_modules/@pixi/core/lib/batch/BatchTextureArray.mjs\");\n/* harmony import */ var _canUploadSameBuffer_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./canUploadSameBuffer.mjs */ \"./node_modules/@pixi/core/lib/batch/canUploadSameBuffer.mjs\");\n/* harmony import */ var _maxRecommendedTextures_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./maxRecommendedTextures.mjs */ \"./node_modules/@pixi/core/lib/batch/maxRecommendedTextures.mjs\");\n/* harmony import */ var _ObjectRenderer_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./ObjectRenderer.mjs */ \"./node_modules/@pixi/core/lib/batch/ObjectRenderer.mjs\");\n/* harmony import */ var _texture_frag_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./texture.frag.mjs */ \"./node_modules/@pixi/core/lib/batch/texture.frag.mjs\");\n/* harmony import */ var _texture_vert_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./texture.vert.mjs */ \"./node_modules/@pixi/core/lib/batch/texture.vert.mjs\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst _BatchRenderer = class _BatchRenderer2 extends _ObjectRenderer_mjs__WEBPACK_IMPORTED_MODULE_15__.ObjectRenderer {\n /**\n * This will hook onto the renderer's `contextChange`\n * and `prerender` signals.\n * @param {PIXI.Renderer} renderer - The renderer this works for.\n */\n constructor(renderer) {\n super(renderer), this.setShaderGenerator(), this.geometryClass = _BatchGeometry_mjs__WEBPACK_IMPORTED_MODULE_10__.BatchGeometry, this.vertexSize = 6, this.state = _state_State_mjs__WEBPACK_IMPORTED_MODULE_7__.State.for2d(), this.size = _BatchRenderer2.defaultBatchSize * 4, this._vertexCount = 0, this._indexCount = 0, this._bufferedElements = [], this._bufferedTextures = [], this._bufferSize = 0, this._shader = null, this._packedGeometries = [], this._packedGeometryPoolSize = 2, this._flushId = 0, this._aBuffers = {}, this._iBuffers = {}, this.maxTextures = 1, this.renderer.on(\"prerender\", this.onPrerender, this), renderer.runners.contextChange.add(this), this._dcIndex = 0, this._aIndex = 0, this._iIndex = 0, this._attributeBuffer = null, this._indexBuffer = null, this._tempBoundTextures = [];\n }\n /**\n * The maximum textures that this device supports.\n * @static\n * @default 32\n */\n static get defaultMaxTextures() {\n return this._defaultMaxTextures = this._defaultMaxTextures ?? (0,_maxRecommendedTextures_mjs__WEBPACK_IMPORTED_MODULE_14__.maxRecommendedTextures)(32), this._defaultMaxTextures;\n }\n static set defaultMaxTextures(value) {\n this._defaultMaxTextures = value;\n }\n /**\n * Can we upload the same buffer in a single frame?\n * @static\n */\n static get canUploadSameBuffer() {\n return this._canUploadSameBuffer = this._canUploadSameBuffer ?? (0,_canUploadSameBuffer_mjs__WEBPACK_IMPORTED_MODULE_13__.canUploadSameBuffer)(), this._canUploadSameBuffer;\n }\n static set canUploadSameBuffer(value) {\n this._canUploadSameBuffer = value;\n }\n /**\n * @see PIXI.BatchRenderer#maxTextures\n * @deprecated since 7.1.0\n * @readonly\n */\n get MAX_TEXTURES() {\n return (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_4__.deprecation)(\"7.1.0\", \"BatchRenderer#MAX_TEXTURES renamed to BatchRenderer#maxTextures\"), this.maxTextures;\n }\n /**\n * The default vertex shader source\n * @readonly\n */\n static get defaultVertexSrc() {\n return _texture_vert_mjs__WEBPACK_IMPORTED_MODULE_17__[\"default\"];\n }\n /**\n * The default fragment shader source\n * @readonly\n */\n static get defaultFragmentTemplate() {\n return _texture_frag_mjs__WEBPACK_IMPORTED_MODULE_16__[\"default\"];\n }\n /**\n * Set the shader generator.\n * @param {object} [options]\n * @param {string} [options.vertex=PIXI.BatchRenderer.defaultVertexSrc] - Vertex shader source\n * @param {string} [options.fragment=PIXI.BatchRenderer.defaultFragmentTemplate] - Fragment shader template\n */\n setShaderGenerator({\n vertex = _BatchRenderer2.defaultVertexSrc,\n fragment = _BatchRenderer2.defaultFragmentTemplate\n } = {}) {\n this.shaderGenerator = new _BatchShaderGenerator_mjs__WEBPACK_IMPORTED_MODULE_11__.BatchShaderGenerator(vertex, fragment);\n }\n /**\n * Handles the `contextChange` signal.\n *\n * It calculates `this.maxTextures` and allocating the packed-geometry object pool.\n */\n contextChange() {\n const gl = this.renderer.gl;\n _pixi_settings__WEBPACK_IMPORTED_MODULE_3__.settings.PREFER_ENV === _pixi_constants__WEBPACK_IMPORTED_MODULE_1__.ENV.WEBGL_LEGACY ? this.maxTextures = 1 : (this.maxTextures = Math.min(\n gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS),\n _BatchRenderer2.defaultMaxTextures\n ), this.maxTextures = (0,_shader_utils_checkMaxIfStatementsInShader_mjs__WEBPACK_IMPORTED_MODULE_6__.checkMaxIfStatementsInShader)(\n this.maxTextures,\n gl\n )), this._shader = this.shaderGenerator.generateShader(this.maxTextures);\n for (let i = 0; i < this._packedGeometryPoolSize; i++)\n this._packedGeometries[i] = new this.geometryClass();\n this.initFlushBuffers();\n }\n /** Makes sure that static and dynamic flush pooled objects have correct dimensions. */\n initFlushBuffers() {\n const {\n _drawCallPool,\n _textureArrayPool\n } = _BatchRenderer2, MAX_SPRITES = this.size / 4, MAX_TA = Math.floor(MAX_SPRITES / this.maxTextures) + 1;\n for (; _drawCallPool.length < MAX_SPRITES; )\n _drawCallPool.push(new _BatchDrawCall_mjs__WEBPACK_IMPORTED_MODULE_9__.BatchDrawCall());\n for (; _textureArrayPool.length < MAX_TA; )\n _textureArrayPool.push(new _BatchTextureArray_mjs__WEBPACK_IMPORTED_MODULE_12__.BatchTextureArray());\n for (let i = 0; i < this.maxTextures; i++)\n this._tempBoundTextures[i] = null;\n }\n /** Handles the `prerender` signal. It ensures that flushes start from the first geometry object again. */\n onPrerender() {\n this._flushId = 0;\n }\n /**\n * Buffers the \"batchable\" object. It need not be rendered immediately.\n * @param {PIXI.DisplayObject} element - the element to render when\n * using this renderer\n */\n render(element) {\n element._texture.valid && (this._vertexCount + element.vertexData.length / 2 > this.size && this.flush(), this._vertexCount += element.vertexData.length / 2, this._indexCount += element.indices.length, this._bufferedTextures[this._bufferSize] = element._texture.baseTexture, this._bufferedElements[this._bufferSize++] = element);\n }\n buildTexturesAndDrawCalls() {\n const {\n _bufferedTextures: textures,\n maxTextures\n } = this, textureArrays = _BatchRenderer2._textureArrayPool, batch = this.renderer.batch, boundTextures = this._tempBoundTextures, touch = this.renderer.textureGC.count;\n let TICK = ++_textures_BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_8__.BaseTexture._globalBatch, countTexArrays = 0, texArray = textureArrays[0], start = 0;\n batch.copyBoundTextures(boundTextures, maxTextures);\n for (let i = 0; i < this._bufferSize; ++i) {\n const tex = textures[i];\n textures[i] = null, tex._batchEnabled !== TICK && (texArray.count >= maxTextures && (batch.boundArray(texArray, boundTextures, TICK, maxTextures), this.buildDrawCalls(texArray, start, i), start = i, texArray = textureArrays[++countTexArrays], ++TICK), tex._batchEnabled = TICK, tex.touched = touch, texArray.elements[texArray.count++] = tex);\n }\n texArray.count > 0 && (batch.boundArray(texArray, boundTextures, TICK, maxTextures), this.buildDrawCalls(texArray, start, this._bufferSize), ++countTexArrays, ++TICK);\n for (let i = 0; i < boundTextures.length; i++)\n boundTextures[i] = null;\n _textures_BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_8__.BaseTexture._globalBatch = TICK;\n }\n /**\n * Populating drawcalls for rendering\n * @param texArray\n * @param start\n * @param finish\n */\n buildDrawCalls(texArray, start, finish) {\n const {\n _bufferedElements: elements,\n _attributeBuffer,\n _indexBuffer,\n vertexSize\n } = this, drawCalls = _BatchRenderer2._drawCallPool;\n let dcIndex = this._dcIndex, aIndex = this._aIndex, iIndex = this._iIndex, drawCall = drawCalls[dcIndex];\n drawCall.start = this._iIndex, drawCall.texArray = texArray;\n for (let i = start; i < finish; ++i) {\n const sprite = elements[i], tex = sprite._texture.baseTexture, spriteBlendMode = _pixi_utils__WEBPACK_IMPORTED_MODULE_4__.premultiplyBlendMode[tex.alphaMode ? 1 : 0][sprite.blendMode];\n elements[i] = null, start < i && drawCall.blend !== spriteBlendMode && (drawCall.size = iIndex - drawCall.start, start = i, drawCall = drawCalls[++dcIndex], drawCall.texArray = texArray, drawCall.start = iIndex), this.packInterleavedGeometry(sprite, _attributeBuffer, _indexBuffer, aIndex, iIndex), aIndex += sprite.vertexData.length / 2 * vertexSize, iIndex += sprite.indices.length, drawCall.blend = spriteBlendMode;\n }\n start < finish && (drawCall.size = iIndex - drawCall.start, ++dcIndex), this._dcIndex = dcIndex, this._aIndex = aIndex, this._iIndex = iIndex;\n }\n /**\n * Bind textures for current rendering\n * @param texArray\n */\n bindAndClearTexArray(texArray) {\n const textureSystem = this.renderer.texture;\n for (let j = 0; j < texArray.count; j++)\n textureSystem.bind(texArray.elements[j], texArray.ids[j]), texArray.elements[j] = null;\n texArray.count = 0;\n }\n updateGeometry() {\n const {\n _packedGeometries: packedGeometries,\n _attributeBuffer: attributeBuffer,\n _indexBuffer: indexBuffer\n } = this;\n _BatchRenderer2.canUploadSameBuffer ? (packedGeometries[this._flushId]._buffer.update(attributeBuffer.rawBinaryData), packedGeometries[this._flushId]._indexBuffer.update(indexBuffer), this.renderer.geometry.updateBuffers()) : (this._packedGeometryPoolSize <= this._flushId && (this._packedGeometryPoolSize++, packedGeometries[this._flushId] = new this.geometryClass()), packedGeometries[this._flushId]._buffer.update(attributeBuffer.rawBinaryData), packedGeometries[this._flushId]._indexBuffer.update(indexBuffer), this.renderer.geometry.bind(packedGeometries[this._flushId]), this.renderer.geometry.updateBuffers(), this._flushId++);\n }\n drawBatches() {\n const dcCount = this._dcIndex, { gl, state: stateSystem } = this.renderer, drawCalls = _BatchRenderer2._drawCallPool;\n let curTexArray = null;\n for (let i = 0; i < dcCount; i++) {\n const { texArray, type, size, start, blend } = drawCalls[i];\n curTexArray !== texArray && (curTexArray = texArray, this.bindAndClearTexArray(texArray)), this.state.blendMode = blend, stateSystem.set(this.state), gl.drawElements(type, size, gl.UNSIGNED_SHORT, start * 2);\n }\n }\n /** Renders the content _now_ and empties the current batch. */\n flush() {\n this._vertexCount !== 0 && (this._attributeBuffer = this.getAttributeBuffer(this._vertexCount), this._indexBuffer = this.getIndexBuffer(this._indexCount), this._aIndex = 0, this._iIndex = 0, this._dcIndex = 0, this.buildTexturesAndDrawCalls(), this.updateGeometry(), this.drawBatches(), this._bufferSize = 0, this._vertexCount = 0, this._indexCount = 0);\n }\n /** Starts a new sprite batch. */\n start() {\n this.renderer.state.set(this.state), this.renderer.texture.ensureSamplerType(this.maxTextures), this.renderer.shader.bind(this._shader), _BatchRenderer2.canUploadSameBuffer && this.renderer.geometry.bind(this._packedGeometries[this._flushId]);\n }\n /** Stops and flushes the current batch. */\n stop() {\n this.flush();\n }\n /** Destroys this `BatchRenderer`. It cannot be used again. */\n destroy() {\n for (let i = 0; i < this._packedGeometryPoolSize; i++)\n this._packedGeometries[i] && this._packedGeometries[i].destroy();\n this.renderer.off(\"prerender\", this.onPrerender, this), this._aBuffers = null, this._iBuffers = null, this._packedGeometries = null, this._attributeBuffer = null, this._indexBuffer = null, this._shader && (this._shader.destroy(), this._shader = null), super.destroy();\n }\n /**\n * Fetches an attribute buffer from `this._aBuffers` that can hold atleast `size` floats.\n * @param size - minimum capacity required\n * @returns - buffer than can hold atleast `size` floats\n */\n getAttributeBuffer(size) {\n const roundedP2 = (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_4__.nextPow2)(Math.ceil(size / 8)), roundedSizeIndex = (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_4__.log2)(roundedP2), roundedSize = roundedP2 * 8;\n this._aBuffers.length <= roundedSizeIndex && (this._iBuffers.length = roundedSizeIndex + 1);\n let buffer = this._aBuffers[roundedSize];\n return buffer || (this._aBuffers[roundedSize] = buffer = new _geometry_ViewableBuffer_mjs__WEBPACK_IMPORTED_MODULE_5__.ViewableBuffer(roundedSize * this.vertexSize * 4)), buffer;\n }\n /**\n * Fetches an index buffer from `this._iBuffers` that can\n * have at least `size` capacity.\n * @param size - minimum required capacity\n * @returns - buffer that can fit `size` indices.\n */\n getIndexBuffer(size) {\n const roundedP2 = (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_4__.nextPow2)(Math.ceil(size / 12)), roundedSizeIndex = (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_4__.log2)(roundedP2), roundedSize = roundedP2 * 12;\n this._iBuffers.length <= roundedSizeIndex && (this._iBuffers.length = roundedSizeIndex + 1);\n let buffer = this._iBuffers[roundedSizeIndex];\n return buffer || (this._iBuffers[roundedSizeIndex] = buffer = new Uint16Array(roundedSize)), buffer;\n }\n /**\n * Takes the four batching parameters of `element`, interleaves\n * and pushes them into the batching attribute/index buffers given.\n *\n * It uses these properties: `vertexData` `uvs`, `textureId` and\n * `indicies`. It also uses the \"tint\" of the base-texture, if\n * present.\n * @param {PIXI.DisplayObject} element - element being rendered\n * @param attributeBuffer - attribute buffer.\n * @param indexBuffer - index buffer\n * @param aIndex - number of floats already in the attribute buffer\n * @param iIndex - number of indices already in `indexBuffer`\n */\n packInterleavedGeometry(element, attributeBuffer, indexBuffer, aIndex, iIndex) {\n const {\n uint32View,\n float32View\n } = attributeBuffer, packedVertices = aIndex / this.vertexSize, uvs = element.uvs, indicies = element.indices, vertexData = element.vertexData, textureId = element._texture.baseTexture._batchLocation, alpha = Math.min(element.worldAlpha, 1), argb = _pixi_color__WEBPACK_IMPORTED_MODULE_0__.Color.shared.setValue(element._tintRGB).toPremultiplied(alpha, element._texture.baseTexture.alphaMode > 0);\n for (let i = 0; i < vertexData.length; i += 2)\n float32View[aIndex++] = vertexData[i], float32View[aIndex++] = vertexData[i + 1], float32View[aIndex++] = uvs[i], float32View[aIndex++] = uvs[i + 1], uint32View[aIndex++] = argb, float32View[aIndex++] = textureId;\n for (let i = 0; i < indicies.length; i++)\n indexBuffer[iIndex++] = packedVertices + indicies[i];\n }\n};\n_BatchRenderer.defaultBatchSize = 4096, /** @ignore */\n_BatchRenderer.extension = {\n name: \"batch\",\n type: _pixi_extensions__WEBPACK_IMPORTED_MODULE_2__.ExtensionType.RendererPlugin\n}, /**\n* Pool of `BatchDrawCall` objects that `flush` used\n* to create \"batches\" of the objects being rendered.\n*\n* These are never re-allocated again.\n* Shared between all batch renderers because it can be only one \"flush\" working at the moment.\n* @member {PIXI.BatchDrawCall[]}\n*/\n_BatchRenderer._drawCallPool = [], /**\n* Pool of `BatchDrawCall` objects that `flush` used\n* to create \"batches\" of the objects being rendered.\n*\n* These are never re-allocated again.\n* Shared between all batch renderers because it can be only one \"flush\" working at the moment.\n* @member {PIXI.BatchTextureArray[]}\n*/\n_BatchRenderer._textureArrayPool = [];\nlet BatchRenderer = _BatchRenderer;\n_pixi_extensions__WEBPACK_IMPORTED_MODULE_2__.extensions.add(BatchRenderer);\n\n//# sourceMappingURL=BatchRenderer.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/batch/BatchRenderer.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/batch/BatchShaderGenerator.mjs":
-/*!********************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/batch/BatchShaderGenerator.mjs ***!
- \********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BatchShaderGenerator: () => (/* binding */ BatchShaderGenerator)\n/* harmony export */ });\n/* harmony import */ var _pixi_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/math */ \"./node_modules/@pixi/math/lib/index.mjs\");\n/* harmony import */ var _shader_Program_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shader/Program.mjs */ \"./node_modules/@pixi/core/lib/shader/Program.mjs\");\n/* harmony import */ var _shader_Shader_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shader/Shader.mjs */ \"./node_modules/@pixi/core/lib/shader/Shader.mjs\");\n/* harmony import */ var _shader_UniformGroup_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shader/UniformGroup.mjs */ \"./node_modules/@pixi/core/lib/shader/UniformGroup.mjs\");\n\n\n\n\nclass BatchShaderGenerator {\n /**\n * @param vertexSrc - Vertex shader\n * @param fragTemplate - Fragment shader template\n */\n constructor(vertexSrc, fragTemplate) {\n if (this.vertexSrc = vertexSrc, this.fragTemplate = fragTemplate, this.programCache = {}, this.defaultGroupCache = {}, !fragTemplate.includes(\"%count%\"))\n throw new Error('Fragment template must contain \"%count%\".');\n if (!fragTemplate.includes(\"%forloop%\"))\n throw new Error('Fragment template must contain \"%forloop%\".');\n }\n generateShader(maxTextures) {\n if (!this.programCache[maxTextures]) {\n const sampleValues = new Int32Array(maxTextures);\n for (let i = 0; i < maxTextures; i++)\n sampleValues[i] = i;\n this.defaultGroupCache[maxTextures] = _shader_UniformGroup_mjs__WEBPACK_IMPORTED_MODULE_3__.UniformGroup.from({ uSamplers: sampleValues }, !0);\n let fragmentSrc = this.fragTemplate;\n fragmentSrc = fragmentSrc.replace(/%count%/gi, `${maxTextures}`), fragmentSrc = fragmentSrc.replace(/%forloop%/gi, this.generateSampleSrc(maxTextures)), this.programCache[maxTextures] = new _shader_Program_mjs__WEBPACK_IMPORTED_MODULE_1__.Program(this.vertexSrc, fragmentSrc);\n }\n const uniforms = {\n tint: new Float32Array([1, 1, 1, 1]),\n translationMatrix: new _pixi_math__WEBPACK_IMPORTED_MODULE_0__.Matrix(),\n default: this.defaultGroupCache[maxTextures]\n };\n return new _shader_Shader_mjs__WEBPACK_IMPORTED_MODULE_2__.Shader(this.programCache[maxTextures], uniforms);\n }\n generateSampleSrc(maxTextures) {\n let src = \"\";\n src += `\n`, src += `\n`;\n for (let i = 0; i < maxTextures; i++)\n i > 0 && (src += `\nelse `), i < maxTextures - 1 && (src += `if(vTextureId < ${i}.5)`), src += `\n{`, src += `\n\tcolor = texture2D(uSamplers[${i}], vTextureCoord);`, src += `\n}`;\n return src += `\n`, src += `\n`, src;\n }\n}\n\n//# sourceMappingURL=BatchShaderGenerator.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/batch/BatchShaderGenerator.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/batch/BatchSystem.mjs":
-/*!***********************************************************!*\
- !*** ./node_modules/@pixi/core/lib/batch/BatchSystem.mjs ***!
- \***********************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BatchSystem: () => (/* binding */ BatchSystem)\n/* harmony export */ });\n/* harmony import */ var _pixi_extensions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/extensions */ \"./node_modules/@pixi/extensions/lib/index.mjs\");\n/* harmony import */ var _ObjectRenderer_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ObjectRenderer.mjs */ \"./node_modules/@pixi/core/lib/batch/ObjectRenderer.mjs\");\n\n\nclass BatchSystem {\n /**\n * @param renderer - The renderer this System works for.\n */\n constructor(renderer) {\n this.renderer = renderer, this.emptyRenderer = new _ObjectRenderer_mjs__WEBPACK_IMPORTED_MODULE_1__.ObjectRenderer(renderer), this.currentRenderer = this.emptyRenderer;\n }\n /**\n * Changes the current renderer to the one given in parameter\n * @param objectRenderer - The object renderer to use.\n */\n setObjectRenderer(objectRenderer) {\n this.currentRenderer !== objectRenderer && (this.currentRenderer.stop(), this.currentRenderer = objectRenderer, this.currentRenderer.start());\n }\n /**\n * This should be called if you wish to do some custom rendering\n * It will basically render anything that may be batched up such as sprites\n */\n flush() {\n this.setObjectRenderer(this.emptyRenderer);\n }\n /** Reset the system to an empty renderer */\n reset() {\n this.setObjectRenderer(this.emptyRenderer);\n }\n /**\n * Handy function for batch renderers: copies bound textures in first maxTextures locations to array\n * sets actual _batchLocation for them\n * @param arr - arr copy destination\n * @param maxTextures - number of copied elements\n */\n copyBoundTextures(arr, maxTextures) {\n const { boundTextures } = this.renderer.texture;\n for (let i = maxTextures - 1; i >= 0; --i)\n arr[i] = boundTextures[i] || null, arr[i] && (arr[i]._batchLocation = i);\n }\n /**\n * Assigns batch locations to textures in array based on boundTextures state.\n * All textures in texArray should have `_batchEnabled = _batchId`,\n * and their count should be less than `maxTextures`.\n * @param texArray - textures to bound\n * @param boundTextures - current state of bound textures\n * @param batchId - marker for _batchEnabled param of textures in texArray\n * @param maxTextures - number of texture locations to manipulate\n */\n boundArray(texArray, boundTextures, batchId, maxTextures) {\n const { elements, ids, count } = texArray;\n let j = 0;\n for (let i = 0; i < count; i++) {\n const tex = elements[i], loc = tex._batchLocation;\n if (loc >= 0 && loc < maxTextures && boundTextures[loc] === tex) {\n ids[i] = loc;\n continue;\n }\n for (; j < maxTextures; ) {\n const bound = boundTextures[j];\n if (bound && bound._batchEnabled === batchId && bound._batchLocation === j) {\n j++;\n continue;\n }\n ids[i] = j, tex._batchLocation = j, boundTextures[j] = tex;\n break;\n }\n }\n }\n /**\n * @ignore\n */\n destroy() {\n this.renderer = null;\n }\n}\nBatchSystem.extension = {\n type: _pixi_extensions__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.RendererSystem,\n name: \"batch\"\n};\n_pixi_extensions__WEBPACK_IMPORTED_MODULE_0__.extensions.add(BatchSystem);\n\n//# sourceMappingURL=BatchSystem.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/batch/BatchSystem.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/batch/BatchTextureArray.mjs":
-/*!*****************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/batch/BatchTextureArray.mjs ***!
- \*****************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BatchTextureArray: () => (/* binding */ BatchTextureArray)\n/* harmony export */ });\nclass BatchTextureArray {\n constructor() {\n this.elements = [], this.ids = [], this.count = 0;\n }\n clear() {\n for (let i = 0; i < this.count; i++)\n this.elements[i] = null;\n this.count = 0;\n }\n}\n\n//# sourceMappingURL=BatchTextureArray.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/batch/BatchTextureArray.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/batch/ObjectRenderer.mjs":
-/*!**************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/batch/ObjectRenderer.mjs ***!
- \**************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ObjectRenderer: () => (/* binding */ ObjectRenderer)\n/* harmony export */ });\nclass ObjectRenderer {\n /**\n * @param renderer - The renderer this manager works for.\n */\n constructor(renderer) {\n this.renderer = renderer;\n }\n /** Stub method that should be used to empty the current batch by rendering objects now. */\n flush() {\n }\n /** Generic destruction method that frees all resources. This should be called by subclasses. */\n destroy() {\n this.renderer = null;\n }\n /**\n * Stub method that initializes any state required before\n * rendering starts. It is different from the `prerender`\n * signal, which occurs every frame, in that it is called\n * whenever an object requests _this_ renderer specifically.\n */\n start() {\n }\n /** Stops the renderer. It should free up any state and become dormant. */\n stop() {\n this.flush();\n }\n /**\n * Keeps the object to render. It doesn't have to be\n * rendered immediately.\n * @param {PIXI.DisplayObject} _object - The object to render.\n */\n render(_object) {\n }\n}\n\n//# sourceMappingURL=ObjectRenderer.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/batch/ObjectRenderer.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/batch/canUploadSameBuffer.mjs":
-/*!*******************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/batch/canUploadSameBuffer.mjs ***!
- \*******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ canUploadSameBuffer: () => (/* binding */ canUploadSameBuffer)\n/* harmony export */ });\n/* harmony import */ var _pixi_settings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/settings */ \"./node_modules/@pixi/settings/lib/index.mjs\");\n\nfunction canUploadSameBuffer() {\n return !_pixi_settings__WEBPACK_IMPORTED_MODULE_0__.isMobile.apple.device;\n}\n\n//# sourceMappingURL=canUploadSameBuffer.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/batch/canUploadSameBuffer.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/batch/maxRecommendedTextures.mjs":
-/*!**********************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/batch/maxRecommendedTextures.mjs ***!
- \**********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ maxRecommendedTextures: () => (/* binding */ maxRecommendedTextures)\n/* harmony export */ });\n/* harmony import */ var _pixi_settings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/settings */ \"./node_modules/@pixi/settings/lib/index.mjs\");\n\nfunction maxRecommendedTextures(max) {\n let allowMax = !0;\n const navigator = _pixi_settings__WEBPACK_IMPORTED_MODULE_0__.settings.ADAPTER.getNavigator();\n if (_pixi_settings__WEBPACK_IMPORTED_MODULE_0__.isMobile.tablet || _pixi_settings__WEBPACK_IMPORTED_MODULE_0__.isMobile.phone) {\n if (_pixi_settings__WEBPACK_IMPORTED_MODULE_0__.isMobile.apple.device) {\n const match = navigator.userAgent.match(/OS (\\d+)_(\\d+)?/);\n match && parseInt(match[1], 10) < 11 && (allowMax = !1);\n }\n if (_pixi_settings__WEBPACK_IMPORTED_MODULE_0__.isMobile.android.device) {\n const match = navigator.userAgent.match(/Android\\s([0-9.]*)/);\n match && parseInt(match[1], 10) < 7 && (allowMax = !1);\n }\n }\n return allowMax ? max : 4;\n}\n\n//# sourceMappingURL=maxRecommendedTextures.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/batch/maxRecommendedTextures.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/batch/texture.frag.mjs":
-/*!************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/batch/texture.frag.mjs ***!
- \************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ defaultFragment)\n/* harmony export */ });\nvar defaultFragment = `varying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying float vTextureId;\nuniform sampler2D uSamplers[%count%];\n\nvoid main(void){\n vec4 color;\n %forloop%\n gl_FragColor = color * vColor;\n}\n`;\n\n//# sourceMappingURL=texture.frag.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/batch/texture.frag.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/batch/texture.vert.mjs":
-/*!************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/batch/texture.vert.mjs ***!
- \************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ defaultVertex)\n/* harmony export */ });\nvar defaultVertex = `precision highp float;\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\nattribute float aTextureId;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform vec4 tint;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nvoid main(void){\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n vTextureCoord = aTextureCoord;\n vTextureId = aTextureId;\n vColor = aColor * tint;\n}\n`;\n\n//# sourceMappingURL=texture.vert.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/batch/texture.vert.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/context/ContextSystem.mjs":
-/*!***************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/context/ContextSystem.mjs ***!
- \***************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ContextSystem: () => (/* binding */ ContextSystem)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _pixi_extensions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/extensions */ \"./node_modules/@pixi/extensions/lib/index.mjs\");\n/* harmony import */ var _pixi_settings__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @pixi/settings */ \"./node_modules/@pixi/settings/lib/index.mjs\");\n\n\n\nlet CONTEXT_UID_COUNTER = 0;\nclass ContextSystem {\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n this.renderer = renderer, this.webGLVersion = 1, this.extensions = {}, this.supports = {\n uint32Indices: !1\n }, this.handleContextLost = this.handleContextLost.bind(this), this.handleContextRestored = this.handleContextRestored.bind(this);\n }\n /**\n * `true` if the context is lost\n * @readonly\n */\n get isLost() {\n return !this.gl || this.gl.isContextLost();\n }\n /**\n * Handles the context change event.\n * @param {WebGLRenderingContext} gl - New WebGL context.\n */\n contextChange(gl) {\n this.gl = gl, this.renderer.gl = gl, this.renderer.CONTEXT_UID = CONTEXT_UID_COUNTER++;\n }\n init(options) {\n if (options.context)\n this.initFromContext(options.context);\n else {\n const alpha = this.renderer.background.alpha < 1, premultipliedAlpha = options.premultipliedAlpha;\n this.preserveDrawingBuffer = options.preserveDrawingBuffer, this.useContextAlpha = options.useContextAlpha, this.powerPreference = options.powerPreference, this.initFromOptions({\n alpha,\n premultipliedAlpha,\n antialias: options.antialias,\n stencil: !0,\n preserveDrawingBuffer: options.preserveDrawingBuffer,\n powerPreference: options.powerPreference\n });\n }\n }\n /**\n * Initializes the context.\n * @protected\n * @param {WebGLRenderingContext} gl - WebGL context\n */\n initFromContext(gl) {\n this.gl = gl, this.validateContext(gl), this.renderer.gl = gl, this.renderer.CONTEXT_UID = CONTEXT_UID_COUNTER++, this.renderer.runners.contextChange.emit(gl);\n const view = this.renderer.view;\n view.addEventListener !== void 0 && (view.addEventListener(\"webglcontextlost\", this.handleContextLost, !1), view.addEventListener(\"webglcontextrestored\", this.handleContextRestored, !1));\n }\n /**\n * Initialize from context options\n * @protected\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext\n * @param {object} options - context attributes\n */\n initFromOptions(options) {\n const gl = this.createContext(this.renderer.view, options);\n this.initFromContext(gl);\n }\n /**\n * Helper class to create a WebGL Context\n * @param canvas - the canvas element that we will get the context from\n * @param options - An options object that gets passed in to the canvas element containing the\n * context attributes\n * @see https://developer.mozilla.org/en/docs/Web/API/HTMLCanvasElement/getContext\n * @returns {WebGLRenderingContext} the WebGL context\n */\n createContext(canvas, options) {\n let gl;\n if (_pixi_settings__WEBPACK_IMPORTED_MODULE_2__.settings.PREFER_ENV >= _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.ENV.WEBGL2 && (gl = canvas.getContext(\"webgl2\", options)), gl)\n this.webGLVersion = 2;\n else if (this.webGLVersion = 1, gl = canvas.getContext(\"webgl\", options) || canvas.getContext(\"experimental-webgl\", options), !gl)\n throw new Error(\"This browser does not support WebGL. Try using the canvas renderer\");\n return this.gl = gl, this.getExtensions(), this.gl;\n }\n /** Auto-populate the {@link PIXI.ContextSystem.extensions extensions}. */\n getExtensions() {\n const { gl } = this, common = {\n loseContext: gl.getExtension(\"WEBGL_lose_context\"),\n anisotropicFiltering: gl.getExtension(\"EXT_texture_filter_anisotropic\"),\n floatTextureLinear: gl.getExtension(\"OES_texture_float_linear\"),\n s3tc: gl.getExtension(\"WEBGL_compressed_texture_s3tc\"),\n s3tc_sRGB: gl.getExtension(\"WEBGL_compressed_texture_s3tc_srgb\"),\n // eslint-disable-line camelcase\n etc: gl.getExtension(\"WEBGL_compressed_texture_etc\"),\n etc1: gl.getExtension(\"WEBGL_compressed_texture_etc1\"),\n pvrtc: gl.getExtension(\"WEBGL_compressed_texture_pvrtc\") || gl.getExtension(\"WEBKIT_WEBGL_compressed_texture_pvrtc\"),\n atc: gl.getExtension(\"WEBGL_compressed_texture_atc\"),\n astc: gl.getExtension(\"WEBGL_compressed_texture_astc\")\n };\n this.webGLVersion === 1 ? Object.assign(this.extensions, common, {\n drawBuffers: gl.getExtension(\"WEBGL_draw_buffers\"),\n depthTexture: gl.getExtension(\"WEBGL_depth_texture\"),\n vertexArrayObject: gl.getExtension(\"OES_vertex_array_object\") || gl.getExtension(\"MOZ_OES_vertex_array_object\") || gl.getExtension(\"WEBKIT_OES_vertex_array_object\"),\n uint32ElementIndex: gl.getExtension(\"OES_element_index_uint\"),\n // Floats and half-floats\n floatTexture: gl.getExtension(\"OES_texture_float\"),\n floatTextureLinear: gl.getExtension(\"OES_texture_float_linear\"),\n textureHalfFloat: gl.getExtension(\"OES_texture_half_float\"),\n textureHalfFloatLinear: gl.getExtension(\"OES_texture_half_float_linear\")\n }) : this.webGLVersion === 2 && Object.assign(this.extensions, common, {\n // Floats and half-floats\n colorBufferFloat: gl.getExtension(\"EXT_color_buffer_float\")\n });\n }\n /**\n * Handles a lost webgl context\n * @param {WebGLContextEvent} event - The context lost event.\n */\n handleContextLost(event) {\n event.preventDefault(), setTimeout(() => {\n this.gl.isContextLost() && this.extensions.loseContext && this.extensions.loseContext.restoreContext();\n }, 0);\n }\n /** Handles a restored webgl context. */\n handleContextRestored() {\n this.renderer.runners.contextChange.emit(this.gl);\n }\n destroy() {\n const view = this.renderer.view;\n this.renderer = null, view.removeEventListener !== void 0 && (view.removeEventListener(\"webglcontextlost\", this.handleContextLost), view.removeEventListener(\"webglcontextrestored\", this.handleContextRestored)), this.gl.useProgram(null), this.extensions.loseContext && this.extensions.loseContext.loseContext();\n }\n /** Handle the post-render runner event. */\n postrender() {\n this.renderer.objectRenderer.renderingToScreen && this.gl.flush();\n }\n /**\n * Validate context.\n * @param {WebGLRenderingContext} gl - Render context.\n */\n validateContext(gl) {\n const attributes = gl.getContextAttributes(), isWebGl2 = \"WebGL2RenderingContext\" in globalThis && gl instanceof globalThis.WebGL2RenderingContext;\n isWebGl2 && (this.webGLVersion = 2), attributes && !attributes.stencil && console.warn(\"Provided WebGL context does not have a stencil buffer, masks may not render correctly\");\n const hasuint32 = isWebGl2 || !!gl.getExtension(\"OES_element_index_uint\");\n this.supports.uint32Indices = hasuint32, hasuint32 || console.warn(\"Provided WebGL context does not support 32 index buffer, complex graphics may not render correctly\");\n }\n}\nContextSystem.defaultOptions = {\n /**\n * {@link PIXI.IRendererOptions.context}\n * @default null\n * @memberof PIXI.settings.RENDER_OPTIONS\n */\n context: null,\n /**\n * {@link PIXI.IRendererOptions.antialias}\n * @default false\n * @memberof PIXI.settings.RENDER_OPTIONS\n */\n antialias: !1,\n /**\n * {@link PIXI.IRendererOptions.premultipliedAlpha}\n * @default true\n * @memberof PIXI.settings.RENDER_OPTIONS\n */\n premultipliedAlpha: !0,\n /**\n * {@link PIXI.IRendererOptions.preserveDrawingBuffer}\n * @default false\n * @memberof PIXI.settings.RENDER_OPTIONS\n */\n preserveDrawingBuffer: !1,\n /**\n * {@link PIXI.IRendererOptions.powerPreference}\n * @default default\n * @memberof PIXI.settings.RENDER_OPTIONS\n */\n powerPreference: \"default\"\n}, /** @ignore */\nContextSystem.extension = {\n type: _pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.ExtensionType.RendererSystem,\n name: \"context\"\n};\n_pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.extensions.add(ContextSystem);\n\n//# sourceMappingURL=ContextSystem.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/context/ContextSystem.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/filters/Filter.mjs":
-/*!********************************************************!*\
- !*** ./node_modules/@pixi/core/lib/filters/Filter.mjs ***!
- \********************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Filter: () => (/* binding */ Filter)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _shader_Program_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shader/Program.mjs */ \"./node_modules/@pixi/core/lib/shader/Program.mjs\");\n/* harmony import */ var _shader_Shader_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shader/Shader.mjs */ \"./node_modules/@pixi/core/lib/shader/Shader.mjs\");\n/* harmony import */ var _state_State_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../state/State.mjs */ \"./node_modules/@pixi/core/lib/state/State.mjs\");\n/* harmony import */ var _defaultFilter_frag_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./defaultFilter.frag.mjs */ \"./node_modules/@pixi/core/lib/filters/defaultFilter.frag.mjs\");\n/* harmony import */ var _defaultFilter_vert_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./defaultFilter.vert.mjs */ \"./node_modules/@pixi/core/lib/filters/defaultFilter.vert.mjs\");\n\n\n\n\n\n\nconst _Filter = class _Filter2 extends _shader_Shader_mjs__WEBPACK_IMPORTED_MODULE_2__.Shader {\n /**\n * @param vertexSrc - The source of the vertex shader.\n * @param fragmentSrc - The source of the fragment shader.\n * @param uniforms - Custom uniforms to use to augment the built-in ones.\n */\n constructor(vertexSrc, fragmentSrc, uniforms) {\n const program = _shader_Program_mjs__WEBPACK_IMPORTED_MODULE_1__.Program.from(\n vertexSrc || _Filter2.defaultVertexSrc,\n fragmentSrc || _Filter2.defaultFragmentSrc\n );\n super(program, uniforms), this.padding = 0, this.resolution = _Filter2.defaultResolution, this.multisample = _Filter2.defaultMultisample, this.enabled = !0, this.autoFit = !0, this.state = new _state_State_mjs__WEBPACK_IMPORTED_MODULE_3__.State();\n }\n /**\n * Applies the filter\n * @param {PIXI.FilterSystem} filterManager - The renderer to retrieve the filter from\n * @param {PIXI.RenderTexture} input - The input render target.\n * @param {PIXI.RenderTexture} output - The target to output to.\n * @param {PIXI.CLEAR_MODES} [clearMode] - Should the output be cleared before rendering to it.\n * @param {object} [_currentState] - It's current state of filter.\n * There are some useful properties in the currentState :\n * target, filters, sourceFrame, destinationFrame, renderTarget, resolution\n */\n apply(filterManager, input, output, clearMode, _currentState) {\n filterManager.applyFilter(this, input, output, clearMode);\n }\n /**\n * Sets the blend mode of the filter.\n * @default PIXI.BLEND_MODES.NORMAL\n */\n get blendMode() {\n return this.state.blendMode;\n }\n set blendMode(value) {\n this.state.blendMode = value;\n }\n /**\n * The resolution of the filter. Setting this to be lower will lower the quality but\n * increase the performance of the filter.\n * If set to `null` or `0`, the resolution of the current render target is used.\n * @default PIXI.Filter.defaultResolution\n */\n get resolution() {\n return this._resolution;\n }\n set resolution(value) {\n this._resolution = value;\n }\n /**\n * The default vertex shader source\n * @readonly\n */\n static get defaultVertexSrc() {\n return _defaultFilter_vert_mjs__WEBPACK_IMPORTED_MODULE_5__[\"default\"];\n }\n /**\n * The default fragment shader source\n * @readonly\n */\n static get defaultFragmentSrc() {\n return _defaultFilter_frag_mjs__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n }\n};\n_Filter.defaultResolution = 1, /**\n* Default filter samples for any filter.\n* @static\n* @type {PIXI.MSAA_QUALITY|null}\n* @default PIXI.MSAA_QUALITY.NONE\n*/\n_Filter.defaultMultisample = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MSAA_QUALITY.NONE;\nlet Filter = _Filter;\n\n//# sourceMappingURL=Filter.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/filters/Filter.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/filters/FilterState.mjs":
-/*!*************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/filters/FilterState.mjs ***!
- \*************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ FilterState: () => (/* binding */ FilterState)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _pixi_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/math */ \"./node_modules/@pixi/math/lib/index.mjs\");\n\n\nclass FilterState {\n constructor() {\n this.renderTexture = null, this.target = null, this.legacy = !1, this.resolution = 1, this.multisample = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MSAA_QUALITY.NONE, this.sourceFrame = new _pixi_math__WEBPACK_IMPORTED_MODULE_1__.Rectangle(), this.destinationFrame = new _pixi_math__WEBPACK_IMPORTED_MODULE_1__.Rectangle(), this.bindingSourceFrame = new _pixi_math__WEBPACK_IMPORTED_MODULE_1__.Rectangle(), this.bindingDestinationFrame = new _pixi_math__WEBPACK_IMPORTED_MODULE_1__.Rectangle(), this.filters = [], this.transform = null;\n }\n /** Clears the state */\n clear() {\n this.target = null, this.filters = null, this.renderTexture = null;\n }\n}\n\n//# sourceMappingURL=FilterState.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/filters/FilterState.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/filters/FilterSystem.mjs":
-/*!**************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/filters/FilterSystem.mjs ***!
- \**************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ FilterSystem: () => (/* binding */ FilterSystem)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _pixi_extensions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/extensions */ \"./node_modules/@pixi/extensions/lib/index.mjs\");\n/* harmony import */ var _pixi_math__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @pixi/math */ \"./node_modules/@pixi/math/lib/index.mjs\");\n/* harmony import */ var _renderTexture_RenderTexturePool_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../renderTexture/RenderTexturePool.mjs */ \"./node_modules/@pixi/core/lib/renderTexture/RenderTexturePool.mjs\");\n/* harmony import */ var _shader_UniformGroup_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shader/UniformGroup.mjs */ \"./node_modules/@pixi/core/lib/shader/UniformGroup.mjs\");\n/* harmony import */ var _utils_Quad_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/Quad.mjs */ \"./node_modules/@pixi/core/lib/utils/Quad.mjs\");\n/* harmony import */ var _utils_QuadUv_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/QuadUv.mjs */ \"./node_modules/@pixi/core/lib/utils/QuadUv.mjs\");\n/* harmony import */ var _FilterState_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./FilterState.mjs */ \"./node_modules/@pixi/core/lib/filters/FilterState.mjs\");\n\n\n\n\n\n\n\n\nconst tempPoints = [new _pixi_math__WEBPACK_IMPORTED_MODULE_2__.Point(), new _pixi_math__WEBPACK_IMPORTED_MODULE_2__.Point(), new _pixi_math__WEBPACK_IMPORTED_MODULE_2__.Point(), new _pixi_math__WEBPACK_IMPORTED_MODULE_2__.Point()], tempMatrix = new _pixi_math__WEBPACK_IMPORTED_MODULE_2__.Matrix();\nclass FilterSystem {\n /**\n * @param renderer - The renderer this System works for.\n */\n constructor(renderer) {\n this.renderer = renderer, this.defaultFilterStack = [{}], this.texturePool = new _renderTexture_RenderTexturePool_mjs__WEBPACK_IMPORTED_MODULE_3__.RenderTexturePool(), this.statePool = [], this.quad = new _utils_Quad_mjs__WEBPACK_IMPORTED_MODULE_5__.Quad(), this.quadUv = new _utils_QuadUv_mjs__WEBPACK_IMPORTED_MODULE_6__.QuadUv(), this.tempRect = new _pixi_math__WEBPACK_IMPORTED_MODULE_2__.Rectangle(), this.activeState = {}, this.globalUniforms = new _shader_UniformGroup_mjs__WEBPACK_IMPORTED_MODULE_4__.UniformGroup({\n outputFrame: new _pixi_math__WEBPACK_IMPORTED_MODULE_2__.Rectangle(),\n inputSize: new Float32Array(4),\n inputPixel: new Float32Array(4),\n inputClamp: new Float32Array(4),\n resolution: 1,\n // legacy variables\n filterArea: new Float32Array(4),\n filterClamp: new Float32Array(4)\n }, !0), this.forceClear = !1, this.useMaxPadding = !1;\n }\n init() {\n this.texturePool.setScreenSize(this.renderer.view);\n }\n /**\n * Pushes a set of filters to be applied later to the system. This will redirect further rendering into an\n * input render-texture for the rest of the filtering pipeline.\n * @param {PIXI.DisplayObject} target - The target of the filter to render.\n * @param filters - The filters to apply.\n */\n push(target, filters) {\n const renderer = this.renderer, filterStack = this.defaultFilterStack, state = this.statePool.pop() || new _FilterState_mjs__WEBPACK_IMPORTED_MODULE_7__.FilterState(), renderTextureSystem = renderer.renderTexture;\n let currentResolution, currentMultisample;\n if (renderTextureSystem.current) {\n const renderTexture = renderTextureSystem.current;\n currentResolution = renderTexture.resolution, currentMultisample = renderTexture.multisample;\n } else\n currentResolution = renderer.resolution, currentMultisample = renderer.multisample;\n let resolution = filters[0].resolution || currentResolution, multisample = filters[0].multisample ?? currentMultisample, padding = filters[0].padding, autoFit = filters[0].autoFit, legacy = filters[0].legacy ?? !0;\n for (let i = 1; i < filters.length; i++) {\n const filter = filters[i];\n resolution = Math.min(resolution, filter.resolution || currentResolution), multisample = Math.min(multisample, filter.multisample ?? currentMultisample), padding = this.useMaxPadding ? Math.max(padding, filter.padding) : padding + filter.padding, autoFit = autoFit && filter.autoFit, legacy = legacy || (filter.legacy ?? !0);\n }\n filterStack.length === 1 && (this.defaultFilterStack[0].renderTexture = renderTextureSystem.current), filterStack.push(state), state.resolution = resolution, state.multisample = multisample, state.legacy = legacy, state.target = target, state.sourceFrame.copyFrom(target.filterArea || target.getBounds(!0)), state.sourceFrame.pad(padding);\n const sourceFrameProjected = this.tempRect.copyFrom(renderTextureSystem.sourceFrame);\n renderer.projection.transform && this.transformAABB(\n tempMatrix.copyFrom(renderer.projection.transform).invert(),\n sourceFrameProjected\n ), autoFit ? (state.sourceFrame.fit(sourceFrameProjected), (state.sourceFrame.width <= 0 || state.sourceFrame.height <= 0) && (state.sourceFrame.width = 0, state.sourceFrame.height = 0)) : state.sourceFrame.intersects(sourceFrameProjected) || (state.sourceFrame.width = 0, state.sourceFrame.height = 0), this.roundFrame(\n state.sourceFrame,\n renderTextureSystem.current ? renderTextureSystem.current.resolution : renderer.resolution,\n renderTextureSystem.sourceFrame,\n renderTextureSystem.destinationFrame,\n renderer.projection.transform\n ), state.renderTexture = this.getOptimalFilterTexture(\n state.sourceFrame.width,\n state.sourceFrame.height,\n resolution,\n multisample\n ), state.filters = filters, state.destinationFrame.width = state.renderTexture.width, state.destinationFrame.height = state.renderTexture.height;\n const destinationFrame = this.tempRect;\n destinationFrame.x = 0, destinationFrame.y = 0, destinationFrame.width = state.sourceFrame.width, destinationFrame.height = state.sourceFrame.height, state.renderTexture.filterFrame = state.sourceFrame, state.bindingSourceFrame.copyFrom(renderTextureSystem.sourceFrame), state.bindingDestinationFrame.copyFrom(renderTextureSystem.destinationFrame), state.transform = renderer.projection.transform, renderer.projection.transform = null, renderTextureSystem.bind(state.renderTexture, state.sourceFrame, destinationFrame), renderer.framebuffer.clear(0, 0, 0, 0);\n }\n /** Pops off the filter and applies it. */\n pop() {\n const filterStack = this.defaultFilterStack, state = filterStack.pop(), filters = state.filters;\n this.activeState = state;\n const globalUniforms = this.globalUniforms.uniforms;\n globalUniforms.outputFrame = state.sourceFrame, globalUniforms.resolution = state.resolution;\n const inputSize = globalUniforms.inputSize, inputPixel = globalUniforms.inputPixel, inputClamp = globalUniforms.inputClamp;\n if (inputSize[0] = state.destinationFrame.width, inputSize[1] = state.destinationFrame.height, inputSize[2] = 1 / inputSize[0], inputSize[3] = 1 / inputSize[1], inputPixel[0] = Math.round(inputSize[0] * state.resolution), inputPixel[1] = Math.round(inputSize[1] * state.resolution), inputPixel[2] = 1 / inputPixel[0], inputPixel[3] = 1 / inputPixel[1], inputClamp[0] = 0.5 * inputPixel[2], inputClamp[1] = 0.5 * inputPixel[3], inputClamp[2] = state.sourceFrame.width * inputSize[2] - 0.5 * inputPixel[2], inputClamp[3] = state.sourceFrame.height * inputSize[3] - 0.5 * inputPixel[3], state.legacy) {\n const filterArea = globalUniforms.filterArea;\n filterArea[0] = state.destinationFrame.width, filterArea[1] = state.destinationFrame.height, filterArea[2] = state.sourceFrame.x, filterArea[3] = state.sourceFrame.y, globalUniforms.filterClamp = globalUniforms.inputClamp;\n }\n this.globalUniforms.update();\n const lastState = filterStack[filterStack.length - 1];\n if (this.renderer.framebuffer.blit(), filters.length === 1)\n filters[0].apply(this, state.renderTexture, lastState.renderTexture, _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.CLEAR_MODES.BLEND, state), this.returnFilterTexture(state.renderTexture);\n else {\n let flip = state.renderTexture, flop = this.getOptimalFilterTexture(\n flip.width,\n flip.height,\n state.resolution\n );\n flop.filterFrame = flip.filterFrame;\n let i = 0;\n for (i = 0; i < filters.length - 1; ++i) {\n i === 1 && state.multisample > 1 && (flop = this.getOptimalFilterTexture(\n flip.width,\n flip.height,\n state.resolution\n ), flop.filterFrame = flip.filterFrame), filters[i].apply(this, flip, flop, _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.CLEAR_MODES.CLEAR, state);\n const t = flip;\n flip = flop, flop = t;\n }\n filters[i].apply(this, flip, lastState.renderTexture, _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.CLEAR_MODES.BLEND, state), i > 1 && state.multisample > 1 && this.returnFilterTexture(state.renderTexture), this.returnFilterTexture(flip), this.returnFilterTexture(flop);\n }\n state.clear(), this.statePool.push(state);\n }\n /**\n * Binds a renderTexture with corresponding `filterFrame`, clears it if mode corresponds.\n * @param filterTexture - renderTexture to bind, should belong to filter pool or filter stack\n * @param clearMode - clearMode, by default its CLEAR/YES. See {@link PIXI.CLEAR_MODES}\n */\n bindAndClear(filterTexture, clearMode = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.CLEAR_MODES.CLEAR) {\n const {\n renderTexture: renderTextureSystem,\n state: stateSystem\n } = this.renderer;\n if (filterTexture === this.defaultFilterStack[this.defaultFilterStack.length - 1].renderTexture ? this.renderer.projection.transform = this.activeState.transform : this.renderer.projection.transform = null, filterTexture?.filterFrame) {\n const destinationFrame = this.tempRect;\n destinationFrame.x = 0, destinationFrame.y = 0, destinationFrame.width = filterTexture.filterFrame.width, destinationFrame.height = filterTexture.filterFrame.height, renderTextureSystem.bind(filterTexture, filterTexture.filterFrame, destinationFrame);\n } else\n filterTexture !== this.defaultFilterStack[this.defaultFilterStack.length - 1].renderTexture ? renderTextureSystem.bind(filterTexture) : this.renderer.renderTexture.bind(\n filterTexture,\n this.activeState.bindingSourceFrame,\n this.activeState.bindingDestinationFrame\n );\n const autoClear = stateSystem.stateId & 1 || this.forceClear;\n (clearMode === _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.CLEAR_MODES.CLEAR || clearMode === _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.CLEAR_MODES.BLIT && autoClear) && this.renderer.framebuffer.clear(0, 0, 0, 0);\n }\n /**\n * Draws a filter using the default rendering process.\n *\n * This should be called only by {@link PIXI.Filter#apply}.\n * @param filter - The filter to draw.\n * @param input - The input render target.\n * @param output - The target to output to.\n * @param clearMode - Should the output be cleared before rendering to it\n */\n applyFilter(filter, input, output, clearMode) {\n const renderer = this.renderer;\n renderer.state.set(filter.state), this.bindAndClear(output, clearMode), filter.uniforms.uSampler = input, filter.uniforms.filterGlobals = this.globalUniforms, renderer.shader.bind(filter), filter.legacy = !!filter.program.attributeData.aTextureCoord, filter.legacy ? (this.quadUv.map(input._frame, input.filterFrame), renderer.geometry.bind(this.quadUv), renderer.geometry.draw(_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.DRAW_MODES.TRIANGLES)) : (renderer.geometry.bind(this.quad), renderer.geometry.draw(_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.DRAW_MODES.TRIANGLE_STRIP));\n }\n /**\n * Multiply _input normalized coordinates_ to this matrix to get _sprite texture normalized coordinates_.\n *\n * Use `outputMatrix * vTextureCoord` in the shader.\n * @param outputMatrix - The matrix to output to.\n * @param {PIXI.Sprite} sprite - The sprite to map to.\n * @returns The mapped matrix.\n */\n calculateSpriteMatrix(outputMatrix, sprite) {\n const { sourceFrame, destinationFrame } = this.activeState, { orig } = sprite._texture, mappedMatrix = outputMatrix.set(\n destinationFrame.width,\n 0,\n 0,\n destinationFrame.height,\n sourceFrame.x,\n sourceFrame.y\n ), worldTransform = sprite.worldTransform.copyTo(_pixi_math__WEBPACK_IMPORTED_MODULE_2__.Matrix.TEMP_MATRIX);\n return worldTransform.invert(), mappedMatrix.prepend(worldTransform), mappedMatrix.scale(1 / orig.width, 1 / orig.height), mappedMatrix.translate(sprite.anchor.x, sprite.anchor.y), mappedMatrix;\n }\n /** Destroys this Filter System. */\n destroy() {\n this.renderer = null, this.texturePool.clear(!1);\n }\n /**\n * Gets a Power-of-Two render texture or fullScreen texture\n * @param minWidth - The minimum width of the render texture in real pixels.\n * @param minHeight - The minimum height of the render texture in real pixels.\n * @param resolution - The resolution of the render texture.\n * @param multisample - Number of samples of the render texture.\n * @returns - The new render texture.\n */\n getOptimalFilterTexture(minWidth, minHeight, resolution = 1, multisample = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MSAA_QUALITY.NONE) {\n return this.texturePool.getOptimalTexture(minWidth, minHeight, resolution, multisample);\n }\n /**\n * Gets extra render texture to use inside current filter\n * To be compliant with older filters, you can use params in any order\n * @param input - renderTexture from which size and resolution will be copied\n * @param resolution - override resolution of the renderTexture\n * @param multisample - number of samples of the renderTexture\n */\n getFilterTexture(input, resolution, multisample) {\n if (typeof input == \"number\") {\n const swap = input;\n input = resolution, resolution = swap;\n }\n input = input || this.activeState.renderTexture;\n const filterTexture = this.texturePool.getOptimalTexture(\n input.width,\n input.height,\n resolution || input.resolution,\n multisample || _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MSAA_QUALITY.NONE\n );\n return filterTexture.filterFrame = input.filterFrame, filterTexture;\n }\n /**\n * Frees a render texture back into the pool.\n * @param renderTexture - The renderTarget to free\n */\n returnFilterTexture(renderTexture) {\n this.texturePool.returnTexture(renderTexture);\n }\n /** Empties the texture pool. */\n emptyPool() {\n this.texturePool.clear(!0);\n }\n /** Calls `texturePool.resize()`, affects fullScreen renderTextures. */\n resize() {\n this.texturePool.setScreenSize(this.renderer.view);\n }\n /**\n * @param matrix - first param\n * @param rect - second param\n */\n transformAABB(matrix, rect) {\n const lt = tempPoints[0], lb = tempPoints[1], rt = tempPoints[2], rb = tempPoints[3];\n lt.set(rect.left, rect.top), lb.set(rect.left, rect.bottom), rt.set(rect.right, rect.top), rb.set(rect.right, rect.bottom), matrix.apply(lt, lt), matrix.apply(lb, lb), matrix.apply(rt, rt), matrix.apply(rb, rb);\n const x0 = Math.min(lt.x, lb.x, rt.x, rb.x), y0 = Math.min(lt.y, lb.y, rt.y, rb.y), x1 = Math.max(lt.x, lb.x, rt.x, rb.x), y1 = Math.max(lt.y, lb.y, rt.y, rb.y);\n rect.x = x0, rect.y = y0, rect.width = x1 - x0, rect.height = y1 - y0;\n }\n roundFrame(frame, resolution, bindingSourceFrame, bindingDestinationFrame, transform) {\n if (!(frame.width <= 0 || frame.height <= 0 || bindingSourceFrame.width <= 0 || bindingSourceFrame.height <= 0)) {\n if (transform) {\n const { a, b, c, d } = transform;\n if ((Math.abs(b) > 1e-4 || Math.abs(c) > 1e-4) && (Math.abs(a) > 1e-4 || Math.abs(d) > 1e-4))\n return;\n }\n transform = transform ? tempMatrix.copyFrom(transform) : tempMatrix.identity(), transform.translate(-bindingSourceFrame.x, -bindingSourceFrame.y).scale(\n bindingDestinationFrame.width / bindingSourceFrame.width,\n bindingDestinationFrame.height / bindingSourceFrame.height\n ).translate(bindingDestinationFrame.x, bindingDestinationFrame.y), this.transformAABB(transform, frame), frame.ceil(resolution), this.transformAABB(transform.invert(), frame);\n }\n }\n}\nFilterSystem.extension = {\n type: _pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.ExtensionType.RendererSystem,\n name: \"filter\"\n};\n_pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.extensions.add(FilterSystem);\n\n//# sourceMappingURL=FilterSystem.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/filters/FilterSystem.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/filters/IFilterTarget.mjs":
-/*!***************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/filters/IFilterTarget.mjs ***!
- \***************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n\n//# sourceMappingURL=IFilterTarget.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/filters/IFilterTarget.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/filters/defaultFilter.frag.mjs":
-/*!********************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/filters/defaultFilter.frag.mjs ***!
- \********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ defaultFragment)\n/* harmony export */ });\nvar defaultFragment = `varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\n\nvoid main(void){\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n}\n`;\n\n//# sourceMappingURL=defaultFilter.frag.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/filters/defaultFilter.frag.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/filters/defaultFilter.vert.mjs":
-/*!********************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/filters/defaultFilter.vert.mjs ***!
- \********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ defaultVertex)\n/* harmony export */ });\nvar defaultVertex = `attribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nuniform vec4 inputSize;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\n}\n\nvoid main(void)\n{\n gl_Position = filterVertexPosition();\n vTextureCoord = filterTextureCoord();\n}\n`;\n\n//# sourceMappingURL=defaultFilter.vert.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/filters/defaultFilter.vert.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/filters/spriteMask/SpriteMaskFilter.mjs":
-/*!*****************************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/filters/spriteMask/SpriteMaskFilter.mjs ***!
- \*****************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SpriteMaskFilter: () => (/* binding */ SpriteMaskFilter)\n/* harmony export */ });\n/* harmony import */ var _pixi_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/math */ \"./node_modules/@pixi/math/lib/index.mjs\");\n/* harmony import */ var _textures_TextureMatrix_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../textures/TextureMatrix.mjs */ \"./node_modules/@pixi/core/lib/textures/TextureMatrix.mjs\");\n/* harmony import */ var _Filter_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Filter.mjs */ \"./node_modules/@pixi/core/lib/filters/Filter.mjs\");\n/* harmony import */ var _spriteMaskFilter_frag_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./spriteMaskFilter.frag.mjs */ \"./node_modules/@pixi/core/lib/filters/spriteMask/spriteMaskFilter.frag.mjs\");\n/* harmony import */ var _spriteMaskFilter_vert_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./spriteMaskFilter.vert.mjs */ \"./node_modules/@pixi/core/lib/filters/spriteMask/spriteMaskFilter.vert.mjs\");\n\n\n\n\n\nclass SpriteMaskFilter extends _Filter_mjs__WEBPACK_IMPORTED_MODULE_2__.Filter {\n /** @ignore */\n constructor(vertexSrc, fragmentSrc, uniforms) {\n let sprite = null;\n typeof vertexSrc != \"string\" && fragmentSrc === void 0 && uniforms === void 0 && (sprite = vertexSrc, vertexSrc = void 0, fragmentSrc = void 0, uniforms = void 0), super(vertexSrc || _spriteMaskFilter_vert_mjs__WEBPACK_IMPORTED_MODULE_4__[\"default\"], fragmentSrc || _spriteMaskFilter_frag_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"], uniforms), this.maskSprite = sprite, this.maskMatrix = new _pixi_math__WEBPACK_IMPORTED_MODULE_0__.Matrix();\n }\n /**\n * Sprite mask\n * @type {PIXI.DisplayObject}\n */\n get maskSprite() {\n return this._maskSprite;\n }\n set maskSprite(value) {\n this._maskSprite = value, this._maskSprite && (this._maskSprite.renderable = !1);\n }\n /**\n * Applies the filter\n * @param filterManager - The renderer to retrieve the filter from\n * @param input - The input render target.\n * @param output - The target to output to.\n * @param clearMode - Should the output be cleared before rendering to it.\n */\n apply(filterManager, input, output, clearMode) {\n const maskSprite = this._maskSprite, tex = maskSprite._texture;\n tex.valid && (tex.uvMatrix || (tex.uvMatrix = new _textures_TextureMatrix_mjs__WEBPACK_IMPORTED_MODULE_1__.TextureMatrix(tex, 0)), tex.uvMatrix.update(), this.uniforms.npmAlpha = tex.baseTexture.alphaMode ? 0 : 1, this.uniforms.mask = tex, this.uniforms.otherMatrix = filterManager.calculateSpriteMatrix(this.maskMatrix, maskSprite).prepend(tex.uvMatrix.mapCoord), this.uniforms.alpha = maskSprite.worldAlpha, this.uniforms.maskClamp = tex.uvMatrix.uClampFrame, filterManager.applyFilter(this, input, output, clearMode));\n }\n}\n\n//# sourceMappingURL=SpriteMaskFilter.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/filters/spriteMask/SpriteMaskFilter.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/filters/spriteMask/spriteMaskFilter.frag.mjs":
-/*!**********************************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/filters/spriteMask/spriteMaskFilter.frag.mjs ***!
- \**********************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ fragment)\n/* harmony export */ });\nvar fragment = `varying vec2 vMaskCoord;\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform sampler2D mask;\nuniform float alpha;\nuniform float npmAlpha;\nuniform vec4 maskClamp;\n\nvoid main(void)\n{\n float clip = step(3.5,\n step(maskClamp.x, vMaskCoord.x) +\n step(maskClamp.y, vMaskCoord.y) +\n step(vMaskCoord.x, maskClamp.z) +\n step(vMaskCoord.y, maskClamp.w));\n\n vec4 original = texture2D(uSampler, vTextureCoord);\n vec4 masky = texture2D(mask, vMaskCoord);\n float alphaMul = 1.0 - npmAlpha * (1.0 - masky.a);\n\n original *= (alphaMul * masky.r * alpha * clip);\n\n gl_FragColor = original;\n}\n`;\n\n//# sourceMappingURL=spriteMaskFilter.frag.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/filters/spriteMask/spriteMaskFilter.frag.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/filters/spriteMask/spriteMaskFilter.vert.mjs":
-/*!**********************************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/filters/spriteMask/spriteMaskFilter.vert.mjs ***!
- \**********************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ vertex)\n/* harmony export */ });\nvar vertex = `attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 otherMatrix;\n\nvarying vec2 vMaskCoord;\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n vTextureCoord = aTextureCoord;\n vMaskCoord = ( otherMatrix * vec3( aTextureCoord, 1.0) ).xy;\n}\n`;\n\n//# sourceMappingURL=spriteMaskFilter.vert.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/filters/spriteMask/spriteMaskFilter.vert.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/fragments/default.vert.mjs":
-/*!****************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/fragments/default.vert.mjs ***!
- \****************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ $defaultVertex)\n/* harmony export */ });\nvar $defaultVertex = `attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}`;\n\n//# sourceMappingURL=default.vert.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/fragments/default.vert.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/fragments/defaultFilter.vert.mjs":
-/*!**********************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/fragments/defaultFilter.vert.mjs ***!
- \**********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ $defaultFilterVertex)\n/* harmony export */ });\nvar $defaultFilterVertex = `attribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nuniform vec4 inputSize;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\n}\n\nvoid main(void)\n{\n gl_Position = filterVertexPosition();\n vTextureCoord = filterTextureCoord();\n}\n`;\n\n//# sourceMappingURL=defaultFilter.vert.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/fragments/defaultFilter.vert.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/fragments/index.mjs":
-/*!*********************************************************!*\
- !*** ./node_modules/@pixi/core/lib/fragments/index.mjs ***!
- \*********************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ defaultFilterVertex: () => (/* binding */ defaultFilterVertex),\n/* harmony export */ defaultVertex: () => (/* binding */ defaultVertex)\n/* harmony export */ });\n/* harmony import */ var _default_vert_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./default.vert.mjs */ \"./node_modules/@pixi/core/lib/fragments/default.vert.mjs\");\n/* harmony import */ var _defaultFilter_vert_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./defaultFilter.vert.mjs */ \"./node_modules/@pixi/core/lib/fragments/defaultFilter.vert.mjs\");\n\n\nconst defaultVertex = _default_vert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"], defaultFilterVertex = _defaultFilter_vert_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n\n//# sourceMappingURL=index.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/fragments/index.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/framebuffer/Framebuffer.mjs":
-/*!*****************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/framebuffer/Framebuffer.mjs ***!
- \*****************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Framebuffer: () => (/* binding */ Framebuffer)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _pixi_runner__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/runner */ \"./node_modules/@pixi/runner/lib/index.mjs\");\n/* harmony import */ var _textures_BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../textures/BaseTexture.mjs */ \"./node_modules/@pixi/core/lib/textures/BaseTexture.mjs\");\n\n\n\nclass Framebuffer {\n /**\n * @param width - Width of the frame buffer\n * @param height - Height of the frame buffer\n */\n constructor(width, height) {\n if (this.width = Math.round(width), this.height = Math.round(height), !this.width || !this.height)\n throw new Error(\"Framebuffer width or height is zero\");\n this.stencil = !1, this.depth = !1, this.dirtyId = 0, this.dirtyFormat = 0, this.dirtySize = 0, this.depthTexture = null, this.colorTextures = [], this.glFramebuffers = {}, this.disposeRunner = new _pixi_runner__WEBPACK_IMPORTED_MODULE_1__.Runner(\"disposeFramebuffer\"), this.multisample = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MSAA_QUALITY.NONE;\n }\n /**\n * Reference to the colorTexture.\n * @readonly\n */\n get colorTexture() {\n return this.colorTextures[0];\n }\n /**\n * Add texture to the colorTexture array.\n * @param index - Index of the array to add the texture to\n * @param texture - Texture to add to the array\n */\n addColorTexture(index = 0, texture) {\n return this.colorTextures[index] = texture || new _textures_BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_2__.BaseTexture(null, {\n scaleMode: _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.SCALE_MODES.NEAREST,\n resolution: 1,\n mipmap: _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MIPMAP_MODES.OFF,\n width: this.width,\n height: this.height\n }), this.dirtyId++, this.dirtyFormat++, this;\n }\n /**\n * Add a depth texture to the frame buffer.\n * @param texture - Texture to add.\n */\n addDepthTexture(texture) {\n return this.depthTexture = texture || new _textures_BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_2__.BaseTexture(null, {\n scaleMode: _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.SCALE_MODES.NEAREST,\n resolution: 1,\n width: this.width,\n height: this.height,\n mipmap: _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MIPMAP_MODES.OFF,\n format: _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.FORMATS.DEPTH_COMPONENT,\n type: _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.TYPES.UNSIGNED_SHORT\n }), this.dirtyId++, this.dirtyFormat++, this;\n }\n /** Enable depth on the frame buffer. */\n enableDepth() {\n return this.depth = !0, this.dirtyId++, this.dirtyFormat++, this;\n }\n /** Enable stencil on the frame buffer. */\n enableStencil() {\n return this.stencil = !0, this.dirtyId++, this.dirtyFormat++, this;\n }\n /**\n * Resize the frame buffer\n * @param width - Width of the frame buffer to resize to\n * @param height - Height of the frame buffer to resize to\n */\n resize(width, height) {\n if (width = Math.round(width), height = Math.round(height), !width || !height)\n throw new Error(\"Framebuffer width and height must not be zero\");\n if (!(width === this.width && height === this.height)) {\n this.width = width, this.height = height, this.dirtyId++, this.dirtySize++;\n for (let i = 0; i < this.colorTextures.length; i++) {\n const texture = this.colorTextures[i], resolution = texture.resolution;\n texture.setSize(width / resolution, height / resolution);\n }\n if (this.depthTexture) {\n const resolution = this.depthTexture.resolution;\n this.depthTexture.setSize(width / resolution, height / resolution);\n }\n }\n }\n /** Disposes WebGL resources that are connected to this geometry. */\n dispose() {\n this.disposeRunner.emit(this, !1);\n }\n /** Destroys and removes the depth texture added to this framebuffer. */\n destroyDepthTexture() {\n this.depthTexture && (this.depthTexture.destroy(), this.depthTexture = null, ++this.dirtyId, ++this.dirtyFormat);\n }\n}\n\n//# sourceMappingURL=Framebuffer.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/framebuffer/Framebuffer.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/framebuffer/FramebufferSystem.mjs":
-/*!***********************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/framebuffer/FramebufferSystem.mjs ***!
- \***********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ FramebufferSystem: () => (/* binding */ FramebufferSystem)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _pixi_extensions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/extensions */ \"./node_modules/@pixi/extensions/lib/index.mjs\");\n/* harmony import */ var _pixi_math__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @pixi/math */ \"./node_modules/@pixi/math/lib/index.mjs\");\n/* harmony import */ var _pixi_settings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @pixi/settings */ \"./node_modules/@pixi/settings/lib/index.mjs\");\n/* harmony import */ var _Framebuffer_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Framebuffer.mjs */ \"./node_modules/@pixi/core/lib/framebuffer/Framebuffer.mjs\");\n/* harmony import */ var _GLFramebuffer_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./GLFramebuffer.mjs */ \"./node_modules/@pixi/core/lib/framebuffer/GLFramebuffer.mjs\");\n\n\n\n\n\n\nconst tempRectangle = new _pixi_math__WEBPACK_IMPORTED_MODULE_2__.Rectangle();\nclass FramebufferSystem {\n /**\n * @param renderer - The renderer this System works for.\n */\n constructor(renderer) {\n this.renderer = renderer, this.managedFramebuffers = [], this.unknownFramebuffer = new _Framebuffer_mjs__WEBPACK_IMPORTED_MODULE_4__.Framebuffer(10, 10), this.msaaSamples = null;\n }\n /** Sets up the renderer context and necessary buffers. */\n contextChange() {\n this.disposeAll(!0);\n const gl = this.gl = this.renderer.gl;\n if (this.CONTEXT_UID = this.renderer.CONTEXT_UID, this.current = this.unknownFramebuffer, this.viewport = new _pixi_math__WEBPACK_IMPORTED_MODULE_2__.Rectangle(), this.hasMRT = !0, this.writeDepthTexture = !0, this.renderer.context.webGLVersion === 1) {\n let nativeDrawBuffersExtension = this.renderer.context.extensions.drawBuffers, nativeDepthTextureExtension = this.renderer.context.extensions.depthTexture;\n _pixi_settings__WEBPACK_IMPORTED_MODULE_3__.settings.PREFER_ENV === _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.ENV.WEBGL_LEGACY && (nativeDrawBuffersExtension = null, nativeDepthTextureExtension = null), nativeDrawBuffersExtension ? gl.drawBuffers = (activeTextures) => nativeDrawBuffersExtension.drawBuffersWEBGL(activeTextures) : (this.hasMRT = !1, gl.drawBuffers = () => {\n }), nativeDepthTextureExtension || (this.writeDepthTexture = !1);\n } else\n this.msaaSamples = gl.getInternalformatParameter(gl.RENDERBUFFER, gl.RGBA8, gl.SAMPLES);\n }\n /**\n * Bind a framebuffer.\n * @param framebuffer\n * @param frame - frame, default is framebuffer size\n * @param mipLevel - optional mip level to set on the framebuffer - defaults to 0\n */\n bind(framebuffer, frame, mipLevel = 0) {\n const { gl } = this;\n if (framebuffer) {\n const fbo = framebuffer.glFramebuffers[this.CONTEXT_UID] || this.initFramebuffer(framebuffer);\n this.current !== framebuffer && (this.current = framebuffer, gl.bindFramebuffer(gl.FRAMEBUFFER, fbo.framebuffer)), fbo.mipLevel !== mipLevel && (framebuffer.dirtyId++, framebuffer.dirtyFormat++, fbo.mipLevel = mipLevel), fbo.dirtyId !== framebuffer.dirtyId && (fbo.dirtyId = framebuffer.dirtyId, fbo.dirtyFormat !== framebuffer.dirtyFormat ? (fbo.dirtyFormat = framebuffer.dirtyFormat, fbo.dirtySize = framebuffer.dirtySize, this.updateFramebuffer(framebuffer, mipLevel)) : fbo.dirtySize !== framebuffer.dirtySize && (fbo.dirtySize = framebuffer.dirtySize, this.resizeFramebuffer(framebuffer)));\n for (let i = 0; i < framebuffer.colorTextures.length; i++) {\n const tex = framebuffer.colorTextures[i];\n this.renderer.texture.unbind(tex.parentTextureArray || tex);\n }\n if (framebuffer.depthTexture && this.renderer.texture.unbind(framebuffer.depthTexture), frame) {\n const mipWidth = frame.width >> mipLevel, mipHeight = frame.height >> mipLevel, scale = mipWidth / frame.width;\n this.setViewport(\n frame.x * scale,\n frame.y * scale,\n mipWidth,\n mipHeight\n );\n } else {\n const mipWidth = framebuffer.width >> mipLevel, mipHeight = framebuffer.height >> mipLevel;\n this.setViewport(0, 0, mipWidth, mipHeight);\n }\n } else\n this.current && (this.current = null, gl.bindFramebuffer(gl.FRAMEBUFFER, null)), frame ? this.setViewport(frame.x, frame.y, frame.width, frame.height) : this.setViewport(0, 0, this.renderer.width, this.renderer.height);\n }\n /**\n * Set the WebGLRenderingContext's viewport.\n * @param x - X position of viewport\n * @param y - Y position of viewport\n * @param width - Width of viewport\n * @param height - Height of viewport\n */\n setViewport(x, y, width, height) {\n const v = this.viewport;\n x = Math.round(x), y = Math.round(y), width = Math.round(width), height = Math.round(height), (v.width !== width || v.height !== height || v.x !== x || v.y !== y) && (v.x = x, v.y = y, v.width = width, v.height = height, this.gl.viewport(x, y, width, height));\n }\n /**\n * Get the size of the current width and height. Returns object with `width` and `height` values.\n * @readonly\n */\n get size() {\n return this.current ? { x: 0, y: 0, width: this.current.width, height: this.current.height } : { x: 0, y: 0, width: this.renderer.width, height: this.renderer.height };\n }\n /**\n * Clear the color of the context\n * @param r - Red value from 0 to 1\n * @param g - Green value from 0 to 1\n * @param b - Blue value from 0 to 1\n * @param a - Alpha value from 0 to 1\n * @param {PIXI.BUFFER_BITS} [mask=BUFFER_BITS.COLOR | BUFFER_BITS.DEPTH] - Bitwise OR of masks\n * that indicate the buffers to be cleared, by default COLOR and DEPTH buffers.\n */\n clear(r, g, b, a, mask = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BUFFER_BITS.COLOR | _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BUFFER_BITS.DEPTH) {\n const { gl } = this;\n gl.clearColor(r, g, b, a), gl.clear(mask);\n }\n /**\n * Initialize framebuffer for this context\n * @protected\n * @param framebuffer\n * @returns - created GLFramebuffer\n */\n initFramebuffer(framebuffer) {\n const { gl } = this, fbo = new _GLFramebuffer_mjs__WEBPACK_IMPORTED_MODULE_5__.GLFramebuffer(gl.createFramebuffer());\n return fbo.multisample = this.detectSamples(framebuffer.multisample), framebuffer.glFramebuffers[this.CONTEXT_UID] = fbo, this.managedFramebuffers.push(framebuffer), framebuffer.disposeRunner.add(this), fbo;\n }\n /**\n * Resize the framebuffer\n * @param framebuffer\n * @protected\n */\n resizeFramebuffer(framebuffer) {\n const { gl } = this, fbo = framebuffer.glFramebuffers[this.CONTEXT_UID];\n if (fbo.stencil) {\n gl.bindRenderbuffer(gl.RENDERBUFFER, fbo.stencil);\n let stencilFormat;\n this.renderer.context.webGLVersion === 1 ? stencilFormat = gl.DEPTH_STENCIL : framebuffer.depth && framebuffer.stencil ? stencilFormat = gl.DEPTH24_STENCIL8 : framebuffer.depth ? stencilFormat = gl.DEPTH_COMPONENT24 : stencilFormat = gl.STENCIL_INDEX8, fbo.msaaBuffer ? gl.renderbufferStorageMultisample(\n gl.RENDERBUFFER,\n fbo.multisample,\n stencilFormat,\n framebuffer.width,\n framebuffer.height\n ) : gl.renderbufferStorage(gl.RENDERBUFFER, stencilFormat, framebuffer.width, framebuffer.height);\n }\n const colorTextures = framebuffer.colorTextures;\n let count = colorTextures.length;\n gl.drawBuffers || (count = Math.min(count, 1));\n for (let i = 0; i < count; i++) {\n const texture = colorTextures[i], parentTexture = texture.parentTextureArray || texture;\n this.renderer.texture.bind(parentTexture, 0), i === 0 && fbo.msaaBuffer && (gl.bindRenderbuffer(gl.RENDERBUFFER, fbo.msaaBuffer), gl.renderbufferStorageMultisample(\n gl.RENDERBUFFER,\n fbo.multisample,\n parentTexture._glTextures[this.CONTEXT_UID].internalFormat,\n framebuffer.width,\n framebuffer.height\n ));\n }\n framebuffer.depthTexture && this.writeDepthTexture && this.renderer.texture.bind(framebuffer.depthTexture, 0);\n }\n /**\n * Update the framebuffer\n * @param framebuffer\n * @param mipLevel\n * @protected\n */\n updateFramebuffer(framebuffer, mipLevel) {\n const { gl } = this, fbo = framebuffer.glFramebuffers[this.CONTEXT_UID], colorTextures = framebuffer.colorTextures;\n let count = colorTextures.length;\n gl.drawBuffers || (count = Math.min(count, 1)), fbo.multisample > 1 && this.canMultisampleFramebuffer(framebuffer) ? fbo.msaaBuffer = fbo.msaaBuffer || gl.createRenderbuffer() : fbo.msaaBuffer && (gl.deleteRenderbuffer(fbo.msaaBuffer), fbo.msaaBuffer = null, fbo.blitFramebuffer && (fbo.blitFramebuffer.dispose(), fbo.blitFramebuffer = null));\n const activeTextures = [];\n for (let i = 0; i < count; i++) {\n const texture = colorTextures[i], parentTexture = texture.parentTextureArray || texture;\n this.renderer.texture.bind(parentTexture, 0), i === 0 && fbo.msaaBuffer ? (gl.bindRenderbuffer(gl.RENDERBUFFER, fbo.msaaBuffer), gl.renderbufferStorageMultisample(\n gl.RENDERBUFFER,\n fbo.multisample,\n parentTexture._glTextures[this.CONTEXT_UID].internalFormat,\n framebuffer.width,\n framebuffer.height\n ), gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, fbo.msaaBuffer)) : (gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0 + i,\n texture.target,\n parentTexture._glTextures[this.CONTEXT_UID].texture,\n mipLevel\n ), activeTextures.push(gl.COLOR_ATTACHMENT0 + i));\n }\n if (activeTextures.length > 1 && gl.drawBuffers(activeTextures), framebuffer.depthTexture && this.writeDepthTexture) {\n const depthTexture = framebuffer.depthTexture;\n this.renderer.texture.bind(depthTexture, 0), gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.DEPTH_ATTACHMENT,\n gl.TEXTURE_2D,\n depthTexture._glTextures[this.CONTEXT_UID].texture,\n mipLevel\n );\n }\n if ((framebuffer.stencil || framebuffer.depth) && !(framebuffer.depthTexture && this.writeDepthTexture)) {\n fbo.stencil = fbo.stencil || gl.createRenderbuffer();\n let stencilAttachment, stencilFormat;\n this.renderer.context.webGLVersion === 1 ? (stencilAttachment = gl.DEPTH_STENCIL_ATTACHMENT, stencilFormat = gl.DEPTH_STENCIL) : framebuffer.depth && framebuffer.stencil ? (stencilAttachment = gl.DEPTH_STENCIL_ATTACHMENT, stencilFormat = gl.DEPTH24_STENCIL8) : framebuffer.depth ? (stencilAttachment = gl.DEPTH_ATTACHMENT, stencilFormat = gl.DEPTH_COMPONENT24) : (stencilAttachment = gl.STENCIL_ATTACHMENT, stencilFormat = gl.STENCIL_INDEX8), gl.bindRenderbuffer(gl.RENDERBUFFER, fbo.stencil), fbo.msaaBuffer ? gl.renderbufferStorageMultisample(\n gl.RENDERBUFFER,\n fbo.multisample,\n stencilFormat,\n framebuffer.width,\n framebuffer.height\n ) : gl.renderbufferStorage(gl.RENDERBUFFER, stencilFormat, framebuffer.width, framebuffer.height), gl.framebufferRenderbuffer(gl.FRAMEBUFFER, stencilAttachment, gl.RENDERBUFFER, fbo.stencil);\n } else\n fbo.stencil && (gl.deleteRenderbuffer(fbo.stencil), fbo.stencil = null);\n }\n /**\n * Returns true if the frame buffer can be multisampled.\n * @param framebuffer\n */\n canMultisampleFramebuffer(framebuffer) {\n return this.renderer.context.webGLVersion !== 1 && framebuffer.colorTextures.length <= 1 && !framebuffer.depthTexture;\n }\n /**\n * Detects number of samples that is not more than a param but as close to it as possible\n * @param samples - number of samples\n * @returns - recommended number of samples\n */\n detectSamples(samples) {\n const { msaaSamples } = this;\n let res = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MSAA_QUALITY.NONE;\n if (samples <= 1 || msaaSamples === null)\n return res;\n for (let i = 0; i < msaaSamples.length; i++)\n if (msaaSamples[i] <= samples) {\n res = msaaSamples[i];\n break;\n }\n return res === 1 && (res = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MSAA_QUALITY.NONE), res;\n }\n /**\n * Only works with WebGL2\n *\n * blits framebuffer to another of the same or bigger size\n * after that target framebuffer is bound\n *\n * Fails with WebGL warning if blits multisample framebuffer to different size\n * @param framebuffer - by default it blits \"into itself\", from renderBuffer to texture.\n * @param sourcePixels - source rectangle in pixels\n * @param destPixels - dest rectangle in pixels, assumed to be the same as sourcePixels\n */\n blit(framebuffer, sourcePixels, destPixels) {\n const { current, renderer, gl, CONTEXT_UID } = this;\n if (renderer.context.webGLVersion !== 2 || !current)\n return;\n const fbo = current.glFramebuffers[CONTEXT_UID];\n if (!fbo)\n return;\n if (!framebuffer) {\n if (!fbo.msaaBuffer)\n return;\n const colorTexture = current.colorTextures[0];\n if (!colorTexture)\n return;\n fbo.blitFramebuffer || (fbo.blitFramebuffer = new _Framebuffer_mjs__WEBPACK_IMPORTED_MODULE_4__.Framebuffer(current.width, current.height), fbo.blitFramebuffer.addColorTexture(0, colorTexture)), framebuffer = fbo.blitFramebuffer, framebuffer.colorTextures[0] !== colorTexture && (framebuffer.colorTextures[0] = colorTexture, framebuffer.dirtyId++, framebuffer.dirtyFormat++), (framebuffer.width !== current.width || framebuffer.height !== current.height) && (framebuffer.width = current.width, framebuffer.height = current.height, framebuffer.dirtyId++, framebuffer.dirtySize++);\n }\n sourcePixels || (sourcePixels = tempRectangle, sourcePixels.width = current.width, sourcePixels.height = current.height), destPixels || (destPixels = sourcePixels);\n const sameSize = sourcePixels.width === destPixels.width && sourcePixels.height === destPixels.height;\n this.bind(framebuffer), gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbo.framebuffer), gl.blitFramebuffer(\n sourcePixels.left,\n sourcePixels.top,\n sourcePixels.right,\n sourcePixels.bottom,\n destPixels.left,\n destPixels.top,\n destPixels.right,\n destPixels.bottom,\n gl.COLOR_BUFFER_BIT,\n sameSize ? gl.NEAREST : gl.LINEAR\n ), gl.bindFramebuffer(gl.READ_FRAMEBUFFER, framebuffer.glFramebuffers[this.CONTEXT_UID].framebuffer);\n }\n /**\n * Disposes framebuffer.\n * @param framebuffer - framebuffer that has to be disposed of\n * @param contextLost - If context was lost, we suppress all delete function calls\n */\n disposeFramebuffer(framebuffer, contextLost) {\n const fbo = framebuffer.glFramebuffers[this.CONTEXT_UID], gl = this.gl;\n if (!fbo)\n return;\n delete framebuffer.glFramebuffers[this.CONTEXT_UID];\n const index = this.managedFramebuffers.indexOf(framebuffer);\n index >= 0 && this.managedFramebuffers.splice(index, 1), framebuffer.disposeRunner.remove(this), contextLost || (gl.deleteFramebuffer(fbo.framebuffer), fbo.msaaBuffer && gl.deleteRenderbuffer(fbo.msaaBuffer), fbo.stencil && gl.deleteRenderbuffer(fbo.stencil)), fbo.blitFramebuffer && this.disposeFramebuffer(fbo.blitFramebuffer, contextLost);\n }\n /**\n * Disposes all framebuffers, but not textures bound to them.\n * @param [contextLost=false] - If context was lost, we suppress all delete function calls\n */\n disposeAll(contextLost) {\n const list = this.managedFramebuffers;\n this.managedFramebuffers = [];\n for (let i = 0; i < list.length; i++)\n this.disposeFramebuffer(list[i], contextLost);\n }\n /**\n * Forcing creation of stencil buffer for current framebuffer, if it wasn't done before.\n * Used by MaskSystem, when its time to use stencil mask for Graphics element.\n *\n * Its an alternative for public lazy `framebuffer.enableStencil`, in case we need stencil without rebind.\n * @private\n */\n forceStencil() {\n const framebuffer = this.current;\n if (!framebuffer)\n return;\n const fbo = framebuffer.glFramebuffers[this.CONTEXT_UID];\n if (!fbo || fbo.stencil && framebuffer.stencil)\n return;\n framebuffer.stencil = !0;\n const w = framebuffer.width, h = framebuffer.height, gl = this.gl, stencil = fbo.stencil = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, stencil);\n let stencilAttachment, stencilFormat;\n this.renderer.context.webGLVersion === 1 ? (stencilAttachment = gl.DEPTH_STENCIL_ATTACHMENT, stencilFormat = gl.DEPTH_STENCIL) : framebuffer.depth ? (stencilAttachment = gl.DEPTH_STENCIL_ATTACHMENT, stencilFormat = gl.DEPTH24_STENCIL8) : (stencilAttachment = gl.STENCIL_ATTACHMENT, stencilFormat = gl.STENCIL_INDEX8), fbo.msaaBuffer ? gl.renderbufferStorageMultisample(gl.RENDERBUFFER, fbo.multisample, stencilFormat, w, h) : gl.renderbufferStorage(gl.RENDERBUFFER, stencilFormat, w, h), gl.framebufferRenderbuffer(gl.FRAMEBUFFER, stencilAttachment, gl.RENDERBUFFER, stencil);\n }\n /** Resets framebuffer stored state, binds screen framebuffer. Should be called before renderTexture reset(). */\n reset() {\n this.current = this.unknownFramebuffer, this.viewport = new _pixi_math__WEBPACK_IMPORTED_MODULE_2__.Rectangle();\n }\n destroy() {\n this.renderer = null;\n }\n}\nFramebufferSystem.extension = {\n type: _pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.ExtensionType.RendererSystem,\n name: \"framebuffer\"\n};\n_pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.extensions.add(FramebufferSystem);\n\n//# sourceMappingURL=FramebufferSystem.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/framebuffer/FramebufferSystem.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/framebuffer/GLFramebuffer.mjs":
-/*!*******************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/framebuffer/GLFramebuffer.mjs ***!
- \*******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ GLFramebuffer: () => (/* binding */ GLFramebuffer)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n\nclass GLFramebuffer {\n constructor(framebuffer) {\n this.framebuffer = framebuffer, this.stencil = null, this.dirtyId = -1, this.dirtyFormat = -1, this.dirtySize = -1, this.multisample = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MSAA_QUALITY.NONE, this.msaaBuffer = null, this.blitFramebuffer = null, this.mipLevel = 0;\n }\n}\n\n//# sourceMappingURL=GLFramebuffer.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/framebuffer/GLFramebuffer.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/framebuffer/MultisampleSystem.mjs":
-/*!***********************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/framebuffer/MultisampleSystem.mjs ***!
- \***********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ MultisampleSystem: () => (/* binding */ MultisampleSystem)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _pixi_extensions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/extensions */ \"./node_modules/@pixi/extensions/lib/index.mjs\");\n\n\nclass MultisampleSystem {\n constructor(renderer) {\n this.renderer = renderer;\n }\n contextChange(gl) {\n let samples;\n if (this.renderer.context.webGLVersion === 1) {\n const framebuffer = gl.getParameter(gl.FRAMEBUFFER_BINDING);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null), samples = gl.getParameter(gl.SAMPLES), gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n } else {\n const framebuffer = gl.getParameter(gl.DRAW_FRAMEBUFFER_BINDING);\n gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null), samples = gl.getParameter(gl.SAMPLES), gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, framebuffer);\n }\n samples >= _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MSAA_QUALITY.HIGH ? this.multisample = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MSAA_QUALITY.HIGH : samples >= _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MSAA_QUALITY.MEDIUM ? this.multisample = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MSAA_QUALITY.MEDIUM : samples >= _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MSAA_QUALITY.LOW ? this.multisample = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MSAA_QUALITY.LOW : this.multisample = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MSAA_QUALITY.NONE;\n }\n destroy() {\n }\n}\nMultisampleSystem.extension = {\n type: _pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.ExtensionType.RendererSystem,\n name: \"_multisample\"\n};\n_pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.extensions.add(MultisampleSystem);\n\n//# sourceMappingURL=MultisampleSystem.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/framebuffer/MultisampleSystem.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/geometry/Attribute.mjs":
-/*!************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/geometry/Attribute.mjs ***!
- \************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Attribute: () => (/* binding */ Attribute)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n\nclass Attribute {\n /**\n * @param buffer - the id of the buffer that this attribute will look for\n * @param size - the size of the attribute. If you have 2 floats per vertex (eg position x and y) this would be 2.\n * @param normalized - should the data be normalized.\n * @param {PIXI.TYPES} [type=PIXI.TYPES.FLOAT] - what type of number is the attribute. Check {@link PIXI.TYPES} to see the ones available\n * @param [stride=0] - How far apart, in bytes, the start of each value is. (used for interleaving data)\n * @param [start=0] - How far into the array to start reading values (used for interleaving data)\n * @param [instance=false] - Whether the geometry is instanced.\n * @param [divisor=1] - Divisor to use when doing instanced rendering\n */\n constructor(buffer, size = 0, normalized = !1, type = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.TYPES.FLOAT, stride, start, instance, divisor = 1) {\n this.buffer = buffer, this.size = size, this.normalized = normalized, this.type = type, this.stride = stride, this.start = start, this.instance = instance, this.divisor = divisor;\n }\n /** Destroys the Attribute. */\n destroy() {\n this.buffer = null;\n }\n /**\n * Helper function that creates an Attribute based on the information provided\n * @param buffer - the id of the buffer that this attribute will look for\n * @param [size=0] - the size of the attribute. If you have 2 floats per vertex (eg position x and y) this would be 2\n * @param [normalized=false] - should the data be normalized.\n * @param [type=PIXI.TYPES.FLOAT] - what type of number is the attribute. Check {@link PIXI.TYPES} to see the ones available\n * @param [stride=0] - How far apart, in bytes, the start of each value is. (used for interleaving data)\n * @returns - A new {@link PIXI.Attribute} based on the information provided\n */\n static from(buffer, size, normalized, type, stride) {\n return new Attribute(buffer, size, normalized, type, stride);\n }\n}\n\n//# sourceMappingURL=Attribute.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/geometry/Attribute.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/geometry/Buffer.mjs":
-/*!*********************************************************!*\
- !*** ./node_modules/@pixi/core/lib/geometry/Buffer.mjs ***!
- \*********************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Buffer: () => (/* binding */ Buffer)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _pixi_runner__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/runner */ \"./node_modules/@pixi/runner/lib/index.mjs\");\n\n\nlet UID = 0;\nclass Buffer {\n /**\n * @param {PIXI.IArrayBuffer} data - the data to store in the buffer.\n * @param _static - `true` for static buffer\n * @param index - `true` for index buffer\n */\n constructor(data, _static = !0, index = !1) {\n this.data = data || new Float32Array(1), this._glBuffers = {}, this._updateID = 0, this.index = index, this.static = _static, this.id = UID++, this.disposeRunner = new _pixi_runner__WEBPACK_IMPORTED_MODULE_1__.Runner(\"disposeBuffer\");\n }\n // TODO could explore flagging only a partial upload?\n /**\n * Flags this buffer as requiring an upload to the GPU.\n * @param {PIXI.IArrayBuffer|number[]} [data] - the data to update in the buffer.\n */\n update(data) {\n data instanceof Array && (data = new Float32Array(data)), this.data = data || this.data, this._updateID++;\n }\n /** Disposes WebGL resources that are connected to this geometry. */\n dispose() {\n this.disposeRunner.emit(this, !1);\n }\n /** Destroys the buffer. */\n destroy() {\n this.dispose(), this.data = null;\n }\n /**\n * Flags whether this is an index buffer.\n *\n * Index buffers are of type `ELEMENT_ARRAY_BUFFER`. Note that setting this property to false will make\n * the buffer of type `ARRAY_BUFFER`.\n *\n * For backwards compatibility.\n */\n set index(value) {\n this.type = value ? _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BUFFER_TYPE.ELEMENT_ARRAY_BUFFER : _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BUFFER_TYPE.ARRAY_BUFFER;\n }\n get index() {\n return this.type === _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BUFFER_TYPE.ELEMENT_ARRAY_BUFFER;\n }\n /**\n * Helper function that creates a buffer based on an array or TypedArray\n * @param {ArrayBufferView | number[]} data - the TypedArray that the buffer will store. If this is a regular Array it will be converted to a Float32Array.\n * @returns - A new Buffer based on the data provided.\n */\n static from(data) {\n return data instanceof Array && (data = new Float32Array(data)), new Buffer(data);\n }\n}\n\n//# sourceMappingURL=Buffer.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/geometry/Buffer.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/geometry/BufferSystem.mjs":
-/*!***************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/geometry/BufferSystem.mjs ***!
- \***************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BufferSystem: () => (/* binding */ BufferSystem)\n/* harmony export */ });\n/* harmony import */ var _pixi_extensions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/extensions */ \"./node_modules/@pixi/extensions/lib/index.mjs\");\n/* harmony import */ var _GLBuffer_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./GLBuffer.mjs */ \"./node_modules/@pixi/core/lib/geometry/GLBuffer.mjs\");\n\n\nclass BufferSystem {\n /**\n * @param {PIXI.Renderer} renderer - The renderer this System works for.\n */\n constructor(renderer) {\n this.renderer = renderer, this.managedBuffers = {}, this.boundBufferBases = {};\n }\n /**\n * @ignore\n */\n destroy() {\n this.renderer = null;\n }\n /** Sets up the renderer context and necessary buffers. */\n contextChange() {\n this.disposeAll(!0), this.gl = this.renderer.gl, this.CONTEXT_UID = this.renderer.CONTEXT_UID;\n }\n /**\n * This binds specified buffer. On first run, it will create the webGL buffers for the context too\n * @param buffer - the buffer to bind to the renderer\n */\n bind(buffer) {\n const { gl, CONTEXT_UID } = this, glBuffer = buffer._glBuffers[CONTEXT_UID] || this.createGLBuffer(buffer);\n gl.bindBuffer(buffer.type, glBuffer.buffer);\n }\n unbind(type) {\n const { gl } = this;\n gl.bindBuffer(type, null);\n }\n /**\n * Binds an uniform buffer to at the given index.\n *\n * A cache is used so a buffer will not be bound again if already bound.\n * @param buffer - the buffer to bind\n * @param index - the base index to bind it to.\n */\n bindBufferBase(buffer, index) {\n const { gl, CONTEXT_UID } = this;\n if (this.boundBufferBases[index] !== buffer) {\n const glBuffer = buffer._glBuffers[CONTEXT_UID] || this.createGLBuffer(buffer);\n this.boundBufferBases[index] = buffer, gl.bindBufferBase(gl.UNIFORM_BUFFER, index, glBuffer.buffer);\n }\n }\n /**\n * Binds a buffer whilst also binding its range.\n * This will make the buffer start from the offset supplied rather than 0 when it is read.\n * @param buffer - the buffer to bind\n * @param index - the base index to bind at, defaults to 0\n * @param offset - the offset to bind at (this is blocks of 256). 0 = 0, 1 = 256, 2 = 512 etc\n */\n bindBufferRange(buffer, index, offset) {\n const { gl, CONTEXT_UID } = this;\n offset = offset || 0;\n const glBuffer = buffer._glBuffers[CONTEXT_UID] || this.createGLBuffer(buffer);\n gl.bindBufferRange(gl.UNIFORM_BUFFER, index || 0, glBuffer.buffer, offset * 256, 256);\n }\n /**\n * Will ensure the data in the buffer is uploaded to the GPU.\n * @param {PIXI.Buffer} buffer - the buffer to update\n */\n update(buffer) {\n const { gl, CONTEXT_UID } = this, glBuffer = buffer._glBuffers[CONTEXT_UID] || this.createGLBuffer(buffer);\n if (buffer._updateID !== glBuffer.updateID)\n if (glBuffer.updateID = buffer._updateID, gl.bindBuffer(buffer.type, glBuffer.buffer), glBuffer.byteLength >= buffer.data.byteLength)\n gl.bufferSubData(buffer.type, 0, buffer.data);\n else {\n const drawType = buffer.static ? gl.STATIC_DRAW : gl.DYNAMIC_DRAW;\n glBuffer.byteLength = buffer.data.byteLength, gl.bufferData(buffer.type, buffer.data, drawType);\n }\n }\n /**\n * Disposes buffer\n * @param {PIXI.Buffer} buffer - buffer with data\n * @param {boolean} [contextLost=false] - If context was lost, we suppress deleteVertexArray\n */\n dispose(buffer, contextLost) {\n if (!this.managedBuffers[buffer.id])\n return;\n delete this.managedBuffers[buffer.id];\n const glBuffer = buffer._glBuffers[this.CONTEXT_UID], gl = this.gl;\n buffer.disposeRunner.remove(this), glBuffer && (contextLost || gl.deleteBuffer(glBuffer.buffer), delete buffer._glBuffers[this.CONTEXT_UID]);\n }\n /**\n * dispose all WebGL resources of all managed buffers\n * @param {boolean} [contextLost=false] - If context was lost, we suppress `gl.delete` calls\n */\n disposeAll(contextLost) {\n const all = Object.keys(this.managedBuffers);\n for (let i = 0; i < all.length; i++)\n this.dispose(this.managedBuffers[all[i]], contextLost);\n }\n /**\n * creates and attaches a GLBuffer object tied to the current context.\n * @param buffer\n * @protected\n */\n createGLBuffer(buffer) {\n const { CONTEXT_UID, gl } = this;\n return buffer._glBuffers[CONTEXT_UID] = new _GLBuffer_mjs__WEBPACK_IMPORTED_MODULE_1__.GLBuffer(gl.createBuffer()), this.managedBuffers[buffer.id] = buffer, buffer.disposeRunner.add(this), buffer._glBuffers[CONTEXT_UID];\n }\n}\nBufferSystem.extension = {\n type: _pixi_extensions__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.RendererSystem,\n name: \"buffer\"\n};\n_pixi_extensions__WEBPACK_IMPORTED_MODULE_0__.extensions.add(BufferSystem);\n\n//# sourceMappingURL=BufferSystem.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/geometry/BufferSystem.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/geometry/GLBuffer.mjs":
-/*!***********************************************************!*\
- !*** ./node_modules/@pixi/core/lib/geometry/GLBuffer.mjs ***!
- \***********************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ GLBuffer: () => (/* binding */ GLBuffer)\n/* harmony export */ });\nclass GLBuffer {\n constructor(buffer) {\n this.buffer = buffer || null, this.updateID = -1, this.byteLength = -1, this.refCount = 0;\n }\n}\n\n//# sourceMappingURL=GLBuffer.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/geometry/GLBuffer.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/geometry/Geometry.mjs":
-/*!***********************************************************!*\
- !*** ./node_modules/@pixi/core/lib/geometry/Geometry.mjs ***!
- \***********************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Geometry: () => (/* binding */ Geometry)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _pixi_runner__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/runner */ \"./node_modules/@pixi/runner/lib/index.mjs\");\n/* harmony import */ var _pixi_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @pixi/utils */ \"./node_modules/@pixi/utils/lib/index.mjs\");\n/* harmony import */ var _Attribute_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Attribute.mjs */ \"./node_modules/@pixi/core/lib/geometry/Attribute.mjs\");\n/* harmony import */ var _Buffer_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Buffer.mjs */ \"./node_modules/@pixi/core/lib/geometry/Buffer.mjs\");\n/* harmony import */ var _utils_interleaveTypedArrays_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/interleaveTypedArrays.mjs */ \"./node_modules/@pixi/core/lib/geometry/utils/interleaveTypedArrays.mjs\");\n\n\n\n\n\n\nconst byteSizeMap = { 5126: 4, 5123: 2, 5121: 1 };\nlet UID = 0;\nconst map = {\n Float32Array,\n Uint32Array,\n Int32Array,\n Uint8Array,\n Uint16Array\n};\nclass Geometry {\n /**\n * @param buffers - An array of buffers. optional.\n * @param attributes - Of the geometry, optional structure of the attributes layout\n */\n constructor(buffers = [], attributes = {}) {\n this.buffers = buffers, this.indexBuffer = null, this.attributes = attributes, this.glVertexArrayObjects = {}, this.id = UID++, this.instanced = !1, this.instanceCount = 1, this.disposeRunner = new _pixi_runner__WEBPACK_IMPORTED_MODULE_1__.Runner(\"disposeGeometry\"), this.refCount = 0;\n }\n /**\n *\n * Adds an attribute to the geometry\n * Note: `stride` and `start` should be `undefined` if you dont know them, not 0!\n * @param id - the name of the attribute (matching up to a shader)\n * @param {PIXI.Buffer|number[]} buffer - the buffer that holds the data of the attribute . You can also provide an Array and a buffer will be created from it.\n * @param size - the size of the attribute. If you have 2 floats per vertex (eg position x and y) this would be 2\n * @param normalized - should the data be normalized.\n * @param [type=PIXI.TYPES.FLOAT] - what type of number is the attribute. Check {@link PIXI.TYPES} to see the ones available\n * @param [stride=0] - How far apart, in bytes, the start of each value is. (used for interleaving data)\n * @param [start=0] - How far into the array to start reading values (used for interleaving data)\n * @param instance - Instancing flag\n * @returns - Returns self, useful for chaining.\n */\n addAttribute(id, buffer, size = 0, normalized = !1, type, stride, start, instance = !1) {\n if (!buffer)\n throw new Error(\"You must pass a buffer when creating an attribute\");\n buffer instanceof _Buffer_mjs__WEBPACK_IMPORTED_MODULE_4__.Buffer || (buffer instanceof Array && (buffer = new Float32Array(buffer)), buffer = new _Buffer_mjs__WEBPACK_IMPORTED_MODULE_4__.Buffer(buffer));\n const ids = id.split(\"|\");\n if (ids.length > 1) {\n for (let i = 0; i < ids.length; i++)\n this.addAttribute(ids[i], buffer, size, normalized, type);\n return this;\n }\n let bufferIndex = this.buffers.indexOf(buffer);\n return bufferIndex === -1 && (this.buffers.push(buffer), bufferIndex = this.buffers.length - 1), this.attributes[id] = new _Attribute_mjs__WEBPACK_IMPORTED_MODULE_3__.Attribute(bufferIndex, size, normalized, type, stride, start, instance), this.instanced = this.instanced || instance, this;\n }\n /**\n * Returns the requested attribute.\n * @param id - The name of the attribute required\n * @returns - The attribute requested.\n */\n getAttribute(id) {\n return this.attributes[id];\n }\n /**\n * Returns the requested buffer.\n * @param id - The name of the buffer required.\n * @returns - The buffer requested.\n */\n getBuffer(id) {\n return this.buffers[this.getAttribute(id).buffer];\n }\n /**\n *\n * Adds an index buffer to the geometry\n * The index buffer contains integers, three for each triangle in the geometry, which reference the various attribute buffers (position, colour, UV coordinates, other UV coordinates, normal, …). There is only ONE index buffer.\n * @param {PIXI.Buffer|number[]} [buffer] - The buffer that holds the data of the index buffer. You can also provide an Array and a buffer will be created from it.\n * @returns - Returns self, useful for chaining.\n */\n addIndex(buffer) {\n return buffer instanceof _Buffer_mjs__WEBPACK_IMPORTED_MODULE_4__.Buffer || (buffer instanceof Array && (buffer = new Uint16Array(buffer)), buffer = new _Buffer_mjs__WEBPACK_IMPORTED_MODULE_4__.Buffer(buffer)), buffer.type = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BUFFER_TYPE.ELEMENT_ARRAY_BUFFER, this.indexBuffer = buffer, this.buffers.includes(buffer) || this.buffers.push(buffer), this;\n }\n /**\n * Returns the index buffer\n * @returns - The index buffer.\n */\n getIndex() {\n return this.indexBuffer;\n }\n /**\n * This function modifies the structure so that all current attributes become interleaved into a single buffer\n * This can be useful if your model remains static as it offers a little performance boost\n * @returns - Returns self, useful for chaining.\n */\n interleave() {\n if (this.buffers.length === 1 || this.buffers.length === 2 && this.indexBuffer)\n return this;\n const arrays = [], sizes = [], interleavedBuffer = new _Buffer_mjs__WEBPACK_IMPORTED_MODULE_4__.Buffer();\n let i;\n for (i in this.attributes) {\n const attribute = this.attributes[i], buffer = this.buffers[attribute.buffer];\n arrays.push(buffer.data), sizes.push(attribute.size * byteSizeMap[attribute.type] / 4), attribute.buffer = 0;\n }\n for (interleavedBuffer.data = (0,_utils_interleaveTypedArrays_mjs__WEBPACK_IMPORTED_MODULE_5__.interleaveTypedArrays)(arrays, sizes), i = 0; i < this.buffers.length; i++)\n this.buffers[i] !== this.indexBuffer && this.buffers[i].destroy();\n return this.buffers = [interleavedBuffer], this.indexBuffer && this.buffers.push(this.indexBuffer), this;\n }\n /** Get the size of the geometries, in vertices. */\n getSize() {\n for (const i in this.attributes) {\n const attribute = this.attributes[i];\n return this.buffers[attribute.buffer].data.length / (attribute.stride / 4 || attribute.size);\n }\n return 0;\n }\n /** Disposes WebGL resources that are connected to this geometry. */\n dispose() {\n this.disposeRunner.emit(this, !1);\n }\n /** Destroys the geometry. */\n destroy() {\n this.dispose(), this.buffers = null, this.indexBuffer = null, this.attributes = null;\n }\n /**\n * Returns a clone of the geometry.\n * @returns - A new clone of this geometry.\n */\n clone() {\n const geometry = new Geometry();\n for (let i = 0; i < this.buffers.length; i++)\n geometry.buffers[i] = new _Buffer_mjs__WEBPACK_IMPORTED_MODULE_4__.Buffer(this.buffers[i].data.slice(0));\n for (const i in this.attributes) {\n const attrib = this.attributes[i];\n geometry.attributes[i] = new _Attribute_mjs__WEBPACK_IMPORTED_MODULE_3__.Attribute(\n attrib.buffer,\n attrib.size,\n attrib.normalized,\n attrib.type,\n attrib.stride,\n attrib.start,\n attrib.instance\n );\n }\n return this.indexBuffer && (geometry.indexBuffer = geometry.buffers[this.buffers.indexOf(this.indexBuffer)], geometry.indexBuffer.type = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BUFFER_TYPE.ELEMENT_ARRAY_BUFFER), geometry;\n }\n /**\n * Merges an array of geometries into a new single one.\n *\n * Geometry attribute styles must match for this operation to work.\n * @param geometries - array of geometries to merge\n * @returns - Shiny new geometry!\n */\n static merge(geometries) {\n const geometryOut = new Geometry(), arrays = [], sizes = [], offsets = [];\n let geometry;\n for (let i = 0; i < geometries.length; i++) {\n geometry = geometries[i];\n for (let j = 0; j < geometry.buffers.length; j++)\n sizes[j] = sizes[j] || 0, sizes[j] += geometry.buffers[j].data.length, offsets[j] = 0;\n }\n for (let i = 0; i < geometry.buffers.length; i++)\n arrays[i] = new map[(0,_pixi_utils__WEBPACK_IMPORTED_MODULE_2__.getBufferType)(geometry.buffers[i].data)](sizes[i]), geometryOut.buffers[i] = new _Buffer_mjs__WEBPACK_IMPORTED_MODULE_4__.Buffer(arrays[i]);\n for (let i = 0; i < geometries.length; i++) {\n geometry = geometries[i];\n for (let j = 0; j < geometry.buffers.length; j++)\n arrays[j].set(geometry.buffers[j].data, offsets[j]), offsets[j] += geometry.buffers[j].data.length;\n }\n if (geometryOut.attributes = geometry.attributes, geometry.indexBuffer) {\n geometryOut.indexBuffer = geometryOut.buffers[geometry.buffers.indexOf(geometry.indexBuffer)], geometryOut.indexBuffer.type = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BUFFER_TYPE.ELEMENT_ARRAY_BUFFER;\n let offset = 0, stride = 0, offset2 = 0, bufferIndexToCount = 0;\n for (let i = 0; i < geometry.buffers.length; i++)\n if (geometry.buffers[i] !== geometry.indexBuffer) {\n bufferIndexToCount = i;\n break;\n }\n for (const i in geometry.attributes) {\n const attribute = geometry.attributes[i];\n (attribute.buffer | 0) === bufferIndexToCount && (stride += attribute.size * byteSizeMap[attribute.type] / 4);\n }\n for (let i = 0; i < geometries.length; i++) {\n const indexBufferData = geometries[i].indexBuffer.data;\n for (let j = 0; j < indexBufferData.length; j++)\n geometryOut.indexBuffer.data[j + offset2] += offset;\n offset += geometries[i].buffers[bufferIndexToCount].data.length / stride, offset2 += indexBufferData.length;\n }\n }\n return geometryOut;\n }\n}\n\n//# sourceMappingURL=Geometry.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/geometry/Geometry.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/geometry/GeometrySystem.mjs":
-/*!*****************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/geometry/GeometrySystem.mjs ***!
- \*****************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ GeometrySystem: () => (/* binding */ GeometrySystem)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _pixi_extensions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/extensions */ \"./node_modules/@pixi/extensions/lib/index.mjs\");\n/* harmony import */ var _pixi_settings__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @pixi/settings */ \"./node_modules/@pixi/settings/lib/index.mjs\");\n\n\n\nconst byteSizeMap = { 5126: 4, 5123: 2, 5121: 1 };\nclass GeometrySystem {\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n this.renderer = renderer, this._activeGeometry = null, this._activeVao = null, this.hasVao = !0, this.hasInstance = !0, this.canUseUInt32ElementIndex = !1, this.managedGeometries = {};\n }\n /** Sets up the renderer context and necessary buffers. */\n contextChange() {\n this.disposeAll(!0);\n const gl = this.gl = this.renderer.gl, context = this.renderer.context;\n if (this.CONTEXT_UID = this.renderer.CONTEXT_UID, context.webGLVersion !== 2) {\n let nativeVaoExtension = this.renderer.context.extensions.vertexArrayObject;\n _pixi_settings__WEBPACK_IMPORTED_MODULE_2__.settings.PREFER_ENV === _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.ENV.WEBGL_LEGACY && (nativeVaoExtension = null), nativeVaoExtension ? (gl.createVertexArray = () => nativeVaoExtension.createVertexArrayOES(), gl.bindVertexArray = (vao) => nativeVaoExtension.bindVertexArrayOES(vao), gl.deleteVertexArray = (vao) => nativeVaoExtension.deleteVertexArrayOES(vao)) : (this.hasVao = !1, gl.createVertexArray = () => null, gl.bindVertexArray = () => null, gl.deleteVertexArray = () => null);\n }\n if (context.webGLVersion !== 2) {\n const instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n instanceExt ? (gl.vertexAttribDivisor = (a, b) => instanceExt.vertexAttribDivisorANGLE(a, b), gl.drawElementsInstanced = (a, b, c, d, e) => instanceExt.drawElementsInstancedANGLE(a, b, c, d, e), gl.drawArraysInstanced = (a, b, c, d) => instanceExt.drawArraysInstancedANGLE(a, b, c, d)) : this.hasInstance = !1;\n }\n this.canUseUInt32ElementIndex = context.webGLVersion === 2 || !!context.extensions.uint32ElementIndex;\n }\n /**\n * Binds geometry so that is can be drawn. Creating a Vao if required\n * @param geometry - Instance of geometry to bind.\n * @param shader - Instance of shader to use vao for.\n */\n bind(geometry, shader) {\n shader = shader || this.renderer.shader.shader;\n const { gl } = this;\n let vaos = geometry.glVertexArrayObjects[this.CONTEXT_UID], incRefCount = !1;\n vaos || (this.managedGeometries[geometry.id] = geometry, geometry.disposeRunner.add(this), geometry.glVertexArrayObjects[this.CONTEXT_UID] = vaos = {}, incRefCount = !0);\n const vao = vaos[shader.program.id] || this.initGeometryVao(geometry, shader, incRefCount);\n this._activeGeometry = geometry, this._activeVao !== vao && (this._activeVao = vao, this.hasVao ? gl.bindVertexArray(vao) : this.activateVao(geometry, shader.program)), this.updateBuffers();\n }\n /** Reset and unbind any active VAO and geometry. */\n reset() {\n this.unbind();\n }\n /** Update buffers of the currently bound geometry. */\n updateBuffers() {\n const geometry = this._activeGeometry, bufferSystem = this.renderer.buffer;\n for (let i = 0; i < geometry.buffers.length; i++) {\n const buffer = geometry.buffers[i];\n bufferSystem.update(buffer);\n }\n }\n /**\n * Check compatibility between a geometry and a program\n * @param geometry - Geometry instance.\n * @param program - Program instance.\n */\n checkCompatibility(geometry, program) {\n const geometryAttributes = geometry.attributes, shaderAttributes = program.attributeData;\n for (const j in shaderAttributes)\n if (!geometryAttributes[j])\n throw new Error(`shader and geometry incompatible, geometry missing the \"${j}\" attribute`);\n }\n /**\n * Takes a geometry and program and generates a unique signature for them.\n * @param geometry - To get signature from.\n * @param program - To test geometry against.\n * @returns - Unique signature of the geometry and program\n */\n getSignature(geometry, program) {\n const attribs = geometry.attributes, shaderAttributes = program.attributeData, strings = [\"g\", geometry.id];\n for (const i in attribs)\n shaderAttributes[i] && strings.push(i, shaderAttributes[i].location);\n return strings.join(\"-\");\n }\n /**\n * Creates or gets Vao with the same structure as the geometry and stores it on the geometry.\n * If vao is created, it is bound automatically. We use a shader to infer what and how to set up the\n * attribute locations.\n * @param geometry - Instance of geometry to to generate Vao for.\n * @param shader - Instance of the shader.\n * @param incRefCount - Increment refCount of all geometry buffers.\n */\n initGeometryVao(geometry, shader, incRefCount = !0) {\n const gl = this.gl, CONTEXT_UID = this.CONTEXT_UID, bufferSystem = this.renderer.buffer, program = shader.program;\n program.glPrograms[CONTEXT_UID] || this.renderer.shader.generateProgram(shader), this.checkCompatibility(geometry, program);\n const signature = this.getSignature(geometry, program), vaoObjectHash = geometry.glVertexArrayObjects[this.CONTEXT_UID];\n let vao = vaoObjectHash[signature];\n if (vao)\n return vaoObjectHash[program.id] = vao, vao;\n const buffers = geometry.buffers, attributes = geometry.attributes, tempStride = {}, tempStart = {};\n for (const j in buffers)\n tempStride[j] = 0, tempStart[j] = 0;\n for (const j in attributes)\n !attributes[j].size && program.attributeData[j] ? attributes[j].size = program.attributeData[j].size : attributes[j].size || console.warn(`PIXI Geometry attribute '${j}' size cannot be determined (likely the bound shader does not have the attribute)`), tempStride[attributes[j].buffer] += attributes[j].size * byteSizeMap[attributes[j].type];\n for (const j in attributes) {\n const attribute = attributes[j], attribSize = attribute.size;\n attribute.stride === void 0 && (tempStride[attribute.buffer] === attribSize * byteSizeMap[attribute.type] ? attribute.stride = 0 : attribute.stride = tempStride[attribute.buffer]), attribute.start === void 0 && (attribute.start = tempStart[attribute.buffer], tempStart[attribute.buffer] += attribSize * byteSizeMap[attribute.type]);\n }\n vao = gl.createVertexArray(), gl.bindVertexArray(vao);\n for (let i = 0; i < buffers.length; i++) {\n const buffer = buffers[i];\n bufferSystem.bind(buffer), incRefCount && buffer._glBuffers[CONTEXT_UID].refCount++;\n }\n return this.activateVao(geometry, program), vaoObjectHash[program.id] = vao, vaoObjectHash[signature] = vao, gl.bindVertexArray(null), bufferSystem.unbind(_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BUFFER_TYPE.ARRAY_BUFFER), vao;\n }\n /**\n * Disposes geometry.\n * @param geometry - Geometry with buffers. Only VAO will be disposed\n * @param [contextLost=false] - If context was lost, we suppress deleteVertexArray\n */\n disposeGeometry(geometry, contextLost) {\n if (!this.managedGeometries[geometry.id])\n return;\n delete this.managedGeometries[geometry.id];\n const vaos = geometry.glVertexArrayObjects[this.CONTEXT_UID], gl = this.gl, buffers = geometry.buffers, bufferSystem = this.renderer?.buffer;\n if (geometry.disposeRunner.remove(this), !!vaos) {\n if (bufferSystem)\n for (let i = 0; i < buffers.length; i++) {\n const buf = buffers[i]._glBuffers[this.CONTEXT_UID];\n buf && (buf.refCount--, buf.refCount === 0 && !contextLost && bufferSystem.dispose(buffers[i], contextLost));\n }\n if (!contextLost) {\n for (const vaoId in vaos)\n if (vaoId[0] === \"g\") {\n const vao = vaos[vaoId];\n this._activeVao === vao && this.unbind(), gl.deleteVertexArray(vao);\n }\n }\n delete geometry.glVertexArrayObjects[this.CONTEXT_UID];\n }\n }\n /**\n * Dispose all WebGL resources of all managed geometries.\n * @param [contextLost=false] - If context was lost, we suppress `gl.delete` calls\n */\n disposeAll(contextLost) {\n const all = Object.keys(this.managedGeometries);\n for (let i = 0; i < all.length; i++)\n this.disposeGeometry(this.managedGeometries[all[i]], contextLost);\n }\n /**\n * Activate vertex array object.\n * @param geometry - Geometry instance.\n * @param program - Shader program instance.\n */\n activateVao(geometry, program) {\n const gl = this.gl, CONTEXT_UID = this.CONTEXT_UID, bufferSystem = this.renderer.buffer, buffers = geometry.buffers, attributes = geometry.attributes;\n geometry.indexBuffer && bufferSystem.bind(geometry.indexBuffer);\n let lastBuffer = null;\n for (const j in attributes) {\n const attribute = attributes[j], buffer = buffers[attribute.buffer], glBuffer = buffer._glBuffers[CONTEXT_UID];\n if (program.attributeData[j]) {\n lastBuffer !== glBuffer && (bufferSystem.bind(buffer), lastBuffer = glBuffer);\n const location = program.attributeData[j].location;\n if (gl.enableVertexAttribArray(location), gl.vertexAttribPointer(\n location,\n attribute.size,\n attribute.type || gl.FLOAT,\n attribute.normalized,\n attribute.stride,\n attribute.start\n ), attribute.instance)\n if (this.hasInstance)\n gl.vertexAttribDivisor(location, attribute.divisor);\n else\n throw new Error(\"geometry error, GPU Instancing is not supported on this device\");\n }\n }\n }\n /**\n * Draws the currently bound geometry.\n * @param type - The type primitive to render.\n * @param size - The number of elements to be rendered. If not specified, all vertices after the\n * starting vertex will be drawn.\n * @param start - The starting vertex in the geometry to start drawing from. If not specified,\n * drawing will start from the first vertex.\n * @param instanceCount - The number of instances of the set of elements to execute. If not specified,\n * all instances will be drawn.\n */\n draw(type, size, start, instanceCount) {\n const { gl } = this, geometry = this._activeGeometry;\n if (geometry.indexBuffer) {\n const byteSize = geometry.indexBuffer.data.BYTES_PER_ELEMENT, glType = byteSize === 2 ? gl.UNSIGNED_SHORT : gl.UNSIGNED_INT;\n byteSize === 2 || byteSize === 4 && this.canUseUInt32ElementIndex ? geometry.instanced ? gl.drawElementsInstanced(type, size || geometry.indexBuffer.data.length, glType, (start || 0) * byteSize, instanceCount || 1) : gl.drawElements(type, size || geometry.indexBuffer.data.length, glType, (start || 0) * byteSize) : console.warn(\"unsupported index buffer type: uint32\");\n } else\n geometry.instanced ? gl.drawArraysInstanced(type, start, size || geometry.getSize(), instanceCount || 1) : gl.drawArrays(type, start, size || geometry.getSize());\n return this;\n }\n /** Unbind/reset everything. */\n unbind() {\n this.gl.bindVertexArray(null), this._activeVao = null, this._activeGeometry = null;\n }\n destroy() {\n this.renderer = null;\n }\n}\nGeometrySystem.extension = {\n type: _pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.ExtensionType.RendererSystem,\n name: \"geometry\"\n};\n_pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.extensions.add(GeometrySystem);\n\n//# sourceMappingURL=GeometrySystem.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/geometry/GeometrySystem.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/geometry/ViewableBuffer.mjs":
-/*!*****************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/geometry/ViewableBuffer.mjs ***!
- \*****************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ViewableBuffer: () => (/* binding */ ViewableBuffer)\n/* harmony export */ });\nclass ViewableBuffer {\n constructor(sizeOrBuffer) {\n typeof sizeOrBuffer == \"number\" ? this.rawBinaryData = new ArrayBuffer(sizeOrBuffer) : sizeOrBuffer instanceof Uint8Array ? this.rawBinaryData = sizeOrBuffer.buffer : this.rawBinaryData = sizeOrBuffer, this.uint32View = new Uint32Array(this.rawBinaryData), this.float32View = new Float32Array(this.rawBinaryData);\n }\n /** View on the raw binary data as a `Int8Array`. */\n get int8View() {\n return this._int8View || (this._int8View = new Int8Array(this.rawBinaryData)), this._int8View;\n }\n /** View on the raw binary data as a `Uint8Array`. */\n get uint8View() {\n return this._uint8View || (this._uint8View = new Uint8Array(this.rawBinaryData)), this._uint8View;\n }\n /** View on the raw binary data as a `Int16Array`. */\n get int16View() {\n return this._int16View || (this._int16View = new Int16Array(this.rawBinaryData)), this._int16View;\n }\n /** View on the raw binary data as a `Uint16Array`. */\n get uint16View() {\n return this._uint16View || (this._uint16View = new Uint16Array(this.rawBinaryData)), this._uint16View;\n }\n /** View on the raw binary data as a `Int32Array`. */\n get int32View() {\n return this._int32View || (this._int32View = new Int32Array(this.rawBinaryData)), this._int32View;\n }\n /**\n * Returns the view of the given type.\n * @param type - One of `int8`, `uint8`, `int16`,\n * `uint16`, `int32`, `uint32`, and `float32`.\n * @returns - typed array of given type\n */\n view(type) {\n return this[`${type}View`];\n }\n /** Destroys all buffer references. Do not use after calling this. */\n destroy() {\n this.rawBinaryData = null, this._int8View = null, this._uint8View = null, this._int16View = null, this._uint16View = null, this._int32View = null, this.uint32View = null, this.float32View = null;\n }\n static sizeOf(type) {\n switch (type) {\n case \"int8\":\n case \"uint8\":\n return 1;\n case \"int16\":\n case \"uint16\":\n return 2;\n case \"int32\":\n case \"uint32\":\n case \"float32\":\n return 4;\n default:\n throw new Error(`${type} isn't a valid view type`);\n }\n }\n}\n\n//# sourceMappingURL=ViewableBuffer.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/geometry/ViewableBuffer.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/geometry/utils/interleaveTypedArrays.mjs":
-/*!******************************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/geometry/utils/interleaveTypedArrays.mjs ***!
- \******************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ interleaveTypedArrays: () => (/* binding */ interleaveTypedArrays)\n/* harmony export */ });\n/* harmony import */ var _pixi_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/utils */ \"./node_modules/@pixi/utils/lib/index.mjs\");\n\nconst map = {\n Float32Array,\n Uint32Array,\n Int32Array,\n Uint8Array\n};\nfunction interleaveTypedArrays(arrays, sizes) {\n let outSize = 0, stride = 0;\n const views = {};\n for (let i = 0; i < arrays.length; i++)\n stride += sizes[i], outSize += arrays[i].length;\n const buffer = new ArrayBuffer(outSize * 4);\n let out = null, littleOffset = 0;\n for (let i = 0; i < arrays.length; i++) {\n const size = sizes[i], array = arrays[i], type = (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_0__.getBufferType)(array);\n views[type] || (views[type] = new map[type](buffer)), out = views[type];\n for (let j = 0; j < array.length; j++) {\n const indexStart = (j / size | 0) * stride + littleOffset, index = j % size;\n out[indexStart + index] = array[j];\n }\n littleOffset += size;\n }\n return new Float32Array(buffer);\n}\n\n//# sourceMappingURL=interleaveTypedArrays.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/geometry/utils/interleaveTypedArrays.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/index.mjs":
-/*!***********************************************!*\
- !*** ./node_modules/@pixi/core/lib/index.mjs ***!
- \***********************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ALPHA_MODES: () => (/* reexport safe */ _pixi_constants__WEBPACK_IMPORTED_MODULE_2__.ALPHA_MODES),\n/* harmony export */ AbstractMultiResource: () => (/* reexport safe */ _textures_resources_AbstractMultiResource_mjs__WEBPACK_IMPORTED_MODULE_81__.AbstractMultiResource),\n/* harmony export */ ArrayResource: () => (/* reexport safe */ _textures_resources_ArrayResource_mjs__WEBPACK_IMPORTED_MODULE_82__.ArrayResource),\n/* harmony export */ Attribute: () => (/* reexport safe */ _geometry_Attribute_mjs__WEBPACK_IMPORTED_MODULE_29__.Attribute),\n/* harmony export */ BLEND_MODES: () => (/* reexport safe */ _pixi_constants__WEBPACK_IMPORTED_MODULE_2__.BLEND_MODES),\n/* harmony export */ BUFFER_BITS: () => (/* reexport safe */ _pixi_constants__WEBPACK_IMPORTED_MODULE_2__.BUFFER_BITS),\n/* harmony export */ BUFFER_TYPE: () => (/* reexport safe */ _pixi_constants__WEBPACK_IMPORTED_MODULE_2__.BUFFER_TYPE),\n/* harmony export */ BackgroundSystem: () => (/* reexport safe */ _background_BackgroundSystem_mjs__WEBPACK_IMPORTED_MODULE_10__.BackgroundSystem),\n/* harmony export */ BaseImageResource: () => (/* reexport safe */ _textures_resources_BaseImageResource_mjs__WEBPACK_IMPORTED_MODULE_79__.BaseImageResource),\n/* harmony export */ BaseRenderTexture: () => (/* reexport safe */ _renderTexture_BaseRenderTexture_mjs__WEBPACK_IMPORTED_MODULE_44__.BaseRenderTexture),\n/* harmony export */ BaseTexture: () => (/* reexport safe */ _textures_BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_65__.BaseTexture),\n/* harmony export */ BatchDrawCall: () => (/* reexport safe */ _batch_BatchDrawCall_mjs__WEBPACK_IMPORTED_MODULE_11__.BatchDrawCall),\n/* harmony export */ BatchGeometry: () => (/* reexport safe */ _batch_BatchGeometry_mjs__WEBPACK_IMPORTED_MODULE_12__.BatchGeometry),\n/* harmony export */ BatchRenderer: () => (/* reexport safe */ _batch_BatchRenderer_mjs__WEBPACK_IMPORTED_MODULE_13__.BatchRenderer),\n/* harmony export */ BatchShaderGenerator: () => (/* reexport safe */ _batch_BatchShaderGenerator_mjs__WEBPACK_IMPORTED_MODULE_14__.BatchShaderGenerator),\n/* harmony export */ BatchSystem: () => (/* reexport safe */ _batch_BatchSystem_mjs__WEBPACK_IMPORTED_MODULE_15__.BatchSystem),\n/* harmony export */ BatchTextureArray: () => (/* reexport safe */ _batch_BatchTextureArray_mjs__WEBPACK_IMPORTED_MODULE_16__.BatchTextureArray),\n/* harmony export */ BrowserAdapter: () => (/* reexport safe */ _pixi_settings__WEBPACK_IMPORTED_MODULE_6__.BrowserAdapter),\n/* harmony export */ Buffer: () => (/* reexport safe */ _geometry_Buffer_mjs__WEBPACK_IMPORTED_MODULE_30__.Buffer),\n/* harmony export */ BufferResource: () => (/* reexport safe */ _textures_resources_BufferResource_mjs__WEBPACK_IMPORTED_MODULE_84__.BufferResource),\n/* harmony export */ BufferSystem: () => (/* reexport safe */ _geometry_BufferSystem_mjs__WEBPACK_IMPORTED_MODULE_31__.BufferSystem),\n/* harmony export */ CLEAR_MODES: () => (/* reexport safe */ _pixi_constants__WEBPACK_IMPORTED_MODULE_2__.CLEAR_MODES),\n/* harmony export */ COLOR_MASK_BITS: () => (/* reexport safe */ _pixi_constants__WEBPACK_IMPORTED_MODULE_2__.COLOR_MASK_BITS),\n/* harmony export */ CanvasResource: () => (/* reexport safe */ _textures_resources_CanvasResource_mjs__WEBPACK_IMPORTED_MODULE_85__.CanvasResource),\n/* harmony export */ Circle: () => (/* reexport safe */ _pixi_math__WEBPACK_IMPORTED_MODULE_4__.Circle),\n/* harmony export */ Color: () => (/* reexport safe */ _pixi_color__WEBPACK_IMPORTED_MODULE_1__.Color),\n/* harmony export */ ContextSystem: () => (/* reexport safe */ _context_ContextSystem_mjs__WEBPACK_IMPORTED_MODULE_18__.ContextSystem),\n/* harmony export */ CubeResource: () => (/* reexport safe */ _textures_resources_CubeResource_mjs__WEBPACK_IMPORTED_MODULE_86__.CubeResource),\n/* harmony export */ DEG_TO_RAD: () => (/* reexport safe */ _pixi_math__WEBPACK_IMPORTED_MODULE_4__.DEG_TO_RAD),\n/* harmony export */ DRAW_MODES: () => (/* reexport safe */ _pixi_constants__WEBPACK_IMPORTED_MODULE_2__.DRAW_MODES),\n/* harmony export */ ENV: () => (/* reexport safe */ _pixi_constants__WEBPACK_IMPORTED_MODULE_2__.ENV),\n/* harmony export */ Ellipse: () => (/* reexport safe */ _pixi_math__WEBPACK_IMPORTED_MODULE_4__.Ellipse),\n/* harmony export */ ExtensionType: () => (/* reexport safe */ _pixi_extensions__WEBPACK_IMPORTED_MODULE_3__.ExtensionType),\n/* harmony export */ FORMATS: () => (/* reexport safe */ _pixi_constants__WEBPACK_IMPORTED_MODULE_2__.FORMATS),\n/* harmony export */ Filter: () => (/* reexport safe */ _filters_Filter_mjs__WEBPACK_IMPORTED_MODULE_19__.Filter),\n/* harmony export */ FilterState: () => (/* reexport safe */ _filters_FilterState_mjs__WEBPACK_IMPORTED_MODULE_20__.FilterState),\n/* harmony export */ FilterSystem: () => (/* reexport safe */ _filters_FilterSystem_mjs__WEBPACK_IMPORTED_MODULE_21__.FilterSystem),\n/* harmony export */ Framebuffer: () => (/* reexport safe */ _framebuffer_Framebuffer_mjs__WEBPACK_IMPORTED_MODULE_25__.Framebuffer),\n/* harmony export */ FramebufferSystem: () => (/* reexport safe */ _framebuffer_FramebufferSystem_mjs__WEBPACK_IMPORTED_MODULE_26__.FramebufferSystem),\n/* harmony export */ GC_MODES: () => (/* reexport safe */ _pixi_constants__WEBPACK_IMPORTED_MODULE_2__.GC_MODES),\n/* harmony export */ GLFramebuffer: () => (/* reexport safe */ _framebuffer_GLFramebuffer_mjs__WEBPACK_IMPORTED_MODULE_27__.GLFramebuffer),\n/* harmony export */ GLProgram: () => (/* reexport safe */ _shader_GLProgram_mjs__WEBPACK_IMPORTED_MODULE_49__.GLProgram),\n/* harmony export */ GLTexture: () => (/* reexport safe */ _textures_GLTexture_mjs__WEBPACK_IMPORTED_MODULE_66__.GLTexture),\n/* harmony export */ GenerateTextureSystem: () => (/* reexport safe */ _renderTexture_GenerateTextureSystem_mjs__WEBPACK_IMPORTED_MODULE_45__.GenerateTextureSystem),\n/* harmony export */ Geometry: () => (/* reexport safe */ _geometry_Geometry_mjs__WEBPACK_IMPORTED_MODULE_32__.Geometry),\n/* harmony export */ GeometrySystem: () => (/* reexport safe */ _geometry_GeometrySystem_mjs__WEBPACK_IMPORTED_MODULE_33__.GeometrySystem),\n/* harmony export */ IGLUniformData: () => (/* reexport safe */ _shader_GLProgram_mjs__WEBPACK_IMPORTED_MODULE_49__.IGLUniformData),\n/* harmony export */ INSTALLED: () => (/* reexport safe */ _textures_resources_autoDetectResource_mjs__WEBPACK_IMPORTED_MODULE_83__.INSTALLED),\n/* harmony export */ ImageBitmapResource: () => (/* reexport safe */ _textures_resources_ImageBitmapResource_mjs__WEBPACK_IMPORTED_MODULE_87__.ImageBitmapResource),\n/* harmony export */ ImageResource: () => (/* reexport safe */ _textures_resources_ImageResource_mjs__WEBPACK_IMPORTED_MODULE_88__.ImageResource),\n/* harmony export */ MASK_TYPES: () => (/* reexport safe */ _pixi_constants__WEBPACK_IMPORTED_MODULE_2__.MASK_TYPES),\n/* harmony export */ MIPMAP_MODES: () => (/* reexport safe */ _pixi_constants__WEBPACK_IMPORTED_MODULE_2__.MIPMAP_MODES),\n/* harmony export */ MSAA_QUALITY: () => (/* reexport safe */ _pixi_constants__WEBPACK_IMPORTED_MODULE_2__.MSAA_QUALITY),\n/* harmony export */ MaskData: () => (/* reexport safe */ _mask_MaskData_mjs__WEBPACK_IMPORTED_MODULE_36__.MaskData),\n/* harmony export */ MaskSystem: () => (/* reexport safe */ _mask_MaskSystem_mjs__WEBPACK_IMPORTED_MODULE_37__.MaskSystem),\n/* harmony export */ Matrix: () => (/* reexport safe */ _pixi_math__WEBPACK_IMPORTED_MODULE_4__.Matrix),\n/* harmony export */ MultisampleSystem: () => (/* reexport safe */ _framebuffer_MultisampleSystem_mjs__WEBPACK_IMPORTED_MODULE_28__.MultisampleSystem),\n/* harmony export */ ObjectRenderer: () => (/* reexport safe */ _batch_ObjectRenderer_mjs__WEBPACK_IMPORTED_MODULE_17__.ObjectRenderer),\n/* harmony export */ ObjectRendererSystem: () => (/* reexport safe */ _render_ObjectRendererSystem_mjs__WEBPACK_IMPORTED_MODULE_42__.ObjectRendererSystem),\n/* harmony export */ ObservablePoint: () => (/* reexport safe */ _pixi_math__WEBPACK_IMPORTED_MODULE_4__.ObservablePoint),\n/* harmony export */ PI_2: () => (/* reexport safe */ _pixi_math__WEBPACK_IMPORTED_MODULE_4__.PI_2),\n/* harmony export */ PRECISION: () => (/* reexport safe */ _pixi_constants__WEBPACK_IMPORTED_MODULE_2__.PRECISION),\n/* harmony export */ PluginSystem: () => (/* reexport safe */ _plugin_PluginSystem_mjs__WEBPACK_IMPORTED_MODULE_40__.PluginSystem),\n/* harmony export */ Point: () => (/* reexport safe */ _pixi_math__WEBPACK_IMPORTED_MODULE_4__.Point),\n/* harmony export */ Polygon: () => (/* reexport safe */ _pixi_math__WEBPACK_IMPORTED_MODULE_4__.Polygon),\n/* harmony export */ Program: () => (/* reexport safe */ _shader_Program_mjs__WEBPACK_IMPORTED_MODULE_50__.Program),\n/* harmony export */ ProjectionSystem: () => (/* reexport safe */ _projection_ProjectionSystem_mjs__WEBPACK_IMPORTED_MODULE_41__.ProjectionSystem),\n/* harmony export */ Quad: () => (/* reexport safe */ _utils_Quad_mjs__WEBPACK_IMPORTED_MODULE_75__.Quad),\n/* harmony export */ QuadUv: () => (/* reexport safe */ _utils_QuadUv_mjs__WEBPACK_IMPORTED_MODULE_76__.QuadUv),\n/* harmony export */ RAD_TO_DEG: () => (/* reexport safe */ _pixi_math__WEBPACK_IMPORTED_MODULE_4__.RAD_TO_DEG),\n/* harmony export */ RENDERER_TYPE: () => (/* reexport safe */ _pixi_constants__WEBPACK_IMPORTED_MODULE_2__.RENDERER_TYPE),\n/* harmony export */ Rectangle: () => (/* reexport safe */ _pixi_math__WEBPACK_IMPORTED_MODULE_4__.Rectangle),\n/* harmony export */ RenderTexture: () => (/* reexport safe */ _renderTexture_RenderTexture_mjs__WEBPACK_IMPORTED_MODULE_46__.RenderTexture),\n/* harmony export */ RenderTexturePool: () => (/* reexport safe */ _renderTexture_RenderTexturePool_mjs__WEBPACK_IMPORTED_MODULE_47__.RenderTexturePool),\n/* harmony export */ RenderTextureSystem: () => (/* reexport safe */ _renderTexture_RenderTextureSystem_mjs__WEBPACK_IMPORTED_MODULE_48__.RenderTextureSystem),\n/* harmony export */ Renderer: () => (/* reexport safe */ _Renderer_mjs__WEBPACK_IMPORTED_MODULE_43__.Renderer),\n/* harmony export */ Resource: () => (/* reexport safe */ _textures_resources_Resource_mjs__WEBPACK_IMPORTED_MODULE_80__.Resource),\n/* harmony export */ RoundedRectangle: () => (/* reexport safe */ _pixi_math__WEBPACK_IMPORTED_MODULE_4__.RoundedRectangle),\n/* harmony export */ Runner: () => (/* reexport safe */ _pixi_runner__WEBPACK_IMPORTED_MODULE_5__.Runner),\n/* harmony export */ SAMPLER_TYPES: () => (/* reexport safe */ _pixi_constants__WEBPACK_IMPORTED_MODULE_2__.SAMPLER_TYPES),\n/* harmony export */ SCALE_MODES: () => (/* reexport safe */ _pixi_constants__WEBPACK_IMPORTED_MODULE_2__.SCALE_MODES),\n/* harmony export */ SHAPES: () => (/* reexport safe */ _pixi_math__WEBPACK_IMPORTED_MODULE_4__.SHAPES),\n/* harmony export */ SVGResource: () => (/* reexport safe */ _textures_resources_SVGResource_mjs__WEBPACK_IMPORTED_MODULE_89__.SVGResource),\n/* harmony export */ ScissorSystem: () => (/* reexport safe */ _mask_ScissorSystem_mjs__WEBPACK_IMPORTED_MODULE_38__.ScissorSystem),\n/* harmony export */ Shader: () => (/* reexport safe */ _shader_Shader_mjs__WEBPACK_IMPORTED_MODULE_51__.Shader),\n/* harmony export */ ShaderSystem: () => (/* reexport safe */ _shader_ShaderSystem_mjs__WEBPACK_IMPORTED_MODULE_52__.ShaderSystem),\n/* harmony export */ SpriteMaskFilter: () => (/* reexport safe */ _filters_spriteMask_SpriteMaskFilter_mjs__WEBPACK_IMPORTED_MODULE_23__.SpriteMaskFilter),\n/* harmony export */ StartupSystem: () => (/* reexport safe */ _startup_StartupSystem_mjs__WEBPACK_IMPORTED_MODULE_60__.StartupSystem),\n/* harmony export */ State: () => (/* reexport safe */ _state_State_mjs__WEBPACK_IMPORTED_MODULE_61__.State),\n/* harmony export */ StateSystem: () => (/* reexport safe */ _state_StateSystem_mjs__WEBPACK_IMPORTED_MODULE_62__.StateSystem),\n/* harmony export */ StencilSystem: () => (/* reexport safe */ _mask_StencilSystem_mjs__WEBPACK_IMPORTED_MODULE_39__.StencilSystem),\n/* harmony export */ SystemManager: () => (/* reexport safe */ _system_SystemManager_mjs__WEBPACK_IMPORTED_MODULE_78__.SystemManager),\n/* harmony export */ TARGETS: () => (/* reexport safe */ _pixi_constants__WEBPACK_IMPORTED_MODULE_2__.TARGETS),\n/* harmony export */ TYPES: () => (/* reexport safe */ _pixi_constants__WEBPACK_IMPORTED_MODULE_2__.TYPES),\n/* harmony export */ Texture: () => (/* reexport safe */ _textures_Texture_mjs__WEBPACK_IMPORTED_MODULE_68__.Texture),\n/* harmony export */ TextureGCSystem: () => (/* reexport safe */ _textures_TextureGCSystem_mjs__WEBPACK_IMPORTED_MODULE_69__.TextureGCSystem),\n/* harmony export */ TextureMatrix: () => (/* reexport safe */ _textures_TextureMatrix_mjs__WEBPACK_IMPORTED_MODULE_70__.TextureMatrix),\n/* harmony export */ TextureSystem: () => (/* reexport safe */ _textures_TextureSystem_mjs__WEBPACK_IMPORTED_MODULE_71__.TextureSystem),\n/* harmony export */ TextureUvs: () => (/* reexport safe */ _textures_TextureUvs_mjs__WEBPACK_IMPORTED_MODULE_72__.TextureUvs),\n/* harmony export */ Ticker: () => (/* reexport safe */ _pixi_ticker__WEBPACK_IMPORTED_MODULE_7__.Ticker),\n/* harmony export */ TickerPlugin: () => (/* reexport safe */ _pixi_ticker__WEBPACK_IMPORTED_MODULE_7__.TickerPlugin),\n/* harmony export */ Transform: () => (/* reexport safe */ _pixi_math__WEBPACK_IMPORTED_MODULE_4__.Transform),\n/* harmony export */ TransformFeedback: () => (/* reexport safe */ _transformFeedback_TransformFeedback_mjs__WEBPACK_IMPORTED_MODULE_73__.TransformFeedback),\n/* harmony export */ TransformFeedbackSystem: () => (/* reexport safe */ _transformFeedback_TransformFeedbackSystem_mjs__WEBPACK_IMPORTED_MODULE_74__.TransformFeedbackSystem),\n/* harmony export */ UPDATE_PRIORITY: () => (/* reexport safe */ _pixi_ticker__WEBPACK_IMPORTED_MODULE_7__.UPDATE_PRIORITY),\n/* harmony export */ UniformGroup: () => (/* reexport safe */ _shader_UniformGroup_mjs__WEBPACK_IMPORTED_MODULE_53__.UniformGroup),\n/* harmony export */ VERSION: () => (/* binding */ VERSION),\n/* harmony export */ VideoResource: () => (/* reexport safe */ _textures_resources_VideoResource_mjs__WEBPACK_IMPORTED_MODULE_90__.VideoResource),\n/* harmony export */ ViewSystem: () => (/* reexport safe */ _view_ViewSystem_mjs__WEBPACK_IMPORTED_MODULE_77__.ViewSystem),\n/* harmony export */ ViewableBuffer: () => (/* reexport safe */ _geometry_ViewableBuffer_mjs__WEBPACK_IMPORTED_MODULE_34__.ViewableBuffer),\n/* harmony export */ WRAP_MODES: () => (/* reexport safe */ _pixi_constants__WEBPACK_IMPORTED_MODULE_2__.WRAP_MODES),\n/* harmony export */ autoDetectRenderer: () => (/* reexport safe */ _autoDetectRenderer_mjs__WEBPACK_IMPORTED_MODULE_9__.autoDetectRenderer),\n/* harmony export */ autoDetectResource: () => (/* reexport safe */ _textures_resources_autoDetectResource_mjs__WEBPACK_IMPORTED_MODULE_83__.autoDetectResource),\n/* harmony export */ checkMaxIfStatementsInShader: () => (/* reexport safe */ _shader_utils_checkMaxIfStatementsInShader_mjs__WEBPACK_IMPORTED_MODULE_54__.checkMaxIfStatementsInShader),\n/* harmony export */ createUBOElements: () => (/* reexport safe */ _shader_utils_generateUniformBufferSync_mjs__WEBPACK_IMPORTED_MODULE_56__.createUBOElements),\n/* harmony export */ defaultFilterVertex: () => (/* reexport safe */ _fragments_index_mjs__WEBPACK_IMPORTED_MODULE_24__.defaultFilterVertex),\n/* harmony export */ defaultVertex: () => (/* reexport safe */ _fragments_index_mjs__WEBPACK_IMPORTED_MODULE_24__.defaultVertex),\n/* harmony export */ extensions: () => (/* reexport safe */ _pixi_extensions__WEBPACK_IMPORTED_MODULE_3__.extensions),\n/* harmony export */ generateProgram: () => (/* reexport safe */ _shader_utils_generateProgram_mjs__WEBPACK_IMPORTED_MODULE_55__.generateProgram),\n/* harmony export */ generateUniformBufferSync: () => (/* reexport safe */ _shader_utils_generateUniformBufferSync_mjs__WEBPACK_IMPORTED_MODULE_56__.generateUniformBufferSync),\n/* harmony export */ getTestContext: () => (/* reexport safe */ _shader_utils_getTestContext_mjs__WEBPACK_IMPORTED_MODULE_57__.getTestContext),\n/* harmony export */ getUBOData: () => (/* reexport safe */ _shader_utils_generateUniformBufferSync_mjs__WEBPACK_IMPORTED_MODULE_56__.getUBOData),\n/* harmony export */ groupD8: () => (/* reexport safe */ _pixi_math__WEBPACK_IMPORTED_MODULE_4__.groupD8),\n/* harmony export */ isMobile: () => (/* reexport safe */ _pixi_settings__WEBPACK_IMPORTED_MODULE_6__.isMobile),\n/* harmony export */ settings: () => (/* reexport safe */ _pixi_settings__WEBPACK_IMPORTED_MODULE_6__.settings),\n/* harmony export */ uniformParsers: () => (/* reexport safe */ _shader_utils_uniformParsers_mjs__WEBPACK_IMPORTED_MODULE_58__.uniformParsers),\n/* harmony export */ unsafeEvalSupported: () => (/* reexport safe */ _shader_utils_unsafeEvalSupported_mjs__WEBPACK_IMPORTED_MODULE_59__.unsafeEvalSupported),\n/* harmony export */ utils: () => (/* reexport module object */ _pixi_utils__WEBPACK_IMPORTED_MODULE_8__)\n/* harmony export */ });\n/* harmony import */ var _settings_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./settings.mjs */ \"./node_modules/@pixi/core/lib/settings.mjs\");\n/* harmony import */ var _pixi_color__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/color */ \"./node_modules/@pixi/color/lib/index.mjs\");\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _pixi_extensions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @pixi/extensions */ \"./node_modules/@pixi/extensions/lib/index.mjs\");\n/* harmony import */ var _pixi_math__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @pixi/math */ \"./node_modules/@pixi/math/lib/index.mjs\");\n/* harmony import */ var _pixi_runner__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @pixi/runner */ \"./node_modules/@pixi/runner/lib/index.mjs\");\n/* harmony import */ var _pixi_settings__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @pixi/settings */ \"./node_modules/@pixi/settings/lib/index.mjs\");\n/* harmony import */ var _pixi_ticker__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @pixi/ticker */ \"./node_modules/@pixi/ticker/lib/index.mjs\");\n/* harmony import */ var _pixi_utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @pixi/utils */ \"./node_modules/@pixi/utils/lib/index.mjs\");\n/* harmony import */ var _autoDetectRenderer_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./autoDetectRenderer.mjs */ \"./node_modules/@pixi/core/lib/autoDetectRenderer.mjs\");\n/* harmony import */ var _background_BackgroundSystem_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./background/BackgroundSystem.mjs */ \"./node_modules/@pixi/core/lib/background/BackgroundSystem.mjs\");\n/* harmony import */ var _batch_BatchDrawCall_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./batch/BatchDrawCall.mjs */ \"./node_modules/@pixi/core/lib/batch/BatchDrawCall.mjs\");\n/* harmony import */ var _batch_BatchGeometry_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./batch/BatchGeometry.mjs */ \"./node_modules/@pixi/core/lib/batch/BatchGeometry.mjs\");\n/* harmony import */ var _batch_BatchRenderer_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./batch/BatchRenderer.mjs */ \"./node_modules/@pixi/core/lib/batch/BatchRenderer.mjs\");\n/* harmony import */ var _batch_BatchShaderGenerator_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./batch/BatchShaderGenerator.mjs */ \"./node_modules/@pixi/core/lib/batch/BatchShaderGenerator.mjs\");\n/* harmony import */ var _batch_BatchSystem_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./batch/BatchSystem.mjs */ \"./node_modules/@pixi/core/lib/batch/BatchSystem.mjs\");\n/* harmony import */ var _batch_BatchTextureArray_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./batch/BatchTextureArray.mjs */ \"./node_modules/@pixi/core/lib/batch/BatchTextureArray.mjs\");\n/* harmony import */ var _batch_ObjectRenderer_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./batch/ObjectRenderer.mjs */ \"./node_modules/@pixi/core/lib/batch/ObjectRenderer.mjs\");\n/* harmony import */ var _context_ContextSystem_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./context/ContextSystem.mjs */ \"./node_modules/@pixi/core/lib/context/ContextSystem.mjs\");\n/* harmony import */ var _filters_Filter_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./filters/Filter.mjs */ \"./node_modules/@pixi/core/lib/filters/Filter.mjs\");\n/* harmony import */ var _filters_FilterState_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./filters/FilterState.mjs */ \"./node_modules/@pixi/core/lib/filters/FilterState.mjs\");\n/* harmony import */ var _filters_FilterSystem_mjs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./filters/FilterSystem.mjs */ \"./node_modules/@pixi/core/lib/filters/FilterSystem.mjs\");\n/* harmony import */ var _filters_IFilterTarget_mjs__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./filters/IFilterTarget.mjs */ \"./node_modules/@pixi/core/lib/filters/IFilterTarget.mjs\");\n/* harmony import */ var _filters_spriteMask_SpriteMaskFilter_mjs__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./filters/spriteMask/SpriteMaskFilter.mjs */ \"./node_modules/@pixi/core/lib/filters/spriteMask/SpriteMaskFilter.mjs\");\n/* harmony import */ var _fragments_index_mjs__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./fragments/index.mjs */ \"./node_modules/@pixi/core/lib/fragments/index.mjs\");\n/* harmony import */ var _framebuffer_Framebuffer_mjs__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./framebuffer/Framebuffer.mjs */ \"./node_modules/@pixi/core/lib/framebuffer/Framebuffer.mjs\");\n/* harmony import */ var _framebuffer_FramebufferSystem_mjs__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./framebuffer/FramebufferSystem.mjs */ \"./node_modules/@pixi/core/lib/framebuffer/FramebufferSystem.mjs\");\n/* harmony import */ var _framebuffer_GLFramebuffer_mjs__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./framebuffer/GLFramebuffer.mjs */ \"./node_modules/@pixi/core/lib/framebuffer/GLFramebuffer.mjs\");\n/* harmony import */ var _framebuffer_MultisampleSystem_mjs__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./framebuffer/MultisampleSystem.mjs */ \"./node_modules/@pixi/core/lib/framebuffer/MultisampleSystem.mjs\");\n/* harmony import */ var _geometry_Attribute_mjs__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./geometry/Attribute.mjs */ \"./node_modules/@pixi/core/lib/geometry/Attribute.mjs\");\n/* harmony import */ var _geometry_Buffer_mjs__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./geometry/Buffer.mjs */ \"./node_modules/@pixi/core/lib/geometry/Buffer.mjs\");\n/* harmony import */ var _geometry_BufferSystem_mjs__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./geometry/BufferSystem.mjs */ \"./node_modules/@pixi/core/lib/geometry/BufferSystem.mjs\");\n/* harmony import */ var _geometry_Geometry_mjs__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./geometry/Geometry.mjs */ \"./node_modules/@pixi/core/lib/geometry/Geometry.mjs\");\n/* harmony import */ var _geometry_GeometrySystem_mjs__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./geometry/GeometrySystem.mjs */ \"./node_modules/@pixi/core/lib/geometry/GeometrySystem.mjs\");\n/* harmony import */ var _geometry_ViewableBuffer_mjs__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./geometry/ViewableBuffer.mjs */ \"./node_modules/@pixi/core/lib/geometry/ViewableBuffer.mjs\");\n/* harmony import */ var _IRenderer_mjs__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./IRenderer.mjs */ \"./node_modules/@pixi/core/lib/IRenderer.mjs\");\n/* harmony import */ var _mask_MaskData_mjs__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./mask/MaskData.mjs */ \"./node_modules/@pixi/core/lib/mask/MaskData.mjs\");\n/* harmony import */ var _mask_MaskSystem_mjs__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./mask/MaskSystem.mjs */ \"./node_modules/@pixi/core/lib/mask/MaskSystem.mjs\");\n/* harmony import */ var _mask_ScissorSystem_mjs__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./mask/ScissorSystem.mjs */ \"./node_modules/@pixi/core/lib/mask/ScissorSystem.mjs\");\n/* harmony import */ var _mask_StencilSystem_mjs__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./mask/StencilSystem.mjs */ \"./node_modules/@pixi/core/lib/mask/StencilSystem.mjs\");\n/* harmony import */ var _plugin_PluginSystem_mjs__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./plugin/PluginSystem.mjs */ \"./node_modules/@pixi/core/lib/plugin/PluginSystem.mjs\");\n/* harmony import */ var _projection_ProjectionSystem_mjs__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./projection/ProjectionSystem.mjs */ \"./node_modules/@pixi/core/lib/projection/ProjectionSystem.mjs\");\n/* harmony import */ var _render_ObjectRendererSystem_mjs__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./render/ObjectRendererSystem.mjs */ \"./node_modules/@pixi/core/lib/render/ObjectRendererSystem.mjs\");\n/* harmony import */ var _Renderer_mjs__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./Renderer.mjs */ \"./node_modules/@pixi/core/lib/Renderer.mjs\");\n/* harmony import */ var _renderTexture_BaseRenderTexture_mjs__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./renderTexture/BaseRenderTexture.mjs */ \"./node_modules/@pixi/core/lib/renderTexture/BaseRenderTexture.mjs\");\n/* harmony import */ var _renderTexture_GenerateTextureSystem_mjs__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./renderTexture/GenerateTextureSystem.mjs */ \"./node_modules/@pixi/core/lib/renderTexture/GenerateTextureSystem.mjs\");\n/* harmony import */ var _renderTexture_RenderTexture_mjs__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./renderTexture/RenderTexture.mjs */ \"./node_modules/@pixi/core/lib/renderTexture/RenderTexture.mjs\");\n/* harmony import */ var _renderTexture_RenderTexturePool_mjs__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./renderTexture/RenderTexturePool.mjs */ \"./node_modules/@pixi/core/lib/renderTexture/RenderTexturePool.mjs\");\n/* harmony import */ var _renderTexture_RenderTextureSystem_mjs__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./renderTexture/RenderTextureSystem.mjs */ \"./node_modules/@pixi/core/lib/renderTexture/RenderTextureSystem.mjs\");\n/* harmony import */ var _shader_GLProgram_mjs__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./shader/GLProgram.mjs */ \"./node_modules/@pixi/core/lib/shader/GLProgram.mjs\");\n/* harmony import */ var _shader_Program_mjs__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./shader/Program.mjs */ \"./node_modules/@pixi/core/lib/shader/Program.mjs\");\n/* harmony import */ var _shader_Shader_mjs__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./shader/Shader.mjs */ \"./node_modules/@pixi/core/lib/shader/Shader.mjs\");\n/* harmony import */ var _shader_ShaderSystem_mjs__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./shader/ShaderSystem.mjs */ \"./node_modules/@pixi/core/lib/shader/ShaderSystem.mjs\");\n/* harmony import */ var _shader_UniformGroup_mjs__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./shader/UniformGroup.mjs */ \"./node_modules/@pixi/core/lib/shader/UniformGroup.mjs\");\n/* harmony import */ var _shader_utils_checkMaxIfStatementsInShader_mjs__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./shader/utils/checkMaxIfStatementsInShader.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/checkMaxIfStatementsInShader.mjs\");\n/* harmony import */ var _shader_utils_generateProgram_mjs__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./shader/utils/generateProgram.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/generateProgram.mjs\");\n/* harmony import */ var _shader_utils_generateUniformBufferSync_mjs__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./shader/utils/generateUniformBufferSync.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/generateUniformBufferSync.mjs\");\n/* harmony import */ var _shader_utils_getTestContext_mjs__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ./shader/utils/getTestContext.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/getTestContext.mjs\");\n/* harmony import */ var _shader_utils_uniformParsers_mjs__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ./shader/utils/uniformParsers.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/uniformParsers.mjs\");\n/* harmony import */ var _shader_utils_unsafeEvalSupported_mjs__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ./shader/utils/unsafeEvalSupported.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/unsafeEvalSupported.mjs\");\n/* harmony import */ var _startup_StartupSystem_mjs__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./startup/StartupSystem.mjs */ \"./node_modules/@pixi/core/lib/startup/StartupSystem.mjs\");\n/* harmony import */ var _state_State_mjs__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ./state/State.mjs */ \"./node_modules/@pixi/core/lib/state/State.mjs\");\n/* harmony import */ var _state_StateSystem_mjs__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ./state/StateSystem.mjs */ \"./node_modules/@pixi/core/lib/state/StateSystem.mjs\");\n/* harmony import */ var _system_ISystem_mjs__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ./system/ISystem.mjs */ \"./node_modules/@pixi/core/lib/system/ISystem.mjs\");\n/* harmony import */ var _systems_mjs__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ./systems.mjs */ \"./node_modules/@pixi/core/lib/systems.mjs\");\n/* harmony import */ var _textures_BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ./textures/BaseTexture.mjs */ \"./node_modules/@pixi/core/lib/textures/BaseTexture.mjs\");\n/* harmony import */ var _textures_GLTexture_mjs__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ./textures/GLTexture.mjs */ \"./node_modules/@pixi/core/lib/textures/GLTexture.mjs\");\n/* harmony import */ var _textures_resources_index_mjs__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ./textures/resources/index.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/index.mjs\");\n/* harmony import */ var _textures_Texture_mjs__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ./textures/Texture.mjs */ \"./node_modules/@pixi/core/lib/textures/Texture.mjs\");\n/* harmony import */ var _textures_TextureGCSystem_mjs__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ./textures/TextureGCSystem.mjs */ \"./node_modules/@pixi/core/lib/textures/TextureGCSystem.mjs\");\n/* harmony import */ var _textures_TextureMatrix_mjs__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ./textures/TextureMatrix.mjs */ \"./node_modules/@pixi/core/lib/textures/TextureMatrix.mjs\");\n/* harmony import */ var _textures_TextureSystem_mjs__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ./textures/TextureSystem.mjs */ \"./node_modules/@pixi/core/lib/textures/TextureSystem.mjs\");\n/* harmony import */ var _textures_TextureUvs_mjs__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ./textures/TextureUvs.mjs */ \"./node_modules/@pixi/core/lib/textures/TextureUvs.mjs\");\n/* harmony import */ var _transformFeedback_TransformFeedback_mjs__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ./transformFeedback/TransformFeedback.mjs */ \"./node_modules/@pixi/core/lib/transformFeedback/TransformFeedback.mjs\");\n/* harmony import */ var _transformFeedback_TransformFeedbackSystem_mjs__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ./transformFeedback/TransformFeedbackSystem.mjs */ \"./node_modules/@pixi/core/lib/transformFeedback/TransformFeedbackSystem.mjs\");\n/* harmony import */ var _utils_Quad_mjs__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(/*! ./utils/Quad.mjs */ \"./node_modules/@pixi/core/lib/utils/Quad.mjs\");\n/* harmony import */ var _utils_QuadUv_mjs__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ./utils/QuadUv.mjs */ \"./node_modules/@pixi/core/lib/utils/QuadUv.mjs\");\n/* harmony import */ var _view_ViewSystem_mjs__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(/*! ./view/ViewSystem.mjs */ \"./node_modules/@pixi/core/lib/view/ViewSystem.mjs\");\n/* harmony import */ var _system_SystemManager_mjs__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ./system/SystemManager.mjs */ \"./node_modules/@pixi/core/lib/system/SystemManager.mjs\");\n/* harmony import */ var _textures_resources_BaseImageResource_mjs__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ./textures/resources/BaseImageResource.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/BaseImageResource.mjs\");\n/* harmony import */ var _textures_resources_Resource_mjs__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(/*! ./textures/resources/Resource.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/Resource.mjs\");\n/* harmony import */ var _textures_resources_AbstractMultiResource_mjs__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(/*! ./textures/resources/AbstractMultiResource.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/AbstractMultiResource.mjs\");\n/* harmony import */ var _textures_resources_ArrayResource_mjs__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(/*! ./textures/resources/ArrayResource.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/ArrayResource.mjs\");\n/* harmony import */ var _textures_resources_autoDetectResource_mjs__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(/*! ./textures/resources/autoDetectResource.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/autoDetectResource.mjs\");\n/* harmony import */ var _textures_resources_BufferResource_mjs__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(/*! ./textures/resources/BufferResource.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/BufferResource.mjs\");\n/* harmony import */ var _textures_resources_CanvasResource_mjs__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(/*! ./textures/resources/CanvasResource.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/CanvasResource.mjs\");\n/* harmony import */ var _textures_resources_CubeResource_mjs__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(/*! ./textures/resources/CubeResource.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/CubeResource.mjs\");\n/* harmony import */ var _textures_resources_ImageBitmapResource_mjs__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(/*! ./textures/resources/ImageBitmapResource.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/ImageBitmapResource.mjs\");\n/* harmony import */ var _textures_resources_ImageResource_mjs__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(/*! ./textures/resources/ImageResource.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/ImageResource.mjs\");\n/* harmony import */ var _textures_resources_SVGResource_mjs__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(/*! ./textures/resources/SVGResource.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/SVGResource.mjs\");\n/* harmony import */ var _textures_resources_VideoResource_mjs__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(/*! ./textures/resources/VideoResource.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/VideoResource.mjs\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst VERSION = \"7.3.2\";\n\n//# sourceMappingURL=index.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/index.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/mask/AbstractMaskSystem.mjs":
-/*!*****************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/mask/AbstractMaskSystem.mjs ***!
- \*****************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AbstractMaskSystem: () => (/* binding */ AbstractMaskSystem)\n/* harmony export */ });\nclass AbstractMaskSystem {\n /**\n * @param renderer - The renderer this System works for.\n */\n constructor(renderer) {\n this.renderer = renderer, this.maskStack = [], this.glConst = 0;\n }\n /** Gets count of masks of certain type. */\n getStackLength() {\n return this.maskStack.length;\n }\n /**\n * Changes the mask stack that is used by this System.\n * @param {PIXI.MaskData[]} maskStack - The mask stack\n */\n setMaskStack(maskStack) {\n const { gl } = this.renderer, curStackLen = this.getStackLength();\n this.maskStack = maskStack;\n const newStackLen = this.getStackLength();\n newStackLen !== curStackLen && (newStackLen === 0 ? gl.disable(this.glConst) : (gl.enable(this.glConst), this._useCurrent()));\n }\n /**\n * Setup renderer to use the current mask data.\n * @private\n */\n _useCurrent() {\n }\n /** Destroys the mask stack. */\n destroy() {\n this.renderer = null, this.maskStack = null;\n }\n}\n\n//# sourceMappingURL=AbstractMaskSystem.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/mask/AbstractMaskSystem.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/mask/MaskData.mjs":
-/*!*******************************************************!*\
- !*** ./node_modules/@pixi/core/lib/mask/MaskData.mjs ***!
- \*******************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ MaskData: () => (/* binding */ MaskData)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _filters_Filter_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../filters/Filter.mjs */ \"./node_modules/@pixi/core/lib/filters/Filter.mjs\");\n\n\nclass MaskData {\n /**\n * Create MaskData\n * @param {PIXI.DisplayObject} [maskObject=null] - object that describes the mask\n */\n constructor(maskObject = null) {\n this.type = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MASK_TYPES.NONE, this.autoDetect = !0, this.maskObject = maskObject || null, this.pooled = !1, this.isMaskData = !0, this.resolution = null, this.multisample = _filters_Filter_mjs__WEBPACK_IMPORTED_MODULE_1__.Filter.defaultMultisample, this.enabled = !0, this.colorMask = 15, this._filters = null, this._stencilCounter = 0, this._scissorCounter = 0, this._scissorRect = null, this._scissorRectLocal = null, this._colorMask = 15, this._target = null;\n }\n /**\n * The sprite mask filter.\n * If set to `null`, the default sprite mask filter is used.\n * @default null\n */\n get filter() {\n return this._filters ? this._filters[0] : null;\n }\n set filter(value) {\n value ? this._filters ? this._filters[0] = value : this._filters = [value] : this._filters = null;\n }\n /** Resets the mask data after popMask(). */\n reset() {\n this.pooled && (this.maskObject = null, this.type = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MASK_TYPES.NONE, this.autoDetect = !0), this._target = null, this._scissorRectLocal = null;\n }\n /**\n * Copies counters from maskData above, called from pushMask().\n * @param maskAbove\n */\n copyCountersOrReset(maskAbove) {\n maskAbove ? (this._stencilCounter = maskAbove._stencilCounter, this._scissorCounter = maskAbove._scissorCounter, this._scissorRect = maskAbove._scissorRect) : (this._stencilCounter = 0, this._scissorCounter = 0, this._scissorRect = null);\n }\n}\n\n//# sourceMappingURL=MaskData.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/mask/MaskData.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/mask/MaskSystem.mjs":
-/*!*********************************************************!*\
- !*** ./node_modules/@pixi/core/lib/mask/MaskSystem.mjs ***!
- \*********************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ MaskSystem: () => (/* binding */ MaskSystem)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _pixi_extensions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/extensions */ \"./node_modules/@pixi/extensions/lib/index.mjs\");\n/* harmony import */ var _filters_spriteMask_SpriteMaskFilter_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../filters/spriteMask/SpriteMaskFilter.mjs */ \"./node_modules/@pixi/core/lib/filters/spriteMask/SpriteMaskFilter.mjs\");\n/* harmony import */ var _MaskData_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./MaskData.mjs */ \"./node_modules/@pixi/core/lib/mask/MaskData.mjs\");\n\n\n\n\nclass MaskSystem {\n /**\n * @param renderer - The renderer this System works for.\n */\n constructor(renderer) {\n this.renderer = renderer, this.enableScissor = !0, this.alphaMaskPool = [], this.maskDataPool = [], this.maskStack = [], this.alphaMaskIndex = 0;\n }\n /**\n * Changes the mask stack that is used by this System.\n * @param maskStack - The mask stack\n */\n setMaskStack(maskStack) {\n this.maskStack = maskStack, this.renderer.scissor.setMaskStack(maskStack), this.renderer.stencil.setMaskStack(maskStack);\n }\n /**\n * Enables the mask and appends it to the current mask stack.\n *\n * NOTE: The batch renderer should be flushed beforehand to prevent pending renders from being masked.\n * @param {PIXI.DisplayObject} target - Display Object to push the mask to\n * @param {PIXI.MaskData|PIXI.Sprite|PIXI.Graphics|PIXI.DisplayObject} maskDataOrTarget - The masking data.\n */\n push(target, maskDataOrTarget) {\n let maskData = maskDataOrTarget;\n if (!maskData.isMaskData) {\n const d = this.maskDataPool.pop() || new _MaskData_mjs__WEBPACK_IMPORTED_MODULE_3__.MaskData();\n d.pooled = !0, d.maskObject = maskDataOrTarget, maskData = d;\n }\n const maskAbove = this.maskStack.length !== 0 ? this.maskStack[this.maskStack.length - 1] : null;\n if (maskData.copyCountersOrReset(maskAbove), maskData._colorMask = maskAbove ? maskAbove._colorMask : 15, maskData.autoDetect && this.detect(maskData), maskData._target = target, maskData.type !== _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MASK_TYPES.SPRITE && this.maskStack.push(maskData), maskData.enabled)\n switch (maskData.type) {\n case _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MASK_TYPES.SCISSOR:\n this.renderer.scissor.push(maskData);\n break;\n case _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MASK_TYPES.STENCIL:\n this.renderer.stencil.push(maskData);\n break;\n case _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MASK_TYPES.SPRITE:\n maskData.copyCountersOrReset(null), this.pushSpriteMask(maskData);\n break;\n case _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MASK_TYPES.COLOR:\n this.pushColorMask(maskData);\n break;\n default:\n break;\n }\n maskData.type === _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MASK_TYPES.SPRITE && this.maskStack.push(maskData);\n }\n /**\n * Removes the last mask from the mask stack and doesn't return it.\n *\n * NOTE: The batch renderer should be flushed beforehand to render the masked contents before the mask is removed.\n * @param {PIXI.IMaskTarget} target - Display Object to pop the mask from\n */\n pop(target) {\n const maskData = this.maskStack.pop();\n if (!(!maskData || maskData._target !== target)) {\n if (maskData.enabled)\n switch (maskData.type) {\n case _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MASK_TYPES.SCISSOR:\n this.renderer.scissor.pop(maskData);\n break;\n case _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MASK_TYPES.STENCIL:\n this.renderer.stencil.pop(maskData.maskObject);\n break;\n case _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MASK_TYPES.SPRITE:\n this.popSpriteMask(maskData);\n break;\n case _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MASK_TYPES.COLOR:\n this.popColorMask(maskData);\n break;\n default:\n break;\n }\n if (maskData.reset(), maskData.pooled && this.maskDataPool.push(maskData), this.maskStack.length !== 0) {\n const maskCurrent = this.maskStack[this.maskStack.length - 1];\n maskCurrent.type === _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MASK_TYPES.SPRITE && maskCurrent._filters && (maskCurrent._filters[0].maskSprite = maskCurrent.maskObject);\n }\n }\n }\n /**\n * Sets type of MaskData based on its maskObject.\n * @param maskData\n */\n detect(maskData) {\n const maskObject = maskData.maskObject;\n maskObject ? maskObject.isSprite ? maskData.type = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MASK_TYPES.SPRITE : this.enableScissor && this.renderer.scissor.testScissor(maskData) ? maskData.type = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MASK_TYPES.SCISSOR : maskData.type = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MASK_TYPES.STENCIL : maskData.type = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MASK_TYPES.COLOR;\n }\n /**\n * Applies the Mask and adds it to the current filter stack.\n * @param maskData - Sprite to be used as the mask.\n */\n pushSpriteMask(maskData) {\n const { maskObject } = maskData, target = maskData._target;\n let alphaMaskFilter = maskData._filters;\n alphaMaskFilter || (alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex], alphaMaskFilter || (alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex] = [new _filters_spriteMask_SpriteMaskFilter_mjs__WEBPACK_IMPORTED_MODULE_2__.SpriteMaskFilter()])), alphaMaskFilter[0].resolution = maskData.resolution, alphaMaskFilter[0].multisample = maskData.multisample, alphaMaskFilter[0].maskSprite = maskObject;\n const stashFilterArea = target.filterArea;\n target.filterArea = maskObject.getBounds(!0), this.renderer.filter.push(target, alphaMaskFilter), target.filterArea = stashFilterArea, maskData._filters || this.alphaMaskIndex++;\n }\n /**\n * Removes the last filter from the filter stack and doesn't return it.\n * @param maskData - Sprite to be used as the mask.\n */\n popSpriteMask(maskData) {\n this.renderer.filter.pop(), maskData._filters ? maskData._filters[0].maskSprite = null : (this.alphaMaskIndex--, this.alphaMaskPool[this.alphaMaskIndex][0].maskSprite = null);\n }\n /**\n * Pushes the color mask.\n * @param maskData - The mask data\n */\n pushColorMask(maskData) {\n const currColorMask = maskData._colorMask, nextColorMask = maskData._colorMask = currColorMask & maskData.colorMask;\n nextColorMask !== currColorMask && this.renderer.gl.colorMask(\n (nextColorMask & 1) !== 0,\n (nextColorMask & 2) !== 0,\n (nextColorMask & 4) !== 0,\n (nextColorMask & 8) !== 0\n );\n }\n /**\n * Pops the color mask.\n * @param maskData - The mask data\n */\n popColorMask(maskData) {\n const currColorMask = maskData._colorMask, nextColorMask = this.maskStack.length > 0 ? this.maskStack[this.maskStack.length - 1]._colorMask : 15;\n nextColorMask !== currColorMask && this.renderer.gl.colorMask(\n (nextColorMask & 1) !== 0,\n (nextColorMask & 2) !== 0,\n (nextColorMask & 4) !== 0,\n (nextColorMask & 8) !== 0\n );\n }\n destroy() {\n this.renderer = null;\n }\n}\nMaskSystem.extension = {\n type: _pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.ExtensionType.RendererSystem,\n name: \"mask\"\n};\n_pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.extensions.add(MaskSystem);\n\n//# sourceMappingURL=MaskSystem.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/mask/MaskSystem.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/mask/ScissorSystem.mjs":
-/*!************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/mask/ScissorSystem.mjs ***!
- \************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ScissorSystem: () => (/* binding */ ScissorSystem)\n/* harmony export */ });\n/* harmony import */ var _pixi_extensions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/extensions */ \"./node_modules/@pixi/extensions/lib/index.mjs\");\n/* harmony import */ var _pixi_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/math */ \"./node_modules/@pixi/math/lib/index.mjs\");\n/* harmony import */ var _pixi_settings__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @pixi/settings */ \"./node_modules/@pixi/settings/lib/index.mjs\");\n/* harmony import */ var _AbstractMaskSystem_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./AbstractMaskSystem.mjs */ \"./node_modules/@pixi/core/lib/mask/AbstractMaskSystem.mjs\");\n\n\n\n\nconst tempMatrix = new _pixi_math__WEBPACK_IMPORTED_MODULE_1__.Matrix(), rectPool = [], _ScissorSystem = class _ScissorSystem2 extends _AbstractMaskSystem_mjs__WEBPACK_IMPORTED_MODULE_3__.AbstractMaskSystem {\n /**\n * @param {PIXI.Renderer} renderer - The renderer this System works for.\n */\n constructor(renderer) {\n super(renderer), this.glConst = _pixi_settings__WEBPACK_IMPORTED_MODULE_2__.settings.ADAPTER.getWebGLRenderingContext().SCISSOR_TEST;\n }\n getStackLength() {\n const maskData = this.maskStack[this.maskStack.length - 1];\n return maskData ? maskData._scissorCounter : 0;\n }\n /**\n * evaluates _boundsTransformed, _scissorRect for MaskData\n * @param maskData\n */\n calcScissorRect(maskData) {\n if (maskData._scissorRectLocal)\n return;\n const prevData = maskData._scissorRect, { maskObject } = maskData, { renderer } = this, renderTextureSystem = renderer.renderTexture, rect = maskObject.getBounds(!0, rectPool.pop() ?? new _pixi_math__WEBPACK_IMPORTED_MODULE_1__.Rectangle());\n this.roundFrameToPixels(\n rect,\n renderTextureSystem.current ? renderTextureSystem.current.resolution : renderer.resolution,\n renderTextureSystem.sourceFrame,\n renderTextureSystem.destinationFrame,\n renderer.projection.transform\n ), prevData && rect.fit(prevData), maskData._scissorRectLocal = rect;\n }\n static isMatrixRotated(matrix) {\n if (!matrix)\n return !1;\n const { a, b, c, d } = matrix;\n return (Math.abs(b) > 1e-4 || Math.abs(c) > 1e-4) && (Math.abs(a) > 1e-4 || Math.abs(d) > 1e-4);\n }\n /**\n * Test, whether the object can be scissor mask with current renderer projection.\n * Calls \"calcScissorRect()\" if its true.\n * @param maskData - mask data\n * @returns whether Whether the object can be scissor mask\n */\n testScissor(maskData) {\n const { maskObject } = maskData;\n if (!maskObject.isFastRect || !maskObject.isFastRect() || _ScissorSystem2.isMatrixRotated(maskObject.worldTransform) || _ScissorSystem2.isMatrixRotated(this.renderer.projection.transform))\n return !1;\n this.calcScissorRect(maskData);\n const rect = maskData._scissorRectLocal;\n return rect.width > 0 && rect.height > 0;\n }\n roundFrameToPixels(frame, resolution, bindingSourceFrame, bindingDestinationFrame, transform) {\n _ScissorSystem2.isMatrixRotated(transform) || (transform = transform ? tempMatrix.copyFrom(transform) : tempMatrix.identity(), transform.translate(-bindingSourceFrame.x, -bindingSourceFrame.y).scale(\n bindingDestinationFrame.width / bindingSourceFrame.width,\n bindingDestinationFrame.height / bindingSourceFrame.height\n ).translate(bindingDestinationFrame.x, bindingDestinationFrame.y), this.renderer.filter.transformAABB(transform, frame), frame.fit(bindingDestinationFrame), frame.x = Math.round(frame.x * resolution), frame.y = Math.round(frame.y * resolution), frame.width = Math.round(frame.width * resolution), frame.height = Math.round(frame.height * resolution));\n }\n /**\n * Applies the Mask and adds it to the current stencil stack.\n * @author alvin\n * @param maskData - The mask data.\n */\n push(maskData) {\n maskData._scissorRectLocal || this.calcScissorRect(maskData);\n const { gl } = this.renderer;\n maskData._scissorRect || gl.enable(gl.SCISSOR_TEST), maskData._scissorCounter++, maskData._scissorRect = maskData._scissorRectLocal, this._useCurrent();\n }\n /**\n * This should be called after a mask is popped off the mask stack. It will rebind the scissor box to be latest with the\n * last mask in the stack.\n *\n * This can also be called when you directly modify the scissor box and want to restore PixiJS state.\n * @param maskData - The mask data.\n */\n pop(maskData) {\n const { gl } = this.renderer;\n maskData && rectPool.push(maskData._scissorRectLocal), this.getStackLength() > 0 ? this._useCurrent() : gl.disable(gl.SCISSOR_TEST);\n }\n /**\n * Setup renderer to use the current scissor data.\n * @private\n */\n _useCurrent() {\n const rect = this.maskStack[this.maskStack.length - 1]._scissorRect;\n let y;\n this.renderer.renderTexture.current ? y = rect.y : y = this.renderer.height - rect.height - rect.y, this.renderer.gl.scissor(rect.x, y, rect.width, rect.height);\n }\n};\n_ScissorSystem.extension = {\n type: _pixi_extensions__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.RendererSystem,\n name: \"scissor\"\n};\nlet ScissorSystem = _ScissorSystem;\n_pixi_extensions__WEBPACK_IMPORTED_MODULE_0__.extensions.add(ScissorSystem);\n\n//# sourceMappingURL=ScissorSystem.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/mask/ScissorSystem.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/mask/StencilSystem.mjs":
-/*!************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/mask/StencilSystem.mjs ***!
- \************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ StencilSystem: () => (/* binding */ StencilSystem)\n/* harmony export */ });\n/* harmony import */ var _pixi_extensions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/extensions */ \"./node_modules/@pixi/extensions/lib/index.mjs\");\n/* harmony import */ var _pixi_settings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/settings */ \"./node_modules/@pixi/settings/lib/index.mjs\");\n/* harmony import */ var _AbstractMaskSystem_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AbstractMaskSystem.mjs */ \"./node_modules/@pixi/core/lib/mask/AbstractMaskSystem.mjs\");\n\n\n\nclass StencilSystem extends _AbstractMaskSystem_mjs__WEBPACK_IMPORTED_MODULE_2__.AbstractMaskSystem {\n /**\n * @param renderer - The renderer this System works for.\n */\n constructor(renderer) {\n super(renderer), this.glConst = _pixi_settings__WEBPACK_IMPORTED_MODULE_1__.settings.ADAPTER.getWebGLRenderingContext().STENCIL_TEST;\n }\n getStackLength() {\n const maskData = this.maskStack[this.maskStack.length - 1];\n return maskData ? maskData._stencilCounter : 0;\n }\n /**\n * Applies the Mask and adds it to the current stencil stack.\n * @param maskData - The mask data\n */\n push(maskData) {\n const maskObject = maskData.maskObject, { gl } = this.renderer, prevMaskCount = maskData._stencilCounter;\n prevMaskCount === 0 && (this.renderer.framebuffer.forceStencil(), gl.clearStencil(0), gl.clear(gl.STENCIL_BUFFER_BIT), gl.enable(gl.STENCIL_TEST)), maskData._stencilCounter++;\n const colorMask = maskData._colorMask;\n colorMask !== 0 && (maskData._colorMask = 0, gl.colorMask(!1, !1, !1, !1)), gl.stencilFunc(gl.EQUAL, prevMaskCount, 4294967295), gl.stencilOp(gl.KEEP, gl.KEEP, gl.INCR), maskObject.renderable = !0, maskObject.render(this.renderer), this.renderer.batch.flush(), maskObject.renderable = !1, colorMask !== 0 && (maskData._colorMask = colorMask, gl.colorMask(\n (colorMask & 1) !== 0,\n (colorMask & 2) !== 0,\n (colorMask & 4) !== 0,\n (colorMask & 8) !== 0\n )), this._useCurrent();\n }\n /**\n * Pops stencil mask. MaskData is already removed from stack\n * @param {PIXI.DisplayObject} maskObject - object of popped mask data\n */\n pop(maskObject) {\n const gl = this.renderer.gl;\n if (this.getStackLength() === 0)\n gl.disable(gl.STENCIL_TEST);\n else {\n const maskData = this.maskStack.length !== 0 ? this.maskStack[this.maskStack.length - 1] : null, colorMask = maskData ? maskData._colorMask : 15;\n colorMask !== 0 && (maskData._colorMask = 0, gl.colorMask(!1, !1, !1, !1)), gl.stencilOp(gl.KEEP, gl.KEEP, gl.DECR), maskObject.renderable = !0, maskObject.render(this.renderer), this.renderer.batch.flush(), maskObject.renderable = !1, colorMask !== 0 && (maskData._colorMask = colorMask, gl.colorMask(\n (colorMask & 1) !== 0,\n (colorMask & 2) !== 0,\n (colorMask & 4) !== 0,\n (colorMask & 8) !== 0\n )), this._useCurrent();\n }\n }\n /**\n * Setup renderer to use the current stencil data.\n * @private\n */\n _useCurrent() {\n const gl = this.renderer.gl;\n gl.stencilFunc(gl.EQUAL, this.getStackLength(), 4294967295), gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);\n }\n}\nStencilSystem.extension = {\n type: _pixi_extensions__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.RendererSystem,\n name: \"stencil\"\n};\n_pixi_extensions__WEBPACK_IMPORTED_MODULE_0__.extensions.add(StencilSystem);\n\n//# sourceMappingURL=StencilSystem.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/mask/StencilSystem.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/plugin/PluginSystem.mjs":
-/*!*************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/plugin/PluginSystem.mjs ***!
- \*************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PluginSystem: () => (/* binding */ PluginSystem)\n/* harmony export */ });\n/* harmony import */ var _pixi_extensions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/extensions */ \"./node_modules/@pixi/extensions/lib/index.mjs\");\n/* harmony import */ var _pixi_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/utils */ \"./node_modules/@pixi/utils/lib/index.mjs\");\n\n\nclass PluginSystem {\n constructor(renderer) {\n this.renderer = renderer, this.plugins = {}, Object.defineProperties(this.plugins, {\n extract: {\n enumerable: !1,\n get() {\n return (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_1__.deprecation)(\"7.0.0\", \"renderer.plugins.extract has moved to renderer.extract\"), renderer.extract;\n }\n },\n prepare: {\n enumerable: !1,\n get() {\n return (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_1__.deprecation)(\"7.0.0\", \"renderer.plugins.prepare has moved to renderer.prepare\"), renderer.prepare;\n }\n },\n interaction: {\n enumerable: !1,\n get() {\n return (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_1__.deprecation)(\"7.0.0\", \"renderer.plugins.interaction has been deprecated, use renderer.events\"), renderer.events;\n }\n }\n });\n }\n /**\n * Initialize the plugins.\n * @protected\n */\n init() {\n const staticMap = this.rendererPlugins;\n for (const o in staticMap)\n this.plugins[o] = new staticMap[o](this.renderer);\n }\n destroy() {\n for (const o in this.plugins)\n this.plugins[o].destroy(), this.plugins[o] = null;\n }\n}\nPluginSystem.extension = {\n type: [\n _pixi_extensions__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.RendererSystem,\n _pixi_extensions__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.CanvasRendererSystem\n ],\n name: \"_plugin\"\n};\n_pixi_extensions__WEBPACK_IMPORTED_MODULE_0__.extensions.add(PluginSystem);\n\n//# sourceMappingURL=PluginSystem.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/plugin/PluginSystem.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/projection/ProjectionSystem.mjs":
-/*!*********************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/projection/ProjectionSystem.mjs ***!
- \*********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ProjectionSystem: () => (/* binding */ ProjectionSystem)\n/* harmony export */ });\n/* harmony import */ var _pixi_extensions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/extensions */ \"./node_modules/@pixi/extensions/lib/index.mjs\");\n/* harmony import */ var _pixi_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/math */ \"./node_modules/@pixi/math/lib/index.mjs\");\n\n\nclass ProjectionSystem {\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n this.renderer = renderer, this.destinationFrame = null, this.sourceFrame = null, this.defaultFrame = null, this.projectionMatrix = new _pixi_math__WEBPACK_IMPORTED_MODULE_1__.Matrix(), this.transform = null;\n }\n /**\n * Updates the projection-matrix based on the sourceFrame → destinationFrame mapping provided.\n *\n * NOTE: It is expected you call `renderer.framebuffer.setViewport(destinationFrame)` after this. This is because\n * the framebuffer viewport converts shader vertex output in normalized device coordinates to window coordinates.\n *\n * NOTE-2: {@link PIXI.RenderTextureSystem#bind} updates the projection-matrix when you bind a render-texture.\n * It is expected\n * that you dirty the current bindings when calling this manually.\n * @param destinationFrame - The rectangle in the render-target to render the contents into. If rendering to the canvas,\n * the origin is on the top-left; if rendering to a render-texture, the origin is on the bottom-left.\n * @param sourceFrame - The rectangle in world space that contains the contents being rendered.\n * @param resolution - The resolution of the render-target, which is the ratio of\n * world-space (or CSS) pixels to physical pixels.\n * @param root - Whether the render-target is the screen. This is required because rendering to textures\n * is y-flipped (i.e. upside down relative to the screen).\n */\n update(destinationFrame, sourceFrame, resolution, root) {\n this.destinationFrame = destinationFrame || this.destinationFrame || this.defaultFrame, this.sourceFrame = sourceFrame || this.sourceFrame || destinationFrame, this.calculateProjection(this.destinationFrame, this.sourceFrame, resolution, root), this.transform && this.projectionMatrix.append(this.transform);\n const renderer = this.renderer;\n renderer.globalUniforms.uniforms.projectionMatrix = this.projectionMatrix, renderer.globalUniforms.update(), renderer.shader.shader && renderer.shader.syncUniformGroup(renderer.shader.shader.uniforms.globals);\n }\n /**\n * Calculates the `projectionMatrix` to map points inside `sourceFrame` to inside `destinationFrame`.\n * @param _destinationFrame - The destination frame in the render-target.\n * @param sourceFrame - The source frame in world space.\n * @param _resolution - The render-target's resolution, i.e. ratio of CSS to physical pixels.\n * @param root - Whether rendering into the screen. Otherwise, if rendering to a framebuffer, the projection\n * is y-flipped.\n */\n calculateProjection(_destinationFrame, sourceFrame, _resolution, root) {\n const pm = this.projectionMatrix, sign = root ? -1 : 1;\n pm.identity(), pm.a = 1 / sourceFrame.width * 2, pm.d = sign * (1 / sourceFrame.height * 2), pm.tx = -1 - sourceFrame.x * pm.a, pm.ty = -sign - sourceFrame.y * pm.d;\n }\n /**\n * Sets the transform of the active render target to the given matrix.\n * @param _matrix - The transformation matrix\n */\n setTransform(_matrix) {\n }\n destroy() {\n this.renderer = null;\n }\n}\nProjectionSystem.extension = {\n type: _pixi_extensions__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.RendererSystem,\n name: \"projection\"\n};\n_pixi_extensions__WEBPACK_IMPORTED_MODULE_0__.extensions.add(ProjectionSystem);\n\n//# sourceMappingURL=ProjectionSystem.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/projection/ProjectionSystem.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/render/ObjectRendererSystem.mjs":
-/*!*********************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/render/ObjectRendererSystem.mjs ***!
- \*********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ObjectRendererSystem: () => (/* binding */ ObjectRendererSystem)\n/* harmony export */ });\n/* harmony import */ var _pixi_extensions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/extensions */ \"./node_modules/@pixi/extensions/lib/index.mjs\");\n\nclass ObjectRendererSystem {\n // renderers scene graph!\n constructor(renderer) {\n this.renderer = renderer;\n }\n /**\n * Renders the object to its WebGL view.\n * @param displayObject - The object to be rendered.\n * @param options - the options to be passed to the renderer\n */\n render(displayObject, options) {\n const renderer = this.renderer;\n let renderTexture, clear, transform, skipUpdateTransform;\n if (options && (renderTexture = options.renderTexture, clear = options.clear, transform = options.transform, skipUpdateTransform = options.skipUpdateTransform), this.renderingToScreen = !renderTexture, renderer.runners.prerender.emit(), renderer.emit(\"prerender\"), renderer.projection.transform = transform, !renderer.context.isLost) {\n if (renderTexture || (this.lastObjectRendered = displayObject), !skipUpdateTransform) {\n const cacheParent = displayObject.enableTempParent();\n displayObject.updateTransform(), displayObject.disableTempParent(cacheParent);\n }\n renderer.renderTexture.bind(renderTexture), renderer.batch.currentRenderer.start(), (clear ?? renderer.background.clearBeforeRender) && renderer.renderTexture.clear(), displayObject.render(renderer), renderer.batch.currentRenderer.flush(), renderTexture && (options.blit && renderer.framebuffer.blit(), renderTexture.baseTexture.update()), renderer.runners.postrender.emit(), renderer.projection.transform = null, renderer.emit(\"postrender\");\n }\n }\n destroy() {\n this.renderer = null, this.lastObjectRendered = null;\n }\n}\nObjectRendererSystem.extension = {\n type: _pixi_extensions__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.RendererSystem,\n name: \"objectRenderer\"\n};\n_pixi_extensions__WEBPACK_IMPORTED_MODULE_0__.extensions.add(ObjectRendererSystem);\n\n//# sourceMappingURL=ObjectRendererSystem.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/render/ObjectRendererSystem.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/renderTexture/BaseRenderTexture.mjs":
-/*!*************************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/renderTexture/BaseRenderTexture.mjs ***!
- \*************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BaseRenderTexture: () => (/* binding */ BaseRenderTexture)\n/* harmony export */ });\n/* harmony import */ var _pixi_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/color */ \"./node_modules/@pixi/color/lib/index.mjs\");\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _framebuffer_Framebuffer_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../framebuffer/Framebuffer.mjs */ \"./node_modules/@pixi/core/lib/framebuffer/Framebuffer.mjs\");\n/* harmony import */ var _textures_BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../textures/BaseTexture.mjs */ \"./node_modules/@pixi/core/lib/textures/BaseTexture.mjs\");\n\n\n\n\nclass BaseRenderTexture extends _textures_BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_3__.BaseTexture {\n /**\n * @param options\n * @param {number} [options.width=100] - The width of the base render texture.\n * @param {number} [options.height=100] - The height of the base render texture.\n * @param {PIXI.SCALE_MODES} [options.scaleMode=PIXI.BaseTexture.defaultOptions.scaleMode] - See {@link PIXI.SCALE_MODES}\n * for possible values.\n * @param {number} [options.resolution=PIXI.settings.RESOLUTION] - The resolution / device pixel ratio\n * of the texture being generated.\n * @param {PIXI.MSAA_QUALITY} [options.multisample=PIXI.MSAA_QUALITY.NONE] - The number of samples of the frame buffer.\n */\n constructor(options = {}) {\n if (typeof options == \"number\") {\n const width = arguments[0], height = arguments[1], scaleMode = arguments[2], resolution = arguments[3];\n options = { width, height, scaleMode, resolution };\n }\n options.width = options.width ?? 100, options.height = options.height ?? 100, options.multisample ?? (options.multisample = _pixi_constants__WEBPACK_IMPORTED_MODULE_1__.MSAA_QUALITY.NONE), super(null, options), this.mipmap = _pixi_constants__WEBPACK_IMPORTED_MODULE_1__.MIPMAP_MODES.OFF, this.valid = !0, this._clear = new _pixi_color__WEBPACK_IMPORTED_MODULE_0__.Color([0, 0, 0, 0]), this.framebuffer = new _framebuffer_Framebuffer_mjs__WEBPACK_IMPORTED_MODULE_2__.Framebuffer(this.realWidth, this.realHeight).addColorTexture(0, this), this.framebuffer.multisample = options.multisample, this.maskStack = [], this.filterStack = [{}];\n }\n /** Color when clearning the texture. */\n set clearColor(value) {\n this._clear.setValue(value);\n }\n get clearColor() {\n return this._clear.value;\n }\n /**\n * Color object when clearning the texture.\n * @readonly\n * @since 7.2.0\n */\n get clear() {\n return this._clear;\n }\n /**\n * Shortcut to `this.framebuffer.multisample`.\n * @default PIXI.MSAA_QUALITY.NONE\n */\n get multisample() {\n return this.framebuffer.multisample;\n }\n set multisample(value) {\n this.framebuffer.multisample = value;\n }\n /**\n * Resizes the BaseRenderTexture.\n * @param desiredWidth - The desired width to resize to.\n * @param desiredHeight - The desired height to resize to.\n */\n resize(desiredWidth, desiredHeight) {\n this.framebuffer.resize(desiredWidth * this.resolution, desiredHeight * this.resolution), this.setRealSize(this.framebuffer.width, this.framebuffer.height);\n }\n /**\n * Frees the texture and framebuffer from WebGL memory without destroying this texture object.\n * This means you can still use the texture later which will upload it to GPU\n * memory again.\n * @fires PIXI.BaseTexture#dispose\n */\n dispose() {\n this.framebuffer.dispose(), super.dispose();\n }\n /** Destroys this texture. */\n destroy() {\n super.destroy(), this.framebuffer.destroyDepthTexture(), this.framebuffer = null;\n }\n}\n\n//# sourceMappingURL=BaseRenderTexture.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/renderTexture/BaseRenderTexture.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/renderTexture/GenerateTextureSystem.mjs":
-/*!*****************************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/renderTexture/GenerateTextureSystem.mjs ***!
- \*****************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ GenerateTextureSystem: () => (/* binding */ GenerateTextureSystem)\n/* harmony export */ });\n/* harmony import */ var _pixi_extensions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/extensions */ \"./node_modules/@pixi/extensions/lib/index.mjs\");\n/* harmony import */ var _pixi_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/math */ \"./node_modules/@pixi/math/lib/index.mjs\");\n/* harmony import */ var _RenderTexture_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./RenderTexture.mjs */ \"./node_modules/@pixi/core/lib/renderTexture/RenderTexture.mjs\");\n\n\n\nconst tempTransform = new _pixi_math__WEBPACK_IMPORTED_MODULE_1__.Transform(), tempRect = new _pixi_math__WEBPACK_IMPORTED_MODULE_1__.Rectangle();\nclass GenerateTextureSystem {\n constructor(renderer) {\n this.renderer = renderer, this._tempMatrix = new _pixi_math__WEBPACK_IMPORTED_MODULE_1__.Matrix();\n }\n /**\n * A Useful function that returns a texture of the display object that can then be used to create sprites\n * This can be quite useful if your displayObject is complicated and needs to be reused multiple times.\n * @param displayObject - The displayObject the object will be generated from.\n * @param {IGenerateTextureOptions} options - Generate texture options.\n * @param {PIXI.Rectangle} options.region - The region of the displayObject, that shall be rendered,\n * if no region is specified, defaults to the local bounds of the displayObject.\n * @param {number} [options.resolution] - If not given, the renderer's resolution is used.\n * @param {PIXI.MSAA_QUALITY} [options.multisample] - If not given, the renderer's multisample is used.\n * @returns a shiny new texture of the display object passed in\n */\n generateTexture(displayObject, options) {\n const { region: manualRegion, ...textureOptions } = options || {}, region = manualRegion?.copyTo(tempRect) || displayObject.getLocalBounds(tempRect, !0), resolution = textureOptions.resolution || this.renderer.resolution;\n region.width = Math.max(region.width, 1 / resolution), region.height = Math.max(region.height, 1 / resolution), textureOptions.width = region.width, textureOptions.height = region.height, textureOptions.resolution = resolution, textureOptions.multisample ?? (textureOptions.multisample = this.renderer.multisample);\n const renderTexture = _RenderTexture_mjs__WEBPACK_IMPORTED_MODULE_2__.RenderTexture.create(textureOptions);\n this._tempMatrix.tx = -region.x, this._tempMatrix.ty = -region.y;\n const transform = displayObject.transform;\n return displayObject.transform = tempTransform, this.renderer.render(displayObject, {\n renderTexture,\n transform: this._tempMatrix,\n skipUpdateTransform: !!displayObject.parent,\n blit: !0\n }), displayObject.transform = transform, renderTexture;\n }\n destroy() {\n }\n}\nGenerateTextureSystem.extension = {\n type: [\n _pixi_extensions__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.RendererSystem,\n _pixi_extensions__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.CanvasRendererSystem\n ],\n name: \"textureGenerator\"\n};\n_pixi_extensions__WEBPACK_IMPORTED_MODULE_0__.extensions.add(GenerateTextureSystem);\n\n//# sourceMappingURL=GenerateTextureSystem.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/renderTexture/GenerateTextureSystem.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/renderTexture/RenderTexture.mjs":
-/*!*********************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/renderTexture/RenderTexture.mjs ***!
- \*********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ RenderTexture: () => (/* binding */ RenderTexture)\n/* harmony export */ });\n/* harmony import */ var _textures_Texture_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../textures/Texture.mjs */ \"./node_modules/@pixi/core/lib/textures/Texture.mjs\");\n/* harmony import */ var _BaseRenderTexture_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./BaseRenderTexture.mjs */ \"./node_modules/@pixi/core/lib/renderTexture/BaseRenderTexture.mjs\");\n\n\nclass RenderTexture extends _textures_Texture_mjs__WEBPACK_IMPORTED_MODULE_0__.Texture {\n /**\n * @param baseRenderTexture - The base texture object that this texture uses.\n * @param frame - The rectangle frame of the texture to show.\n */\n constructor(baseRenderTexture, frame) {\n super(baseRenderTexture, frame), this.valid = !0, this.filterFrame = null, this.filterPoolKey = null, this.updateUvs();\n }\n /**\n * Shortcut to `this.baseTexture.framebuffer`, saves baseTexture cast.\n * @readonly\n */\n get framebuffer() {\n return this.baseTexture.framebuffer;\n }\n /**\n * Shortcut to `this.framebuffer.multisample`.\n * @default PIXI.MSAA_QUALITY.NONE\n */\n get multisample() {\n return this.framebuffer.multisample;\n }\n set multisample(value) {\n this.framebuffer.multisample = value;\n }\n /**\n * Resizes the RenderTexture.\n * @param desiredWidth - The desired width to resize to.\n * @param desiredHeight - The desired height to resize to.\n * @param resizeBaseTexture - Should the baseTexture.width and height values be resized as well?\n */\n resize(desiredWidth, desiredHeight, resizeBaseTexture = !0) {\n const resolution = this.baseTexture.resolution, width = Math.round(desiredWidth * resolution) / resolution, height = Math.round(desiredHeight * resolution) / resolution;\n this.valid = width > 0 && height > 0, this._frame.width = this.orig.width = width, this._frame.height = this.orig.height = height, resizeBaseTexture && this.baseTexture.resize(width, height), this.updateUvs();\n }\n /**\n * Changes the resolution of baseTexture, but does not change framebuffer size.\n * @param resolution - The new resolution to apply to RenderTexture\n */\n setResolution(resolution) {\n const { baseTexture } = this;\n baseTexture.resolution !== resolution && (baseTexture.setResolution(resolution), this.resize(baseTexture.width, baseTexture.height, !1));\n }\n /**\n * A short hand way of creating a render texture.\n * @param options - Options\n * @param {number} [options.width=100] - The width of the render texture\n * @param {number} [options.height=100] - The height of the render texture\n * @param {PIXI.SCALE_MODES} [options.scaleMode=PIXI.BaseTexture.defaultOptions.scaleMode] - See {@link PIXI.SCALE_MODES}\n * for possible values\n * @param {number} [options.resolution=PIXI.settings.RESOLUTION] - The resolution / device pixel ratio of the texture\n * being generated\n * @param {PIXI.MSAA_QUALITY} [options.multisample=PIXI.MSAA_QUALITY.NONE] - The number of samples of the frame buffer\n * @returns The new render texture\n */\n static create(options) {\n return new RenderTexture(new _BaseRenderTexture_mjs__WEBPACK_IMPORTED_MODULE_1__.BaseRenderTexture(options));\n }\n}\n\n//# sourceMappingURL=RenderTexture.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/renderTexture/RenderTexture.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/renderTexture/RenderTexturePool.mjs":
-/*!*************************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/renderTexture/RenderTexturePool.mjs ***!
- \*************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ RenderTexturePool: () => (/* binding */ RenderTexturePool)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _pixi_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/utils */ \"./node_modules/@pixi/utils/lib/index.mjs\");\n/* harmony import */ var _BaseRenderTexture_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./BaseRenderTexture.mjs */ \"./node_modules/@pixi/core/lib/renderTexture/BaseRenderTexture.mjs\");\n/* harmony import */ var _RenderTexture_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./RenderTexture.mjs */ \"./node_modules/@pixi/core/lib/renderTexture/RenderTexture.mjs\");\n\n\n\n\nclass RenderTexturePool {\n /**\n * @param textureOptions - options that will be passed to BaseRenderTexture constructor\n * @param {PIXI.SCALE_MODES} [textureOptions.scaleMode] - See {@link PIXI.SCALE_MODES} for possible values.\n */\n constructor(textureOptions) {\n this.texturePool = {}, this.textureOptions = textureOptions || {}, this.enableFullScreen = !1, this._pixelsWidth = 0, this._pixelsHeight = 0;\n }\n /**\n * Creates texture with params that were specified in pool constructor.\n * @param realWidth - Width of texture in pixels.\n * @param realHeight - Height of texture in pixels.\n * @param multisample - Number of samples of the framebuffer.\n */\n createTexture(realWidth, realHeight, multisample = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MSAA_QUALITY.NONE) {\n const baseRenderTexture = new _BaseRenderTexture_mjs__WEBPACK_IMPORTED_MODULE_2__.BaseRenderTexture(Object.assign({\n width: realWidth,\n height: realHeight,\n resolution: 1,\n multisample\n }, this.textureOptions));\n return new _RenderTexture_mjs__WEBPACK_IMPORTED_MODULE_3__.RenderTexture(baseRenderTexture);\n }\n /**\n * Gets a Power-of-Two render texture or fullScreen texture\n * @param minWidth - The minimum width of the render texture.\n * @param minHeight - The minimum height of the render texture.\n * @param resolution - The resolution of the render texture.\n * @param multisample - Number of samples of the render texture.\n * @returns The new render texture.\n */\n getOptimalTexture(minWidth, minHeight, resolution = 1, multisample = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MSAA_QUALITY.NONE) {\n let key;\n minWidth = Math.max(Math.ceil(minWidth * resolution - 1e-6), 1), minHeight = Math.max(Math.ceil(minHeight * resolution - 1e-6), 1), !this.enableFullScreen || minWidth !== this._pixelsWidth || minHeight !== this._pixelsHeight ? (minWidth = (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_1__.nextPow2)(minWidth), minHeight = (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_1__.nextPow2)(minHeight), key = ((minWidth & 65535) << 16 | minHeight & 65535) >>> 0, multisample > 1 && (key += multisample * 4294967296)) : key = multisample > 1 ? -multisample : -1, this.texturePool[key] || (this.texturePool[key] = []);\n let renderTexture = this.texturePool[key].pop();\n return renderTexture || (renderTexture = this.createTexture(minWidth, minHeight, multisample)), renderTexture.filterPoolKey = key, renderTexture.setResolution(resolution), renderTexture;\n }\n /**\n * Gets extra texture of the same size as input renderTexture\n *\n * `getFilterTexture(input, 0.5)` or `getFilterTexture(0.5, input)`\n * @param input - renderTexture from which size and resolution will be copied\n * @param resolution - override resolution of the renderTexture\n * It overrides, it does not multiply\n * @param multisample - number of samples of the renderTexture\n */\n getFilterTexture(input, resolution, multisample) {\n const filterTexture = this.getOptimalTexture(\n input.width,\n input.height,\n resolution || input.resolution,\n multisample || _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MSAA_QUALITY.NONE\n );\n return filterTexture.filterFrame = input.filterFrame, filterTexture;\n }\n /**\n * Place a render texture back into the pool.\n * @param renderTexture - The renderTexture to free\n */\n returnTexture(renderTexture) {\n const key = renderTexture.filterPoolKey;\n renderTexture.filterFrame = null, this.texturePool[key].push(renderTexture);\n }\n /**\n * Alias for returnTexture, to be compliant with FilterSystem interface.\n * @param renderTexture - The renderTexture to free\n */\n returnFilterTexture(renderTexture) {\n this.returnTexture(renderTexture);\n }\n /**\n * Clears the pool.\n * @param destroyTextures - Destroy all stored textures.\n */\n clear(destroyTextures) {\n if (destroyTextures = destroyTextures !== !1, destroyTextures)\n for (const i in this.texturePool) {\n const textures = this.texturePool[i];\n if (textures)\n for (let j = 0; j < textures.length; j++)\n textures[j].destroy(!0);\n }\n this.texturePool = {};\n }\n /**\n * If screen size was changed, drops all screen-sized textures,\n * sets new screen size, sets `enableFullScreen` to true\n *\n * Size is measured in pixels, `renderer.view` can be passed here, not `renderer.screen`\n * @param size - Initial size of screen.\n */\n setScreenSize(size) {\n if (!(size.width === this._pixelsWidth && size.height === this._pixelsHeight)) {\n this.enableFullScreen = size.width > 0 && size.height > 0;\n for (const i in this.texturePool) {\n if (!(Number(i) < 0))\n continue;\n const textures = this.texturePool[i];\n if (textures)\n for (let j = 0; j < textures.length; j++)\n textures[j].destroy(!0);\n this.texturePool[i] = [];\n }\n this._pixelsWidth = size.width, this._pixelsHeight = size.height;\n }\n }\n}\nRenderTexturePool.SCREEN_KEY = -1;\n\n//# sourceMappingURL=RenderTexturePool.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/renderTexture/RenderTexturePool.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/renderTexture/RenderTextureSystem.mjs":
-/*!***************************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/renderTexture/RenderTextureSystem.mjs ***!
- \***************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ RenderTextureSystem: () => (/* binding */ RenderTextureSystem)\n/* harmony export */ });\n/* harmony import */ var _pixi_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/color */ \"./node_modules/@pixi/color/lib/index.mjs\");\n/* harmony import */ var _pixi_extensions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/extensions */ \"./node_modules/@pixi/extensions/lib/index.mjs\");\n/* harmony import */ var _pixi_math__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @pixi/math */ \"./node_modules/@pixi/math/lib/index.mjs\");\n\n\n\nconst tempRect = new _pixi_math__WEBPACK_IMPORTED_MODULE_2__.Rectangle(), tempRect2 = new _pixi_math__WEBPACK_IMPORTED_MODULE_2__.Rectangle();\nclass RenderTextureSystem {\n /**\n * @param renderer - The renderer this System works for.\n */\n constructor(renderer) {\n this.renderer = renderer, this.defaultMaskStack = [], this.current = null, this.sourceFrame = new _pixi_math__WEBPACK_IMPORTED_MODULE_2__.Rectangle(), this.destinationFrame = new _pixi_math__WEBPACK_IMPORTED_MODULE_2__.Rectangle(), this.viewportFrame = new _pixi_math__WEBPACK_IMPORTED_MODULE_2__.Rectangle();\n }\n contextChange() {\n const attributes = this.renderer?.gl.getContextAttributes();\n this._rendererPremultipliedAlpha = !!(attributes && attributes.alpha && attributes.premultipliedAlpha);\n }\n /**\n * Bind the current render texture.\n * @param renderTexture - RenderTexture to bind, by default its `null` - the screen.\n * @param sourceFrame - Part of world that is mapped to the renderTexture.\n * @param destinationFrame - Part of renderTexture, by default it has the same size as sourceFrame.\n */\n bind(renderTexture = null, sourceFrame, destinationFrame) {\n const renderer = this.renderer;\n this.current = renderTexture;\n let baseTexture, framebuffer, resolution;\n renderTexture ? (baseTexture = renderTexture.baseTexture, resolution = baseTexture.resolution, sourceFrame || (tempRect.width = renderTexture.frame.width, tempRect.height = renderTexture.frame.height, sourceFrame = tempRect), destinationFrame || (tempRect2.x = renderTexture.frame.x, tempRect2.y = renderTexture.frame.y, tempRect2.width = sourceFrame.width, tempRect2.height = sourceFrame.height, destinationFrame = tempRect2), framebuffer = baseTexture.framebuffer) : (resolution = renderer.resolution, sourceFrame || (tempRect.width = renderer._view.screen.width, tempRect.height = renderer._view.screen.height, sourceFrame = tempRect), destinationFrame || (destinationFrame = tempRect, destinationFrame.width = sourceFrame.width, destinationFrame.height = sourceFrame.height));\n const viewportFrame = this.viewportFrame;\n viewportFrame.x = destinationFrame.x * resolution, viewportFrame.y = destinationFrame.y * resolution, viewportFrame.width = destinationFrame.width * resolution, viewportFrame.height = destinationFrame.height * resolution, renderTexture || (viewportFrame.y = renderer.view.height - (viewportFrame.y + viewportFrame.height)), viewportFrame.ceil(), this.renderer.framebuffer.bind(framebuffer, viewportFrame), this.renderer.projection.update(destinationFrame, sourceFrame, resolution, !framebuffer), renderTexture ? this.renderer.mask.setMaskStack(baseTexture.maskStack) : this.renderer.mask.setMaskStack(this.defaultMaskStack), this.sourceFrame.copyFrom(sourceFrame), this.destinationFrame.copyFrom(destinationFrame);\n }\n /**\n * Erases the render texture and fills the drawing area with a colour.\n * @param clearColor - The color as rgba, default to use the renderer backgroundColor\n * @param [mask=BUFFER_BITS.COLOR | BUFFER_BITS.DEPTH] - Bitwise OR of masks\n * that indicate the buffers to be cleared, by default COLOR and DEPTH buffers.\n */\n clear(clearColor, mask) {\n const fallbackColor = this.current ? this.current.baseTexture.clear : this.renderer.background.backgroundColor, color = _pixi_color__WEBPACK_IMPORTED_MODULE_0__.Color.shared.setValue(clearColor || fallbackColor);\n (this.current && this.current.baseTexture.alphaMode > 0 || !this.current && this._rendererPremultipliedAlpha) && color.premultiply(color.alpha);\n const destinationFrame = this.destinationFrame, baseFrame = this.current ? this.current.baseTexture : this.renderer._view.screen, clearMask = destinationFrame.width !== baseFrame.width || destinationFrame.height !== baseFrame.height;\n if (clearMask) {\n let { x, y, width, height } = this.viewportFrame;\n x = Math.round(x), y = Math.round(y), width = Math.round(width), height = Math.round(height), this.renderer.gl.enable(this.renderer.gl.SCISSOR_TEST), this.renderer.gl.scissor(x, y, width, height);\n }\n this.renderer.framebuffer.clear(color.red, color.green, color.blue, color.alpha, mask), clearMask && this.renderer.scissor.pop();\n }\n resize() {\n this.bind(null);\n }\n /** Resets render-texture state. */\n reset() {\n this.bind(null);\n }\n destroy() {\n this.renderer = null;\n }\n}\nRenderTextureSystem.extension = {\n type: _pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.ExtensionType.RendererSystem,\n name: \"renderTexture\"\n};\n_pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.extensions.add(RenderTextureSystem);\n\n//# sourceMappingURL=RenderTextureSystem.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/renderTexture/RenderTextureSystem.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/settings.mjs":
-/*!**************************************************!*\
- !*** ./node_modules/@pixi/core/lib/settings.mjs ***!
- \**************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _pixi_settings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/settings */ \"./node_modules/@pixi/settings/lib/index.mjs\");\n/* harmony import */ var _pixi_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @pixi/utils */ \"./node_modules/@pixi/utils/lib/index.mjs\");\n/* harmony import */ var _batch_BatchRenderer_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./batch/BatchRenderer.mjs */ \"./node_modules/@pixi/core/lib/batch/BatchRenderer.mjs\");\n/* harmony import */ var _filters_Filter_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./filters/Filter.mjs */ \"./node_modules/@pixi/core/lib/filters/Filter.mjs\");\n/* harmony import */ var _shader_Program_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./shader/Program.mjs */ \"./node_modules/@pixi/core/lib/shader/Program.mjs\");\n/* harmony import */ var _systems_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./systems.mjs */ \"./node_modules/@pixi/core/lib/systems.mjs\");\n/* harmony import */ var _textures_BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./textures/BaseTexture.mjs */ \"./node_modules/@pixi/core/lib/textures/BaseTexture.mjs\");\n/* harmony import */ var _context_ContextSystem_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./context/ContextSystem.mjs */ \"./node_modules/@pixi/core/lib/context/ContextSystem.mjs\");\n/* harmony import */ var _background_BackgroundSystem_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./background/BackgroundSystem.mjs */ \"./node_modules/@pixi/core/lib/background/BackgroundSystem.mjs\");\n/* harmony import */ var _view_ViewSystem_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./view/ViewSystem.mjs */ \"./node_modules/@pixi/core/lib/view/ViewSystem.mjs\");\n/* harmony import */ var _startup_StartupSystem_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./startup/StartupSystem.mjs */ \"./node_modules/@pixi/core/lib/startup/StartupSystem.mjs\");\n/* harmony import */ var _textures_TextureGCSystem_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./textures/TextureGCSystem.mjs */ \"./node_modules/@pixi/core/lib/textures/TextureGCSystem.mjs\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n_pixi_settings__WEBPACK_IMPORTED_MODULE_1__.settings.PREFER_ENV = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.ENV.WEBGL2;\n_pixi_settings__WEBPACK_IMPORTED_MODULE_1__.settings.STRICT_TEXTURE_CACHE = !1;\n_pixi_settings__WEBPACK_IMPORTED_MODULE_1__.settings.RENDER_OPTIONS = {\n ..._context_ContextSystem_mjs__WEBPACK_IMPORTED_MODULE_8__.ContextSystem.defaultOptions,\n ..._background_BackgroundSystem_mjs__WEBPACK_IMPORTED_MODULE_9__.BackgroundSystem.defaultOptions,\n ..._view_ViewSystem_mjs__WEBPACK_IMPORTED_MODULE_10__.ViewSystem.defaultOptions,\n ..._startup_StartupSystem_mjs__WEBPACK_IMPORTED_MODULE_11__.StartupSystem.defaultOptions\n};\nObject.defineProperties(_pixi_settings__WEBPACK_IMPORTED_MODULE_1__.settings, {\n /**\n * @static\n * @name WRAP_MODE\n * @memberof PIXI.settings\n * @type {PIXI.WRAP_MODES}\n * @deprecated since 7.1.0\n * @see PIXI.BaseTexture.defaultOptions.wrapMode\n */\n WRAP_MODE: {\n get() {\n return _textures_BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_7__.BaseTexture.defaultOptions.wrapMode;\n },\n set(value) {\n (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_2__.deprecation)(\"7.1.0\", \"settings.WRAP_MODE is deprecated, use BaseTexture.defaultOptions.wrapMode\"), _textures_BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_7__.BaseTexture.defaultOptions.wrapMode = value;\n }\n },\n /**\n * @static\n * @name SCALE_MODE\n * @memberof PIXI.settings\n * @type {PIXI.SCALE_MODES}\n * @deprecated since 7.1.0\n * @see PIXI.BaseTexture.defaultOptions.scaleMode\n */\n SCALE_MODE: {\n get() {\n return _textures_BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_7__.BaseTexture.defaultOptions.scaleMode;\n },\n set(value) {\n (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_2__.deprecation)(\"7.1.0\", \"settings.SCALE_MODE is deprecated, use BaseTexture.defaultOptions.scaleMode\"), _textures_BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_7__.BaseTexture.defaultOptions.scaleMode = value;\n }\n },\n /**\n * @static\n * @name MIPMAP_TEXTURES\n * @memberof PIXI.settings\n * @type {PIXI.MIPMAP_MODES}\n * @deprecated since 7.1.0\n * @see PIXI.BaseTexture.defaultOptions.mipmap\n */\n MIPMAP_TEXTURES: {\n get() {\n return _textures_BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_7__.BaseTexture.defaultOptions.mipmap;\n },\n set(value) {\n (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_2__.deprecation)(\"7.1.0\", \"settings.MIPMAP_TEXTURES is deprecated, use BaseTexture.defaultOptions.mipmap\"), _textures_BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_7__.BaseTexture.defaultOptions.mipmap = value;\n }\n // MIPMAP_MODES.POW2,\n },\n /**\n * @static\n * @name ANISOTROPIC_LEVEL\n * @memberof PIXI.settings\n * @type {number}\n * @deprecated since 7.1.0\n * @see PIXI.BaseTexture.defaultOptions.anisotropicLevel\n */\n ANISOTROPIC_LEVEL: {\n get() {\n return _textures_BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_7__.BaseTexture.defaultOptions.anisotropicLevel;\n },\n set(value) {\n (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_2__.deprecation)(\n \"7.1.0\",\n \"settings.ANISOTROPIC_LEVEL is deprecated, use BaseTexture.defaultOptions.anisotropicLevel\"\n ), _textures_BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_7__.BaseTexture.defaultOptions.anisotropicLevel = value;\n }\n },\n /**\n * Default filter resolution.\n * @static\n * @name FILTER_RESOLUTION\n * @memberof PIXI.settings\n * @deprecated since 7.1.0\n * @type {number|null}\n * @see PIXI.Filter.defaultResolution\n */\n FILTER_RESOLUTION: {\n get() {\n return (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_2__.deprecation)(\"7.1.0\", \"settings.FILTER_RESOLUTION is deprecated, use Filter.defaultResolution\"), _filters_Filter_mjs__WEBPACK_IMPORTED_MODULE_4__.Filter.defaultResolution;\n },\n set(value) {\n _filters_Filter_mjs__WEBPACK_IMPORTED_MODULE_4__.Filter.defaultResolution = value;\n }\n },\n /**\n * Default filter samples.\n * @static\n * @name FILTER_MULTISAMPLE\n * @memberof PIXI.settings\n * @deprecated since 7.1.0\n * @type {PIXI.MSAA_QUALITY}\n * @see PIXI.Filter.defaultMultisample\n */\n FILTER_MULTISAMPLE: {\n get() {\n return (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_2__.deprecation)(\"7.1.0\", \"settings.FILTER_MULTISAMPLE is deprecated, use Filter.defaultMultisample\"), _filters_Filter_mjs__WEBPACK_IMPORTED_MODULE_4__.Filter.defaultMultisample;\n },\n set(value) {\n _filters_Filter_mjs__WEBPACK_IMPORTED_MODULE_4__.Filter.defaultMultisample = value;\n }\n },\n /**\n * The maximum textures that this device supports.\n * @static\n * @name SPRITE_MAX_TEXTURES\n * @memberof PIXI.settings\n * @deprecated since 7.1.0\n * @see PIXI.BatchRenderer.defaultMaxTextures\n * @type {number}\n */\n SPRITE_MAX_TEXTURES: {\n get() {\n return _batch_BatchRenderer_mjs__WEBPACK_IMPORTED_MODULE_3__.BatchRenderer.defaultMaxTextures;\n },\n set(value) {\n (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_2__.deprecation)(\"7.1.0\", \"settings.SPRITE_MAX_TEXTURES is deprecated, use BatchRenderer.defaultMaxTextures\"), _batch_BatchRenderer_mjs__WEBPACK_IMPORTED_MODULE_3__.BatchRenderer.defaultMaxTextures = value;\n }\n },\n /**\n * The default sprite batch size.\n *\n * The default aims to balance desktop and mobile devices.\n * @static\n * @name SPRITE_BATCH_SIZE\n * @memberof PIXI.settings\n * @see PIXI.BatchRenderer.defaultBatchSize\n * @deprecated since 7.1.0\n * @type {number}\n */\n SPRITE_BATCH_SIZE: {\n get() {\n return _batch_BatchRenderer_mjs__WEBPACK_IMPORTED_MODULE_3__.BatchRenderer.defaultBatchSize;\n },\n set(value) {\n (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_2__.deprecation)(\"7.1.0\", \"settings.SPRITE_BATCH_SIZE is deprecated, use BatchRenderer.defaultBatchSize\"), _batch_BatchRenderer_mjs__WEBPACK_IMPORTED_MODULE_3__.BatchRenderer.defaultBatchSize = value;\n }\n },\n /**\n * Can we upload the same buffer in a single frame?\n * @static\n * @name CAN_UPLOAD_SAME_BUFFER\n * @memberof PIXI.settings\n * @see PIXI.BatchRenderer.canUploadSameBuffer\n * @deprecated since 7.1.0\n * @type {boolean}\n */\n CAN_UPLOAD_SAME_BUFFER: {\n get() {\n return _batch_BatchRenderer_mjs__WEBPACK_IMPORTED_MODULE_3__.BatchRenderer.canUploadSameBuffer;\n },\n set(value) {\n (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_2__.deprecation)(\"7.1.0\", \"settings.CAN_UPLOAD_SAME_BUFFER is deprecated, use BatchRenderer.canUploadSameBuffer\"), _batch_BatchRenderer_mjs__WEBPACK_IMPORTED_MODULE_3__.BatchRenderer.canUploadSameBuffer = value;\n }\n },\n /**\n * Default Garbage Collection mode.\n * @static\n * @name GC_MODE\n * @memberof PIXI.settings\n * @type {PIXI.GC_MODES}\n * @deprecated since 7.1.0\n * @see PIXI.TextureGCSystem.defaultMode\n */\n GC_MODE: {\n get() {\n return _textures_TextureGCSystem_mjs__WEBPACK_IMPORTED_MODULE_12__.TextureGCSystem.defaultMode;\n },\n set(value) {\n (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_2__.deprecation)(\"7.1.0\", \"settings.GC_MODE is deprecated, use TextureGCSystem.defaultMode\"), _textures_TextureGCSystem_mjs__WEBPACK_IMPORTED_MODULE_12__.TextureGCSystem.defaultMode = value;\n }\n },\n /**\n * Default Garbage Collection max idle.\n * @static\n * @name GC_MAX_IDLE\n * @memberof PIXI.settings\n * @type {number}\n * @deprecated since 7.1.0\n * @see PIXI.TextureGCSystem.defaultMaxIdle\n */\n GC_MAX_IDLE: {\n get() {\n return _textures_TextureGCSystem_mjs__WEBPACK_IMPORTED_MODULE_12__.TextureGCSystem.defaultMaxIdle;\n },\n set(value) {\n (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_2__.deprecation)(\"7.1.0\", \"settings.GC_MAX_IDLE is deprecated, use TextureGCSystem.defaultMaxIdle\"), _textures_TextureGCSystem_mjs__WEBPACK_IMPORTED_MODULE_12__.TextureGCSystem.defaultMaxIdle = value;\n }\n },\n /**\n * Default Garbage Collection maximum check count.\n * @static\n * @name GC_MAX_CHECK_COUNT\n * @memberof PIXI.settings\n * @type {number}\n * @deprecated since 7.1.0\n * @see PIXI.TextureGCSystem.defaultCheckCountMax\n */\n GC_MAX_CHECK_COUNT: {\n get() {\n return _textures_TextureGCSystem_mjs__WEBPACK_IMPORTED_MODULE_12__.TextureGCSystem.defaultCheckCountMax;\n },\n set(value) {\n (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_2__.deprecation)(\"7.1.0\", \"settings.GC_MAX_CHECK_COUNT is deprecated, use TextureGCSystem.defaultCheckCountMax\"), _textures_TextureGCSystem_mjs__WEBPACK_IMPORTED_MODULE_12__.TextureGCSystem.defaultCheckCountMax = value;\n }\n },\n /**\n * Default specify float precision in vertex shader.\n * @static\n * @name PRECISION_VERTEX\n * @memberof PIXI.settings\n * @type {PIXI.PRECISION}\n * @deprecated since 7.1.0\n * @see PIXI.Program.defaultVertexPrecision\n */\n PRECISION_VERTEX: {\n get() {\n return _shader_Program_mjs__WEBPACK_IMPORTED_MODULE_5__.Program.defaultVertexPrecision;\n },\n set(value) {\n (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_2__.deprecation)(\"7.1.0\", \"settings.PRECISION_VERTEX is deprecated, use Program.defaultVertexPrecision\"), _shader_Program_mjs__WEBPACK_IMPORTED_MODULE_5__.Program.defaultVertexPrecision = value;\n }\n },\n /**\n * Default specify float precision in fragment shader.\n * @static\n * @name PRECISION_FRAGMENT\n * @memberof PIXI.settings\n * @type {PIXI.PRECISION}\n * @deprecated since 7.1.0\n * @see PIXI.Program.defaultFragmentPrecision\n */\n PRECISION_FRAGMENT: {\n get() {\n return _shader_Program_mjs__WEBPACK_IMPORTED_MODULE_5__.Program.defaultFragmentPrecision;\n },\n set(value) {\n (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_2__.deprecation)(\"7.1.0\", \"settings.PRECISION_FRAGMENT is deprecated, use Program.defaultFragmentPrecision\"), _shader_Program_mjs__WEBPACK_IMPORTED_MODULE_5__.Program.defaultFragmentPrecision = value;\n }\n }\n});\n//# sourceMappingURL=settings.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/settings.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/shader/GLProgram.mjs":
-/*!**********************************************************!*\
- !*** ./node_modules/@pixi/core/lib/shader/GLProgram.mjs ***!
- \**********************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ GLProgram: () => (/* binding */ GLProgram),\n/* harmony export */ IGLUniformData: () => (/* binding */ IGLUniformData)\n/* harmony export */ });\nclass IGLUniformData {\n}\nclass GLProgram {\n /**\n * Makes a new Pixi program.\n * @param program - webgl program\n * @param uniformData - uniforms\n */\n constructor(program, uniformData) {\n this.program = program, this.uniformData = uniformData, this.uniformGroups = {}, this.uniformDirtyGroups = {}, this.uniformBufferBindings = {};\n }\n /** Destroys this program. */\n destroy() {\n this.uniformData = null, this.uniformGroups = null, this.uniformDirtyGroups = null, this.uniformBufferBindings = null, this.program = null;\n }\n}\n\n//# sourceMappingURL=GLProgram.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/shader/GLProgram.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/shader/Program.mjs":
-/*!********************************************************!*\
- !*** ./node_modules/@pixi/core/lib/shader/Program.mjs ***!
- \********************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Program: () => (/* binding */ Program)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _pixi_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/utils */ \"./node_modules/@pixi/utils/lib/index.mjs\");\n/* harmony import */ var _defaultProgram_frag_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./defaultProgram.frag.mjs */ \"./node_modules/@pixi/core/lib/shader/defaultProgram.frag.mjs\");\n/* harmony import */ var _defaultProgram_vert_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./defaultProgram.vert.mjs */ \"./node_modules/@pixi/core/lib/shader/defaultProgram.vert.mjs\");\n/* harmony import */ var _utils_index_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/index.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/index.mjs\");\n/* harmony import */ var _utils_setPrecision_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/setPrecision.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/setPrecision.mjs\");\n/* harmony import */ var _utils_getMaxFragmentPrecision_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils/getMaxFragmentPrecision.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/getMaxFragmentPrecision.mjs\");\n\n\n\n\n\n\n\nlet UID = 0;\nconst nameCache = {}, _Program = class _Program2 {\n /**\n * @param vertexSrc - The source of the vertex shader.\n * @param fragmentSrc - The source of the fragment shader.\n * @param name - Name for shader\n * @param extra - Extra data for shader\n */\n constructor(vertexSrc, fragmentSrc, name = \"pixi-shader\", extra = {}) {\n this.extra = {}, this.id = UID++, this.vertexSrc = vertexSrc || _Program2.defaultVertexSrc, this.fragmentSrc = fragmentSrc || _Program2.defaultFragmentSrc, this.vertexSrc = this.vertexSrc.trim(), this.fragmentSrc = this.fragmentSrc.trim(), this.extra = extra, this.vertexSrc.substring(0, 8) !== \"#version\" && (name = name.replace(/\\s+/g, \"-\"), nameCache[name] ? (nameCache[name]++, name += `-${nameCache[name]}`) : nameCache[name] = 1, this.vertexSrc = `#define SHADER_NAME ${name}\n${this.vertexSrc}`, this.fragmentSrc = `#define SHADER_NAME ${name}\n${this.fragmentSrc}`, this.vertexSrc = (0,_utils_setPrecision_mjs__WEBPACK_IMPORTED_MODULE_5__.setPrecision)(\n this.vertexSrc,\n _Program2.defaultVertexPrecision,\n _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.PRECISION.HIGH\n ), this.fragmentSrc = (0,_utils_setPrecision_mjs__WEBPACK_IMPORTED_MODULE_5__.setPrecision)(\n this.fragmentSrc,\n _Program2.defaultFragmentPrecision,\n (0,_utils_getMaxFragmentPrecision_mjs__WEBPACK_IMPORTED_MODULE_6__.getMaxFragmentPrecision)()\n )), this.glPrograms = {}, this.syncUniforms = null;\n }\n /**\n * The default vertex shader source.\n * @readonly\n */\n static get defaultVertexSrc() {\n return _defaultProgram_vert_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n }\n /**\n * The default fragment shader source.\n * @readonly\n */\n static get defaultFragmentSrc() {\n return _defaultProgram_frag_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n }\n /**\n * A short hand function to create a program based of a vertex and fragment shader.\n *\n * This method will also check to see if there is a cached program.\n * @param vertexSrc - The source of the vertex shader.\n * @param fragmentSrc - The source of the fragment shader.\n * @param name - Name for shader\n * @returns A shiny new PixiJS shader program!\n */\n static from(vertexSrc, fragmentSrc, name) {\n const key = vertexSrc + fragmentSrc;\n let program = _pixi_utils__WEBPACK_IMPORTED_MODULE_1__.ProgramCache[key];\n return program || (_pixi_utils__WEBPACK_IMPORTED_MODULE_1__.ProgramCache[key] = program = new _Program2(vertexSrc, fragmentSrc, name)), program;\n }\n};\n_Program.defaultVertexPrecision = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.PRECISION.HIGH, /**\n* Default specify float precision in fragment shader.\n* iOS is best set at highp due to https://github.com/pixijs/pixijs/issues/3742\n* @static\n* @type {PIXI.PRECISION}\n* @default PIXI.PRECISION.MEDIUM\n*/\n_Program.defaultFragmentPrecision = _pixi_utils__WEBPACK_IMPORTED_MODULE_1__.isMobile.apple.device ? _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.PRECISION.HIGH : _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.PRECISION.MEDIUM;\nlet Program = _Program;\n\n//# sourceMappingURL=Program.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/shader/Program.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/shader/Shader.mjs":
-/*!*******************************************************!*\
- !*** ./node_modules/@pixi/core/lib/shader/Shader.mjs ***!
- \*******************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Shader: () => (/* binding */ Shader)\n/* harmony export */ });\n/* harmony import */ var _pixi_runner__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/runner */ \"./node_modules/@pixi/runner/lib/index.mjs\");\n/* harmony import */ var _Program_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Program.mjs */ \"./node_modules/@pixi/core/lib/shader/Program.mjs\");\n/* harmony import */ var _UniformGroup_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./UniformGroup.mjs */ \"./node_modules/@pixi/core/lib/shader/UniformGroup.mjs\");\n\n\n\nclass Shader {\n /**\n * @param program - The program the shader will use.\n * @param uniforms - Custom uniforms to use to augment the built-in ones.\n */\n constructor(program, uniforms) {\n this.uniformBindCount = 0, this.program = program, uniforms ? uniforms instanceof _UniformGroup_mjs__WEBPACK_IMPORTED_MODULE_2__.UniformGroup ? this.uniformGroup = uniforms : this.uniformGroup = new _UniformGroup_mjs__WEBPACK_IMPORTED_MODULE_2__.UniformGroup(uniforms) : this.uniformGroup = new _UniformGroup_mjs__WEBPACK_IMPORTED_MODULE_2__.UniformGroup({}), this.disposeRunner = new _pixi_runner__WEBPACK_IMPORTED_MODULE_0__.Runner(\"disposeShader\");\n }\n // TODO move to shader system..\n checkUniformExists(name, group) {\n if (group.uniforms[name])\n return !0;\n for (const i in group.uniforms) {\n const uniform = group.uniforms[i];\n if (uniform.group === !0 && this.checkUniformExists(name, uniform))\n return !0;\n }\n return !1;\n }\n destroy() {\n this.uniformGroup = null, this.disposeRunner.emit(this), this.disposeRunner.destroy();\n }\n /**\n * Shader uniform values, shortcut for `uniformGroup.uniforms`.\n * @readonly\n */\n get uniforms() {\n return this.uniformGroup.uniforms;\n }\n /**\n * A short hand function to create a shader based of a vertex and fragment shader.\n * @param vertexSrc - The source of the vertex shader.\n * @param fragmentSrc - The source of the fragment shader.\n * @param uniforms - Custom uniforms to use to augment the built-in ones.\n * @returns A shiny new PixiJS shader!\n */\n static from(vertexSrc, fragmentSrc, uniforms) {\n const program = _Program_mjs__WEBPACK_IMPORTED_MODULE_1__.Program.from(vertexSrc, fragmentSrc);\n return new Shader(program, uniforms);\n }\n}\n\n//# sourceMappingURL=Shader.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/shader/Shader.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/shader/ShaderSystem.mjs":
-/*!*************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/shader/ShaderSystem.mjs ***!
- \*************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ShaderSystem: () => (/* binding */ ShaderSystem)\n/* harmony export */ });\n/* harmony import */ var _pixi_extensions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/extensions */ \"./node_modules/@pixi/extensions/lib/index.mjs\");\n/* harmony import */ var _utils_index_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/index.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/index.mjs\");\n/* harmony import */ var _utils_generateProgram_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/generateProgram.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/generateProgram.mjs\");\n/* harmony import */ var _utils_generateUniformBufferSync_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/generateUniformBufferSync.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/generateUniformBufferSync.mjs\");\n/* harmony import */ var _utils_unsafeEvalSupported_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/unsafeEvalSupported.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/unsafeEvalSupported.mjs\");\n/* harmony import */ var _utils_generateUniformsSync_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/generateUniformsSync.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/generateUniformsSync.mjs\");\n\n\n\n\n\n\nlet UID = 0;\nconst defaultSyncData = { textureCount: 0, uboCount: 0 };\nclass ShaderSystem {\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n this.destroyed = !1, this.renderer = renderer, this.systemCheck(), this.gl = null, this.shader = null, this.program = null, this.cache = {}, this._uboCache = {}, this.id = UID++;\n }\n /**\n * Overrideable function by `@pixi/unsafe-eval` to silence\n * throwing an error if platform doesn't support unsafe-evals.\n * @private\n */\n systemCheck() {\n if (!(0,_utils_unsafeEvalSupported_mjs__WEBPACK_IMPORTED_MODULE_4__.unsafeEvalSupported)())\n throw new Error(\"Current environment does not allow unsafe-eval, please use @pixi/unsafe-eval module to enable support.\");\n }\n contextChange(gl) {\n this.gl = gl, this.reset();\n }\n /**\n * Changes the current shader to the one given in parameter.\n * @param shader - the new shader\n * @param dontSync - false if the shader should automatically sync its uniforms.\n * @returns the glProgram that belongs to the shader.\n */\n bind(shader, dontSync) {\n shader.disposeRunner.add(this), shader.uniforms.globals = this.renderer.globalUniforms;\n const program = shader.program, glProgram = program.glPrograms[this.renderer.CONTEXT_UID] || this.generateProgram(shader);\n return this.shader = shader, this.program !== program && (this.program = program, this.gl.useProgram(glProgram.program)), dontSync || (defaultSyncData.textureCount = 0, defaultSyncData.uboCount = 0, this.syncUniformGroup(shader.uniformGroup, defaultSyncData)), glProgram;\n }\n /**\n * Uploads the uniforms values to the currently bound shader.\n * @param uniforms - the uniforms values that be applied to the current shader\n */\n setUniforms(uniforms) {\n const shader = this.shader.program, glProgram = shader.glPrograms[this.renderer.CONTEXT_UID];\n shader.syncUniforms(glProgram.uniformData, uniforms, this.renderer);\n }\n /* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n /**\n * Syncs uniforms on the group\n * @param group - the uniform group to sync\n * @param syncData - this is data that is passed to the sync function and any nested sync functions\n */\n syncUniformGroup(group, syncData) {\n const glProgram = this.getGlProgram();\n (!group.static || group.dirtyId !== glProgram.uniformDirtyGroups[group.id]) && (glProgram.uniformDirtyGroups[group.id] = group.dirtyId, this.syncUniforms(group, glProgram, syncData));\n }\n /**\n * Overrideable by the @pixi/unsafe-eval package to use static syncUniforms instead.\n * @param group\n * @param glProgram\n * @param syncData\n */\n syncUniforms(group, glProgram, syncData) {\n (group.syncUniforms[this.shader.program.id] || this.createSyncGroups(group))(glProgram.uniformData, group.uniforms, this.renderer, syncData);\n }\n createSyncGroups(group) {\n const id = this.getSignature(group, this.shader.program.uniformData, \"u\");\n return this.cache[id] || (this.cache[id] = (0,_utils_generateUniformsSync_mjs__WEBPACK_IMPORTED_MODULE_5__.generateUniformsSync)(group, this.shader.program.uniformData)), group.syncUniforms[this.shader.program.id] = this.cache[id], group.syncUniforms[this.shader.program.id];\n }\n /**\n * Syncs uniform buffers\n * @param group - the uniform buffer group to sync\n * @param name - the name of the uniform buffer\n */\n syncUniformBufferGroup(group, name) {\n const glProgram = this.getGlProgram();\n if (!group.static || group.dirtyId !== 0 || !glProgram.uniformGroups[group.id]) {\n group.dirtyId = 0;\n const syncFunc = glProgram.uniformGroups[group.id] || this.createSyncBufferGroup(group, glProgram, name);\n group.buffer.update(), syncFunc(\n glProgram.uniformData,\n group.uniforms,\n this.renderer,\n defaultSyncData,\n group.buffer\n );\n }\n this.renderer.buffer.bindBufferBase(group.buffer, glProgram.uniformBufferBindings[name]);\n }\n /**\n * Will create a function that uploads a uniform buffer using the STD140 standard.\n * The upload function will then be cached for future calls\n * If a group is manually managed, then a simple upload function is generated\n * @param group - the uniform buffer group to sync\n * @param glProgram - the gl program to attach the uniform bindings to\n * @param name - the name of the uniform buffer (must exist on the shader)\n */\n createSyncBufferGroup(group, glProgram, name) {\n const { gl } = this.renderer;\n this.renderer.buffer.bind(group.buffer);\n const uniformBlockIndex = this.gl.getUniformBlockIndex(glProgram.program, name);\n glProgram.uniformBufferBindings[name] = this.shader.uniformBindCount, gl.uniformBlockBinding(glProgram.program, uniformBlockIndex, this.shader.uniformBindCount), this.shader.uniformBindCount++;\n const id = this.getSignature(group, this.shader.program.uniformData, \"ubo\");\n let uboData = this._uboCache[id];\n if (uboData || (uboData = this._uboCache[id] = (0,_utils_generateUniformBufferSync_mjs__WEBPACK_IMPORTED_MODULE_3__.generateUniformBufferSync)(group, this.shader.program.uniformData)), group.autoManage) {\n const data = new Float32Array(uboData.size / 4);\n group.buffer.update(data);\n }\n return glProgram.uniformGroups[group.id] = uboData.syncFunc, glProgram.uniformGroups[group.id];\n }\n /**\n * Takes a uniform group and data and generates a unique signature for them.\n * @param group - The uniform group to get signature of\n * @param group.uniforms\n * @param uniformData - Uniform information generated by the shader\n * @param preFix\n * @returns Unique signature of the uniform group\n */\n getSignature(group, uniformData, preFix) {\n const uniforms = group.uniforms, strings = [`${preFix}-`];\n for (const i in uniforms)\n strings.push(i), uniformData[i] && strings.push(uniformData[i].type);\n return strings.join(\"-\");\n }\n /**\n * Returns the underlying GLShade rof the currently bound shader.\n *\n * This can be handy for when you to have a little more control over the setting of your uniforms.\n * @returns The glProgram for the currently bound Shader for this context\n */\n getGlProgram() {\n return this.shader ? this.shader.program.glPrograms[this.renderer.CONTEXT_UID] : null;\n }\n /**\n * Generates a glProgram version of the Shader provided.\n * @param shader - The shader that the glProgram will be based on.\n * @returns A shiny new glProgram!\n */\n generateProgram(shader) {\n const gl = this.gl, program = shader.program, glProgram = (0,_utils_generateProgram_mjs__WEBPACK_IMPORTED_MODULE_2__.generateProgram)(gl, program);\n return program.glPrograms[this.renderer.CONTEXT_UID] = glProgram, glProgram;\n }\n /** Resets ShaderSystem state, does not affect WebGL state. */\n reset() {\n this.program = null, this.shader = null;\n }\n /**\n * Disposes shader.\n * If disposing one equals with current shader, set current as null.\n * @param shader - Shader object\n */\n disposeShader(shader) {\n this.shader === shader && (this.shader = null);\n }\n /** Destroys this System and removes all its textures. */\n destroy() {\n this.renderer = null, this.destroyed = !0;\n }\n}\nShaderSystem.extension = {\n type: _pixi_extensions__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.RendererSystem,\n name: \"shader\"\n};\n_pixi_extensions__WEBPACK_IMPORTED_MODULE_0__.extensions.add(ShaderSystem);\n\n//# sourceMappingURL=ShaderSystem.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/shader/ShaderSystem.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/shader/UniformGroup.mjs":
-/*!*************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/shader/UniformGroup.mjs ***!
- \*************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ UniformGroup: () => (/* binding */ UniformGroup)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _geometry_Buffer_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry/Buffer.mjs */ \"./node_modules/@pixi/core/lib/geometry/Buffer.mjs\");\n\n\nlet UID = 0;\nclass UniformGroup {\n /**\n * @param {object | Buffer} [uniforms] - Custom uniforms to use to augment the built-in ones. Or a pixi buffer.\n * @param isStatic - Uniforms wont be changed after creation.\n * @param isUbo - If true, will treat this uniform group as a uniform buffer object.\n */\n constructor(uniforms, isStatic, isUbo) {\n this.group = !0, this.syncUniforms = {}, this.dirtyId = 0, this.id = UID++, this.static = !!isStatic, this.ubo = !!isUbo, uniforms instanceof _geometry_Buffer_mjs__WEBPACK_IMPORTED_MODULE_1__.Buffer ? (this.buffer = uniforms, this.buffer.type = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BUFFER_TYPE.UNIFORM_BUFFER, this.autoManage = !1, this.ubo = !0) : (this.uniforms = uniforms, this.ubo && (this.buffer = new _geometry_Buffer_mjs__WEBPACK_IMPORTED_MODULE_1__.Buffer(new Float32Array(1)), this.buffer.type = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BUFFER_TYPE.UNIFORM_BUFFER, this.autoManage = !0));\n }\n update() {\n this.dirtyId++, !this.autoManage && this.buffer && this.buffer.update();\n }\n add(name, uniforms, _static) {\n if (!this.ubo)\n this.uniforms[name] = new UniformGroup(uniforms, _static);\n else\n throw new Error(\"[UniformGroup] uniform groups in ubo mode cannot be modified, or have uniform groups nested in them\");\n }\n static from(uniforms, _static, _ubo) {\n return new UniformGroup(uniforms, _static, _ubo);\n }\n /**\n * A short hand function for creating a static UBO UniformGroup.\n * @param uniforms - the ubo item\n * @param _static - should this be updated each time it is used? defaults to true here!\n */\n static uboFrom(uniforms, _static) {\n return new UniformGroup(uniforms, _static ?? !0, !0);\n }\n}\n\n//# sourceMappingURL=UniformGroup.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/shader/UniformGroup.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/shader/defaultProgram.frag.mjs":
-/*!********************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/shader/defaultProgram.frag.mjs ***!
- \********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ defaultFragment)\n/* harmony export */ });\nvar defaultFragment = `varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\n\nvoid main(void){\n gl_FragColor *= texture2D(uSampler, vTextureCoord);\n}`;\n\n//# sourceMappingURL=defaultProgram.frag.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/shader/defaultProgram.frag.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/shader/defaultProgram.vert.mjs":
-/*!********************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/shader/defaultProgram.vert.mjs ***!
- \********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ defaultVertex)\n/* harmony export */ });\nvar defaultVertex = `attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void){\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}\n`;\n\n//# sourceMappingURL=defaultProgram.vert.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/shader/defaultProgram.vert.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/shader/utils/checkMaxIfStatementsInShader.mjs":
-/*!***********************************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/shader/utils/checkMaxIfStatementsInShader.mjs ***!
- \***********************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ checkMaxIfStatementsInShader: () => (/* binding */ checkMaxIfStatementsInShader)\n/* harmony export */ });\nconst fragTemplate = [\n \"precision mediump float;\",\n \"void main(void){\",\n \"float test = 0.1;\",\n \"%forloop%\",\n \"gl_FragColor = vec4(0.0);\",\n \"}\"\n].join(`\n`);\nfunction generateIfTestSrc(maxIfs) {\n let src = \"\";\n for (let i = 0; i < maxIfs; ++i)\n i > 0 && (src += `\nelse `), i < maxIfs - 1 && (src += `if(test == ${i}.0){}`);\n return src;\n}\nfunction checkMaxIfStatementsInShader(maxIfs, gl) {\n if (maxIfs === 0)\n throw new Error(\"Invalid value of `0` passed to `checkMaxIfStatementsInShader`\");\n const shader = gl.createShader(gl.FRAGMENT_SHADER);\n for (; ; ) {\n const fragmentSrc = fragTemplate.replace(/%forloop%/gi, generateIfTestSrc(maxIfs));\n if (gl.shaderSource(shader, fragmentSrc), gl.compileShader(shader), !gl.getShaderParameter(shader, gl.COMPILE_STATUS))\n maxIfs = maxIfs / 2 | 0;\n else\n break;\n }\n return maxIfs;\n}\n\n//# sourceMappingURL=checkMaxIfStatementsInShader.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/shader/utils/checkMaxIfStatementsInShader.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/shader/utils/compileShader.mjs":
-/*!********************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/shader/utils/compileShader.mjs ***!
- \********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ compileShader: () => (/* binding */ compileShader)\n/* harmony export */ });\nfunction compileShader(gl, type, src) {\n const shader = gl.createShader(type);\n return gl.shaderSource(shader, src), gl.compileShader(shader), shader;\n}\n\n//# sourceMappingURL=compileShader.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/shader/utils/compileShader.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/shader/utils/defaultValue.mjs":
-/*!*******************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/shader/utils/defaultValue.mjs ***!
- \*******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ defaultValue: () => (/* binding */ defaultValue)\n/* harmony export */ });\nfunction booleanArray(size) {\n const array = new Array(size);\n for (let i = 0; i < array.length; i++)\n array[i] = !1;\n return array;\n}\nfunction defaultValue(type, size) {\n switch (type) {\n case \"float\":\n return 0;\n case \"vec2\":\n return new Float32Array(2 * size);\n case \"vec3\":\n return new Float32Array(3 * size);\n case \"vec4\":\n return new Float32Array(4 * size);\n case \"int\":\n case \"uint\":\n case \"sampler2D\":\n case \"sampler2DArray\":\n return 0;\n case \"ivec2\":\n return new Int32Array(2 * size);\n case \"ivec3\":\n return new Int32Array(3 * size);\n case \"ivec4\":\n return new Int32Array(4 * size);\n case \"uvec2\":\n return new Uint32Array(2 * size);\n case \"uvec3\":\n return new Uint32Array(3 * size);\n case \"uvec4\":\n return new Uint32Array(4 * size);\n case \"bool\":\n return !1;\n case \"bvec2\":\n return booleanArray(2 * size);\n case \"bvec3\":\n return booleanArray(3 * size);\n case \"bvec4\":\n return booleanArray(4 * size);\n case \"mat2\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 1\n ]);\n case \"mat3\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1\n ]);\n case \"mat4\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1\n ]);\n }\n return null;\n}\n\n//# sourceMappingURL=defaultValue.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/shader/utils/defaultValue.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/shader/utils/generateProgram.mjs":
-/*!**********************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/shader/utils/generateProgram.mjs ***!
- \**********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ generateProgram: () => (/* binding */ generateProgram)\n/* harmony export */ });\n/* harmony import */ var _GLProgram_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../GLProgram.mjs */ \"./node_modules/@pixi/core/lib/shader/GLProgram.mjs\");\n/* harmony import */ var _compileShader_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./compileShader.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/compileShader.mjs\");\n/* harmony import */ var _defaultValue_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./defaultValue.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/defaultValue.mjs\");\n/* harmony import */ var _getAttributeData_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getAttributeData.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/getAttributeData.mjs\");\n/* harmony import */ var _getUniformData_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getUniformData.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/getUniformData.mjs\");\n/* harmony import */ var _logProgramError_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./logProgramError.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/logProgramError.mjs\");\n\n\n\n\n\n\nfunction generateProgram(gl, program) {\n const glVertShader = (0,_compileShader_mjs__WEBPACK_IMPORTED_MODULE_1__.compileShader)(gl, gl.VERTEX_SHADER, program.vertexSrc), glFragShader = (0,_compileShader_mjs__WEBPACK_IMPORTED_MODULE_1__.compileShader)(gl, gl.FRAGMENT_SHADER, program.fragmentSrc), webGLProgram = gl.createProgram();\n gl.attachShader(webGLProgram, glVertShader), gl.attachShader(webGLProgram, glFragShader);\n const transformFeedbackVaryings = program.extra?.transformFeedbackVaryings;\n if (transformFeedbackVaryings && (typeof gl.transformFeedbackVaryings != \"function\" ? console.warn(\"TransformFeedback is not supported but TransformFeedbackVaryings are given.\") : gl.transformFeedbackVaryings(\n webGLProgram,\n transformFeedbackVaryings.names,\n transformFeedbackVaryings.bufferMode === \"separate\" ? gl.SEPARATE_ATTRIBS : gl.INTERLEAVED_ATTRIBS\n )), gl.linkProgram(webGLProgram), gl.getProgramParameter(webGLProgram, gl.LINK_STATUS) || (0,_logProgramError_mjs__WEBPACK_IMPORTED_MODULE_5__.logProgramError)(gl, webGLProgram, glVertShader, glFragShader), program.attributeData = (0,_getAttributeData_mjs__WEBPACK_IMPORTED_MODULE_3__.getAttributeData)(webGLProgram, gl), program.uniformData = (0,_getUniformData_mjs__WEBPACK_IMPORTED_MODULE_4__.getUniformData)(webGLProgram, gl), !/^[ \\t]*#[ \\t]*version[ \\t]+300[ \\t]+es[ \\t]*$/m.test(program.vertexSrc)) {\n const keys = Object.keys(program.attributeData);\n keys.sort((a, b) => a > b ? 1 : -1);\n for (let i = 0; i < keys.length; i++)\n program.attributeData[keys[i]].location = i, gl.bindAttribLocation(webGLProgram, i, keys[i]);\n gl.linkProgram(webGLProgram);\n }\n gl.deleteShader(glVertShader), gl.deleteShader(glFragShader);\n const uniformData = {};\n for (const i in program.uniformData) {\n const data = program.uniformData[i];\n uniformData[i] = {\n location: gl.getUniformLocation(webGLProgram, i),\n value: (0,_defaultValue_mjs__WEBPACK_IMPORTED_MODULE_2__.defaultValue)(data.type, data.size)\n };\n }\n return new _GLProgram_mjs__WEBPACK_IMPORTED_MODULE_0__.GLProgram(webGLProgram, uniformData);\n}\n\n//# sourceMappingURL=generateProgram.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/shader/utils/generateProgram.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/shader/utils/generateUniformBufferSync.mjs":
-/*!********************************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/shader/utils/generateUniformBufferSync.mjs ***!
- \********************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createUBOElements: () => (/* binding */ createUBOElements),\n/* harmony export */ generateUniformBufferSync: () => (/* binding */ generateUniformBufferSync),\n/* harmony export */ getUBOData: () => (/* binding */ getUBOData)\n/* harmony export */ });\n/* harmony import */ var _index_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/index.mjs\");\n/* harmony import */ var _uniformParsers_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uniformParsers.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/uniformParsers.mjs\");\n/* harmony import */ var _mapSize_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mapSize.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/mapSize.mjs\");\n\n\n\nfunction uboUpdate(_ud, _uv, _renderer, _syncData, buffer) {\n _renderer.buffer.update(buffer);\n}\nconst UBO_TO_SINGLE_SETTERS = {\n float: `\n data[offset] = v;\n `,\n vec2: `\n data[offset] = v[0];\n data[offset+1] = v[1];\n `,\n vec3: `\n data[offset] = v[0];\n data[offset+1] = v[1];\n data[offset+2] = v[2];\n\n `,\n vec4: `\n data[offset] = v[0];\n data[offset+1] = v[1];\n data[offset+2] = v[2];\n data[offset+3] = v[3];\n `,\n mat2: `\n data[offset] = v[0];\n data[offset+1] = v[1];\n\n data[offset+4] = v[2];\n data[offset+5] = v[3];\n `,\n mat3: `\n data[offset] = v[0];\n data[offset+1] = v[1];\n data[offset+2] = v[2];\n\n data[offset + 4] = v[3];\n data[offset + 5] = v[4];\n data[offset + 6] = v[5];\n\n data[offset + 8] = v[6];\n data[offset + 9] = v[7];\n data[offset + 10] = v[8];\n `,\n mat4: `\n for(var i = 0; i < 16; i++)\n {\n data[offset + i] = v[i];\n }\n `\n}, GLSL_TO_STD40_SIZE = {\n float: 4,\n vec2: 8,\n vec3: 12,\n vec4: 16,\n int: 4,\n ivec2: 8,\n ivec3: 12,\n ivec4: 16,\n uint: 4,\n uvec2: 8,\n uvec3: 12,\n uvec4: 16,\n bool: 4,\n bvec2: 8,\n bvec3: 12,\n bvec4: 16,\n mat2: 16 * 2,\n mat3: 16 * 3,\n mat4: 16 * 4\n};\nfunction createUBOElements(uniformData) {\n const uboElements = uniformData.map((data) => ({\n data,\n offset: 0,\n dataLen: 0,\n dirty: 0\n }));\n let size = 0, chunkSize = 0, offset = 0;\n for (let i = 0; i < uboElements.length; i++) {\n const uboElement = uboElements[i];\n if (size = GLSL_TO_STD40_SIZE[uboElement.data.type], uboElement.data.size > 1 && (size = Math.max(size, 16) * uboElement.data.size), uboElement.dataLen = size, chunkSize % size !== 0 && chunkSize < 16) {\n const lineUpValue = chunkSize % size % 16;\n chunkSize += lineUpValue, offset += lineUpValue;\n }\n chunkSize + size > 16 ? (offset = Math.ceil(offset / 16) * 16, uboElement.offset = offset, offset += size, chunkSize = size) : (uboElement.offset = offset, chunkSize += size, offset += size);\n }\n return offset = Math.ceil(offset / 16) * 16, { uboElements, size: offset };\n}\nfunction getUBOData(uniforms, uniformData) {\n const usedUniformDatas = [];\n for (const i in uniforms)\n uniformData[i] && usedUniformDatas.push(uniformData[i]);\n return usedUniformDatas.sort((a, b) => a.index - b.index), usedUniformDatas;\n}\nfunction generateUniformBufferSync(group, uniformData) {\n if (!group.autoManage)\n return { size: 0, syncFunc: uboUpdate };\n const usedUniformDatas = getUBOData(group.uniforms, uniformData), { uboElements, size } = createUBOElements(usedUniformDatas), funcFragments = [`\n var v = null;\n var v2 = null;\n var cv = null;\n var t = 0;\n var gl = renderer.gl\n var index = 0;\n var data = buffer.data;\n `];\n for (let i = 0; i < uboElements.length; i++) {\n const uboElement = uboElements[i], uniform = group.uniforms[uboElement.data.name], name = uboElement.data.name;\n let parsed = !1;\n for (let j = 0; j < _uniformParsers_mjs__WEBPACK_IMPORTED_MODULE_1__.uniformParsers.length; j++) {\n const uniformParser = _uniformParsers_mjs__WEBPACK_IMPORTED_MODULE_1__.uniformParsers[j];\n if (uniformParser.codeUbo && uniformParser.test(uboElement.data, uniform)) {\n funcFragments.push(\n `offset = ${uboElement.offset / 4};`,\n _uniformParsers_mjs__WEBPACK_IMPORTED_MODULE_1__.uniformParsers[j].codeUbo(uboElement.data.name, uniform)\n ), parsed = !0;\n break;\n }\n }\n if (!parsed)\n if (uboElement.data.size > 1) {\n const size2 = (0,_mapSize_mjs__WEBPACK_IMPORTED_MODULE_2__.mapSize)(uboElement.data.type), rowSize = Math.max(GLSL_TO_STD40_SIZE[uboElement.data.type] / 16, 1), elementSize = size2 / rowSize, remainder = (4 - elementSize % 4) % 4;\n funcFragments.push(`\n cv = ud.${name}.value;\n v = uv.${name};\n offset = ${uboElement.offset / 4};\n\n t = 0;\n\n for(var i=0; i < ${uboElement.data.size * rowSize}; i++)\n {\n for(var j = 0; j < ${elementSize}; j++)\n {\n data[offset++] = v[t++];\n }\n offset += ${remainder};\n }\n\n `);\n } else {\n const template = UBO_TO_SINGLE_SETTERS[uboElement.data.type];\n funcFragments.push(`\n cv = ud.${name}.value;\n v = uv.${name};\n offset = ${uboElement.offset / 4};\n ${template};\n `);\n }\n }\n return funcFragments.push(`\n renderer.buffer.update(buffer);\n `), {\n size,\n // eslint-disable-next-line no-new-func\n syncFunc: new Function(\n \"ud\",\n \"uv\",\n \"renderer\",\n \"syncData\",\n \"buffer\",\n funcFragments.join(`\n`)\n )\n };\n}\n\n//# sourceMappingURL=generateUniformBufferSync.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/shader/utils/generateUniformBufferSync.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/shader/utils/generateUniformsSync.mjs":
-/*!***************************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/shader/utils/generateUniformsSync.mjs ***!
- \***************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ generateUniformsSync: () => (/* binding */ generateUniformsSync)\n/* harmony export */ });\n/* harmony import */ var _uniformParsers_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uniformParsers.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/uniformParsers.mjs\");\n\nconst GLSL_TO_SINGLE_SETTERS_CACHED = {\n float: `\n if (cv !== v)\n {\n cu.value = v;\n gl.uniform1f(location, v);\n }`,\n vec2: `\n if (cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2f(location, v[0], v[1])\n }`,\n vec3: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3f(location, v[0], v[1], v[2])\n }`,\n vec4: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4f(location, v[0], v[1], v[2], v[3]);\n }`,\n int: `\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1i(location, v);\n }`,\n ivec2: `\n if (cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2i(location, v[0], v[1]);\n }`,\n ivec3: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3i(location, v[0], v[1], v[2]);\n }`,\n ivec4: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4i(location, v[0], v[1], v[2], v[3]);\n }`,\n uint: `\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1ui(location, v);\n }`,\n uvec2: `\n if (cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2ui(location, v[0], v[1]);\n }`,\n uvec3: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3ui(location, v[0], v[1], v[2]);\n }`,\n uvec4: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4ui(location, v[0], v[1], v[2], v[3]);\n }`,\n bool: `\n if (cv !== v)\n {\n cu.value = v;\n gl.uniform1i(location, v);\n }`,\n bvec2: `\n if (cv[0] != v[0] || cv[1] != v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2i(location, v[0], v[1]);\n }`,\n bvec3: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3i(location, v[0], v[1], v[2]);\n }`,\n bvec4: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4i(location, v[0], v[1], v[2], v[3]);\n }`,\n mat2: \"gl.uniformMatrix2fv(location, false, v)\",\n mat3: \"gl.uniformMatrix3fv(location, false, v)\",\n mat4: \"gl.uniformMatrix4fv(location, false, v)\",\n sampler2D: `\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1i(location, v);\n }`,\n samplerCube: `\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1i(location, v);\n }`,\n sampler2DArray: `\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1i(location, v);\n }`\n}, GLSL_TO_ARRAY_SETTERS = {\n float: \"gl.uniform1fv(location, v)\",\n vec2: \"gl.uniform2fv(location, v)\",\n vec3: \"gl.uniform3fv(location, v)\",\n vec4: \"gl.uniform4fv(location, v)\",\n mat4: \"gl.uniformMatrix4fv(location, false, v)\",\n mat3: \"gl.uniformMatrix3fv(location, false, v)\",\n mat2: \"gl.uniformMatrix2fv(location, false, v)\",\n int: \"gl.uniform1iv(location, v)\",\n ivec2: \"gl.uniform2iv(location, v)\",\n ivec3: \"gl.uniform3iv(location, v)\",\n ivec4: \"gl.uniform4iv(location, v)\",\n uint: \"gl.uniform1uiv(location, v)\",\n uvec2: \"gl.uniform2uiv(location, v)\",\n uvec3: \"gl.uniform3uiv(location, v)\",\n uvec4: \"gl.uniform4uiv(location, v)\",\n bool: \"gl.uniform1iv(location, v)\",\n bvec2: \"gl.uniform2iv(location, v)\",\n bvec3: \"gl.uniform3iv(location, v)\",\n bvec4: \"gl.uniform4iv(location, v)\",\n sampler2D: \"gl.uniform1iv(location, v)\",\n samplerCube: \"gl.uniform1iv(location, v)\",\n sampler2DArray: \"gl.uniform1iv(location, v)\"\n};\nfunction generateUniformsSync(group, uniformData) {\n const funcFragments = [`\n var v = null;\n var cv = null;\n var cu = null;\n var t = 0;\n var gl = renderer.gl;\n `];\n for (const i in group.uniforms) {\n const data = uniformData[i];\n if (!data) {\n group.uniforms[i]?.group === !0 && (group.uniforms[i].ubo ? funcFragments.push(`\n renderer.shader.syncUniformBufferGroup(uv.${i}, '${i}');\n `) : funcFragments.push(`\n renderer.shader.syncUniformGroup(uv.${i}, syncData);\n `));\n continue;\n }\n const uniform = group.uniforms[i];\n let parsed = !1;\n for (let j = 0; j < _uniformParsers_mjs__WEBPACK_IMPORTED_MODULE_0__.uniformParsers.length; j++)\n if (_uniformParsers_mjs__WEBPACK_IMPORTED_MODULE_0__.uniformParsers[j].test(data, uniform)) {\n funcFragments.push(_uniformParsers_mjs__WEBPACK_IMPORTED_MODULE_0__.uniformParsers[j].code(i, uniform)), parsed = !0;\n break;\n }\n if (!parsed) {\n const template = (data.size === 1 && !data.isArray ? GLSL_TO_SINGLE_SETTERS_CACHED : GLSL_TO_ARRAY_SETTERS)[data.type].replace(\"location\", `ud[\"${i}\"].location`);\n funcFragments.push(`\n cu = ud[\"${i}\"];\n cv = cu.value;\n v = uv[\"${i}\"];\n ${template};`);\n }\n }\n return new Function(\"ud\", \"uv\", \"renderer\", \"syncData\", funcFragments.join(`\n`));\n}\n\n//# sourceMappingURL=generateUniformsSync.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/shader/utils/generateUniformsSync.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/shader/utils/getAttributeData.mjs":
-/*!***********************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/shader/utils/getAttributeData.mjs ***!
- \***********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getAttributeData: () => (/* binding */ getAttributeData)\n/* harmony export */ });\n/* harmony import */ var _mapSize_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mapSize.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/mapSize.mjs\");\n/* harmony import */ var _mapType_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mapType.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/mapType.mjs\");\n\n\nfunction getAttributeData(program, gl) {\n const attributes = {}, totalAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);\n for (let i = 0; i < totalAttributes; i++) {\n const attribData = gl.getActiveAttrib(program, i);\n if (attribData.name.startsWith(\"gl_\"))\n continue;\n const type = (0,_mapType_mjs__WEBPACK_IMPORTED_MODULE_1__.mapType)(gl, attribData.type), data = {\n type,\n name: attribData.name,\n size: (0,_mapSize_mjs__WEBPACK_IMPORTED_MODULE_0__.mapSize)(type),\n location: gl.getAttribLocation(program, attribData.name)\n };\n attributes[attribData.name] = data;\n }\n return attributes;\n}\n\n//# sourceMappingURL=getAttributeData.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/shader/utils/getAttributeData.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/shader/utils/getMaxFragmentPrecision.mjs":
-/*!******************************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/shader/utils/getMaxFragmentPrecision.mjs ***!
- \******************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getMaxFragmentPrecision: () => (/* binding */ getMaxFragmentPrecision)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _getTestContext_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getTestContext.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/getTestContext.mjs\");\n\n\nlet maxFragmentPrecision;\nfunction getMaxFragmentPrecision() {\n if (!maxFragmentPrecision) {\n maxFragmentPrecision = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.PRECISION.MEDIUM;\n const gl = (0,_getTestContext_mjs__WEBPACK_IMPORTED_MODULE_1__.getTestContext)();\n if (gl && gl.getShaderPrecisionFormat) {\n const shaderFragment = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT);\n shaderFragment && (maxFragmentPrecision = shaderFragment.precision ? _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.PRECISION.HIGH : _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.PRECISION.MEDIUM);\n }\n }\n return maxFragmentPrecision;\n}\n\n//# sourceMappingURL=getMaxFragmentPrecision.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/shader/utils/getMaxFragmentPrecision.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/shader/utils/getTestContext.mjs":
-/*!*********************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/shader/utils/getTestContext.mjs ***!
- \*********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getTestContext: () => (/* binding */ getTestContext)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _pixi_settings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/settings */ \"./node_modules/@pixi/settings/lib/index.mjs\");\n\n\nconst unknownContext = {};\nlet context = unknownContext;\nfunction getTestContext() {\n if (context === unknownContext || context?.isContextLost()) {\n const canvas = _pixi_settings__WEBPACK_IMPORTED_MODULE_1__.settings.ADAPTER.createCanvas();\n let gl;\n _pixi_settings__WEBPACK_IMPORTED_MODULE_1__.settings.PREFER_ENV >= _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.ENV.WEBGL2 && (gl = canvas.getContext(\"webgl2\", {})), gl || (gl = canvas.getContext(\"webgl\", {}) || canvas.getContext(\"experimental-webgl\", {}), gl ? gl.getExtension(\"WEBGL_draw_buffers\") : gl = null), context = gl;\n }\n return context;\n}\n\n//# sourceMappingURL=getTestContext.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/shader/utils/getTestContext.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/shader/utils/getUniformData.mjs":
-/*!*********************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/shader/utils/getUniformData.mjs ***!
- \*********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getUniformData: () => (/* binding */ getUniformData)\n/* harmony export */ });\n/* harmony import */ var _defaultValue_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultValue.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/defaultValue.mjs\");\n/* harmony import */ var _mapType_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mapType.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/mapType.mjs\");\n\n\nfunction getUniformData(program, gl) {\n const uniforms = {}, totalUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);\n for (let i = 0; i < totalUniforms; i++) {\n const uniformData = gl.getActiveUniform(program, i), name = uniformData.name.replace(/\\[.*?\\]$/, \"\"), isArray = !!uniformData.name.match(/\\[.*?\\]$/), type = (0,_mapType_mjs__WEBPACK_IMPORTED_MODULE_1__.mapType)(gl, uniformData.type);\n uniforms[name] = {\n name,\n index: i,\n type,\n size: uniformData.size,\n isArray,\n value: (0,_defaultValue_mjs__WEBPACK_IMPORTED_MODULE_0__.defaultValue)(type, uniformData.size)\n };\n }\n return uniforms;\n}\n\n//# sourceMappingURL=getUniformData.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/shader/utils/getUniformData.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/shader/utils/index.mjs":
-/*!************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/shader/utils/index.mjs ***!
- \************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ checkMaxIfStatementsInShader: () => (/* reexport safe */ _checkMaxIfStatementsInShader_mjs__WEBPACK_IMPORTED_MODULE_0__.checkMaxIfStatementsInShader),\n/* harmony export */ compileShader: () => (/* reexport safe */ _compileShader_mjs__WEBPACK_IMPORTED_MODULE_1__.compileShader),\n/* harmony export */ defaultValue: () => (/* reexport safe */ _defaultValue_mjs__WEBPACK_IMPORTED_MODULE_2__.defaultValue),\n/* harmony export */ generateUniformsSync: () => (/* reexport safe */ _generateUniformsSync_mjs__WEBPACK_IMPORTED_MODULE_3__.generateUniformsSync),\n/* harmony export */ getMaxFragmentPrecision: () => (/* reexport safe */ _getMaxFragmentPrecision_mjs__WEBPACK_IMPORTED_MODULE_4__.getMaxFragmentPrecision),\n/* harmony export */ getTestContext: () => (/* reexport safe */ _getTestContext_mjs__WEBPACK_IMPORTED_MODULE_5__.getTestContext),\n/* harmony export */ logProgramError: () => (/* reexport safe */ _logProgramError_mjs__WEBPACK_IMPORTED_MODULE_6__.logProgramError),\n/* harmony export */ mapSize: () => (/* reexport safe */ _mapSize_mjs__WEBPACK_IMPORTED_MODULE_7__.mapSize),\n/* harmony export */ mapType: () => (/* reexport safe */ _mapType_mjs__WEBPACK_IMPORTED_MODULE_8__.mapType),\n/* harmony export */ setPrecision: () => (/* reexport safe */ _setPrecision_mjs__WEBPACK_IMPORTED_MODULE_9__.setPrecision),\n/* harmony export */ uniformParsers: () => (/* reexport safe */ _uniformParsers_mjs__WEBPACK_IMPORTED_MODULE_10__.uniformParsers),\n/* harmony export */ unsafeEvalSupported: () => (/* reexport safe */ _unsafeEvalSupported_mjs__WEBPACK_IMPORTED_MODULE_11__.unsafeEvalSupported)\n/* harmony export */ });\n/* harmony import */ var _checkMaxIfStatementsInShader_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./checkMaxIfStatementsInShader.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/checkMaxIfStatementsInShader.mjs\");\n/* harmony import */ var _compileShader_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./compileShader.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/compileShader.mjs\");\n/* harmony import */ var _defaultValue_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./defaultValue.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/defaultValue.mjs\");\n/* harmony import */ var _generateUniformsSync_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./generateUniformsSync.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/generateUniformsSync.mjs\");\n/* harmony import */ var _getMaxFragmentPrecision_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getMaxFragmentPrecision.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/getMaxFragmentPrecision.mjs\");\n/* harmony import */ var _getTestContext_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getTestContext.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/getTestContext.mjs\");\n/* harmony import */ var _logProgramError_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./logProgramError.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/logProgramError.mjs\");\n/* harmony import */ var _mapSize_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./mapSize.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/mapSize.mjs\");\n/* harmony import */ var _mapType_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./mapType.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/mapType.mjs\");\n/* harmony import */ var _setPrecision_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./setPrecision.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/setPrecision.mjs\");\n/* harmony import */ var _uniformParsers_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./uniformParsers.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/uniformParsers.mjs\");\n/* harmony import */ var _unsafeEvalSupported_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./unsafeEvalSupported.mjs */ \"./node_modules/@pixi/core/lib/shader/utils/unsafeEvalSupported.mjs\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/shader/utils/index.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/shader/utils/logProgramError.mjs":
-/*!**********************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/shader/utils/logProgramError.mjs ***!
- \**********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ logProgramError: () => (/* binding */ logProgramError)\n/* harmony export */ });\nfunction logPrettyShaderError(gl, shader) {\n const shaderSrc = gl.getShaderSource(shader).split(`\n`).map((line, index) => `${index}: ${line}`), shaderLog = gl.getShaderInfoLog(shader), splitShader = shaderLog.split(`\n`), dedupe = {}, lineNumbers = splitShader.map((line) => parseFloat(line.replace(/^ERROR\\: 0\\:([\\d]+)\\:.*$/, \"$1\"))).filter((n) => n && !dedupe[n] ? (dedupe[n] = !0, !0) : !1), logArgs = [\"\"];\n lineNumbers.forEach((number) => {\n shaderSrc[number - 1] = `%c${shaderSrc[number - 1]}%c`, logArgs.push(\"background: #FF0000; color:#FFFFFF; font-size: 10px\", \"font-size: 10px\");\n });\n const fragmentSourceToLog = shaderSrc.join(`\n`);\n logArgs[0] = fragmentSourceToLog, console.error(shaderLog), console.groupCollapsed(\"click to view full shader code\"), console.warn(...logArgs), console.groupEnd();\n}\nfunction logProgramError(gl, program, vertexShader, fragmentShader) {\n gl.getProgramParameter(program, gl.LINK_STATUS) || (gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS) || logPrettyShaderError(gl, vertexShader), gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS) || logPrettyShaderError(gl, fragmentShader), console.error(\"PixiJS Error: Could not initialize shader.\"), gl.getProgramInfoLog(program) !== \"\" && console.warn(\"PixiJS Warning: gl.getProgramInfoLog()\", gl.getProgramInfoLog(program)));\n}\n\n//# sourceMappingURL=logProgramError.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/shader/utils/logProgramError.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/shader/utils/mapSize.mjs":
-/*!**************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/shader/utils/mapSize.mjs ***!
- \**************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ mapSize: () => (/* binding */ mapSize)\n/* harmony export */ });\nconst GLSL_TO_SIZE = {\n float: 1,\n vec2: 2,\n vec3: 3,\n vec4: 4,\n int: 1,\n ivec2: 2,\n ivec3: 3,\n ivec4: 4,\n uint: 1,\n uvec2: 2,\n uvec3: 3,\n uvec4: 4,\n bool: 1,\n bvec2: 2,\n bvec3: 3,\n bvec4: 4,\n mat2: 4,\n mat3: 9,\n mat4: 16,\n sampler2D: 1\n};\nfunction mapSize(type) {\n return GLSL_TO_SIZE[type];\n}\n\n//# sourceMappingURL=mapSize.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/shader/utils/mapSize.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/shader/utils/mapType.mjs":
-/*!**************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/shader/utils/mapType.mjs ***!
- \**************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ mapType: () => (/* binding */ mapType)\n/* harmony export */ });\nlet GL_TABLE = null;\nconst GL_TO_GLSL_TYPES = {\n FLOAT: \"float\",\n FLOAT_VEC2: \"vec2\",\n FLOAT_VEC3: \"vec3\",\n FLOAT_VEC4: \"vec4\",\n INT: \"int\",\n INT_VEC2: \"ivec2\",\n INT_VEC3: \"ivec3\",\n INT_VEC4: \"ivec4\",\n UNSIGNED_INT: \"uint\",\n UNSIGNED_INT_VEC2: \"uvec2\",\n UNSIGNED_INT_VEC3: \"uvec3\",\n UNSIGNED_INT_VEC4: \"uvec4\",\n BOOL: \"bool\",\n BOOL_VEC2: \"bvec2\",\n BOOL_VEC3: \"bvec3\",\n BOOL_VEC4: \"bvec4\",\n FLOAT_MAT2: \"mat2\",\n FLOAT_MAT3: \"mat3\",\n FLOAT_MAT4: \"mat4\",\n SAMPLER_2D: \"sampler2D\",\n INT_SAMPLER_2D: \"sampler2D\",\n UNSIGNED_INT_SAMPLER_2D: \"sampler2D\",\n SAMPLER_CUBE: \"samplerCube\",\n INT_SAMPLER_CUBE: \"samplerCube\",\n UNSIGNED_INT_SAMPLER_CUBE: \"samplerCube\",\n SAMPLER_2D_ARRAY: \"sampler2DArray\",\n INT_SAMPLER_2D_ARRAY: \"sampler2DArray\",\n UNSIGNED_INT_SAMPLER_2D_ARRAY: \"sampler2DArray\"\n};\nfunction mapType(gl, type) {\n if (!GL_TABLE) {\n const typeNames = Object.keys(GL_TO_GLSL_TYPES);\n GL_TABLE = {};\n for (let i = 0; i < typeNames.length; ++i) {\n const tn = typeNames[i];\n GL_TABLE[gl[tn]] = GL_TO_GLSL_TYPES[tn];\n }\n }\n return GL_TABLE[type];\n}\n\n//# sourceMappingURL=mapType.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/shader/utils/mapType.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/shader/utils/setPrecision.mjs":
-/*!*******************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/shader/utils/setPrecision.mjs ***!
- \*******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ setPrecision: () => (/* binding */ setPrecision)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n\nfunction setPrecision(src, requestedPrecision, maxSupportedPrecision) {\n if (src.substring(0, 9) !== \"precision\") {\n let precision = requestedPrecision;\n return requestedPrecision === _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.PRECISION.HIGH && maxSupportedPrecision !== _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.PRECISION.HIGH && (precision = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.PRECISION.MEDIUM), `precision ${precision} float;\n${src}`;\n } else if (maxSupportedPrecision !== _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.PRECISION.HIGH && src.substring(0, 15) === \"precision highp\")\n return src.replace(\"precision highp\", \"precision mediump\");\n return src;\n}\n\n//# sourceMappingURL=setPrecision.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/shader/utils/setPrecision.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/shader/utils/uniformParsers.mjs":
-/*!*********************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/shader/utils/uniformParsers.mjs ***!
- \*********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ uniformParsers: () => (/* binding */ uniformParsers)\n/* harmony export */ });\nconst uniformParsers = [\n // a float cache layer\n {\n test: (data) => data.type === \"float\" && data.size === 1 && !data.isArray,\n code: (name) => `\n if(uv[\"${name}\"] !== ud[\"${name}\"].value)\n {\n ud[\"${name}\"].value = uv[\"${name}\"]\n gl.uniform1f(ud[\"${name}\"].location, uv[\"${name}\"])\n }\n `\n },\n // handling samplers\n {\n test: (data, uniform) => (\n // eslint-disable-next-line max-len,no-eq-null,eqeqeq\n (data.type === \"sampler2D\" || data.type === \"samplerCube\" || data.type === \"sampler2DArray\") && data.size === 1 && !data.isArray && (uniform == null || uniform.castToBaseTexture !== void 0)\n ),\n code: (name) => `t = syncData.textureCount++;\n\n renderer.texture.bind(uv[\"${name}\"], t);\n\n if(ud[\"${name}\"].value !== t)\n {\n ud[\"${name}\"].value = t;\n gl.uniform1i(ud[\"${name}\"].location, t);\n; // eslint-disable-line max-len\n }`\n },\n // uploading pixi matrix object to mat3\n {\n test: (data, uniform) => data.type === \"mat3\" && data.size === 1 && !data.isArray && uniform.a !== void 0,\n code: (name) => (\n // TODO and some smart caching dirty ids here!\n `\n gl.uniformMatrix3fv(ud[\"${name}\"].location, false, uv[\"${name}\"].toArray(true));\n `\n ),\n codeUbo: (name) => `\n var ${name}_matrix = uv.${name}.toArray(true);\n\n data[offset] = ${name}_matrix[0];\n data[offset+1] = ${name}_matrix[1];\n data[offset+2] = ${name}_matrix[2];\n \n data[offset + 4] = ${name}_matrix[3];\n data[offset + 5] = ${name}_matrix[4];\n data[offset + 6] = ${name}_matrix[5];\n \n data[offset + 8] = ${name}_matrix[6];\n data[offset + 9] = ${name}_matrix[7];\n data[offset + 10] = ${name}_matrix[8];\n `\n },\n // uploading a pixi point as a vec2 with caching layer\n {\n test: (data, uniform) => data.type === \"vec2\" && data.size === 1 && !data.isArray && uniform.x !== void 0,\n code: (name) => `\n cv = ud[\"${name}\"].value;\n v = uv[\"${name}\"];\n\n if(cv[0] !== v.x || cv[1] !== v.y)\n {\n cv[0] = v.x;\n cv[1] = v.y;\n gl.uniform2f(ud[\"${name}\"].location, v.x, v.y);\n }`,\n codeUbo: (name) => `\n v = uv.${name};\n\n data[offset] = v.x;\n data[offset+1] = v.y;\n `\n },\n // caching layer for a vec2\n {\n test: (data) => data.type === \"vec2\" && data.size === 1 && !data.isArray,\n code: (name) => `\n cv = ud[\"${name}\"].value;\n v = uv[\"${name}\"];\n\n if(cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2f(ud[\"${name}\"].location, v[0], v[1]);\n }\n `\n },\n // upload a pixi rectangle as a vec4 with caching layer\n {\n test: (data, uniform) => data.type === \"vec4\" && data.size === 1 && !data.isArray && uniform.width !== void 0,\n code: (name) => `\n cv = ud[\"${name}\"].value;\n v = uv[\"${name}\"];\n\n if(cv[0] !== v.x || cv[1] !== v.y || cv[2] !== v.width || cv[3] !== v.height)\n {\n cv[0] = v.x;\n cv[1] = v.y;\n cv[2] = v.width;\n cv[3] = v.height;\n gl.uniform4f(ud[\"${name}\"].location, v.x, v.y, v.width, v.height)\n }`,\n codeUbo: (name) => `\n v = uv.${name};\n\n data[offset] = v.x;\n data[offset+1] = v.y;\n data[offset+2] = v.width;\n data[offset+3] = v.height;\n `\n },\n // upload a pixi color as vec4 with caching layer\n {\n test: (data, uniform) => data.type === \"vec4\" && data.size === 1 && !data.isArray && uniform.red !== void 0,\n code: (name) => `\n cv = ud[\"${name}\"].value;\n v = uv[\"${name}\"];\n\n if(cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue || cv[3] !== v.alpha)\n {\n cv[0] = v.red;\n cv[1] = v.green;\n cv[2] = v.blue;\n cv[3] = v.alpha;\n gl.uniform4f(ud[\"${name}\"].location, v.red, v.green, v.blue, v.alpha)\n }`,\n codeUbo: (name) => `\n v = uv.${name};\n\n data[offset] = v.red;\n data[offset+1] = v.green;\n data[offset+2] = v.blue;\n data[offset+3] = v.alpha;\n `\n },\n // upload a pixi color as a vec3 with caching layer\n {\n test: (data, uniform) => data.type === \"vec3\" && data.size === 1 && !data.isArray && uniform.red !== void 0,\n code: (name) => `\n cv = ud[\"${name}\"].value;\n v = uv[\"${name}\"];\n\n if(cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue || cv[3] !== v.a)\n {\n cv[0] = v.red;\n cv[1] = v.green;\n cv[2] = v.blue;\n \n gl.uniform3f(ud[\"${name}\"].location, v.red, v.green, v.blue)\n }`,\n codeUbo: (name) => `\n v = uv.${name};\n\n data[offset] = v.red;\n data[offset+1] = v.green;\n data[offset+2] = v.blue;\n `\n },\n // a caching layer for vec4 uploading\n {\n test: (data) => data.type === \"vec4\" && data.size === 1 && !data.isArray,\n code: (name) => `\n cv = ud[\"${name}\"].value;\n v = uv[\"${name}\"];\n\n if(cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4f(ud[\"${name}\"].location, v[0], v[1], v[2], v[3])\n }`\n }\n];\n\n//# sourceMappingURL=uniformParsers.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/shader/utils/uniformParsers.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/shader/utils/unsafeEvalSupported.mjs":
-/*!**************************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/shader/utils/unsafeEvalSupported.mjs ***!
- \**************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ unsafeEvalSupported: () => (/* binding */ unsafeEvalSupported)\n/* harmony export */ });\nlet unsafeEval;\nfunction unsafeEvalSupported() {\n if (typeof unsafeEval == \"boolean\")\n return unsafeEval;\n try {\n unsafeEval = new Function(\"param1\", \"param2\", \"param3\", \"return param1[param2] === param3;\")({ a: \"b\" }, \"a\", \"b\") === !0;\n } catch {\n unsafeEval = !1;\n }\n return unsafeEval;\n}\n\n//# sourceMappingURL=unsafeEvalSupported.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/shader/utils/unsafeEvalSupported.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/startup/StartupSystem.mjs":
-/*!***************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/startup/StartupSystem.mjs ***!
- \***************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ StartupSystem: () => (/* binding */ StartupSystem)\n/* harmony export */ });\n/* harmony import */ var _pixi_extensions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/extensions */ \"./node_modules/@pixi/extensions/lib/index.mjs\");\n\nclass StartupSystem {\n constructor(renderer) {\n this.renderer = renderer;\n }\n /**\n * It all starts here! This initiates every system, passing in the options for any system by name.\n * @param options - the config for the renderer and all its systems\n */\n run(options) {\n const { renderer } = this;\n renderer.runners.init.emit(renderer.options), options.hello && console.log(`PixiJS 7.3.2 - ${renderer.rendererLogId} - https://pixijs.com`), renderer.resize(renderer.screen.width, renderer.screen.height);\n }\n destroy() {\n }\n}\nStartupSystem.defaultOptions = {\n /**\n * {@link PIXI.IRendererOptions.hello}\n * @default false\n * @memberof PIXI.settings.RENDER_OPTIONS\n */\n hello: !1\n}, /** @ignore */\nStartupSystem.extension = {\n type: [\n _pixi_extensions__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.RendererSystem,\n _pixi_extensions__WEBPACK_IMPORTED_MODULE_0__.ExtensionType.CanvasRendererSystem\n ],\n name: \"startup\"\n};\n_pixi_extensions__WEBPACK_IMPORTED_MODULE_0__.extensions.add(StartupSystem);\n\n//# sourceMappingURL=StartupSystem.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/startup/StartupSystem.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/state/State.mjs":
-/*!*****************************************************!*\
- !*** ./node_modules/@pixi/core/lib/state/State.mjs ***!
- \*****************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ State: () => (/* binding */ State)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n\nconst BLEND = 0, OFFSET = 1, CULLING = 2, DEPTH_TEST = 3, WINDING = 4, DEPTH_MASK = 5;\nclass State {\n constructor() {\n this.data = 0, this.blendMode = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.NORMAL, this.polygonOffset = 0, this.blend = !0, this.depthMask = !0;\n }\n /**\n * Activates blending of the computed fragment color values.\n * @default true\n */\n get blend() {\n return !!(this.data & 1 << BLEND);\n }\n set blend(value) {\n !!(this.data & 1 << BLEND) !== value && (this.data ^= 1 << BLEND);\n }\n /**\n * Activates adding an offset to depth values of polygon's fragments\n * @default false\n */\n get offsets() {\n return !!(this.data & 1 << OFFSET);\n }\n set offsets(value) {\n !!(this.data & 1 << OFFSET) !== value && (this.data ^= 1 << OFFSET);\n }\n /**\n * Activates culling of polygons.\n * @default false\n */\n get culling() {\n return !!(this.data & 1 << CULLING);\n }\n set culling(value) {\n !!(this.data & 1 << CULLING) !== value && (this.data ^= 1 << CULLING);\n }\n /**\n * Activates depth comparisons and updates to the depth buffer.\n * @default false\n */\n get depthTest() {\n return !!(this.data & 1 << DEPTH_TEST);\n }\n set depthTest(value) {\n !!(this.data & 1 << DEPTH_TEST) !== value && (this.data ^= 1 << DEPTH_TEST);\n }\n /**\n * Enables or disables writing to the depth buffer.\n * @default true\n */\n get depthMask() {\n return !!(this.data & 1 << DEPTH_MASK);\n }\n set depthMask(value) {\n !!(this.data & 1 << DEPTH_MASK) !== value && (this.data ^= 1 << DEPTH_MASK);\n }\n /**\n * Specifies whether or not front or back-facing polygons can be culled.\n * @default false\n */\n get clockwiseFrontFace() {\n return !!(this.data & 1 << WINDING);\n }\n set clockwiseFrontFace(value) {\n !!(this.data & 1 << WINDING) !== value && (this.data ^= 1 << WINDING);\n }\n /**\n * The blend mode to be applied when this state is set. Apply a value of `PIXI.BLEND_MODES.NORMAL` to reset the blend mode.\n * Setting this mode to anything other than NO_BLEND will automatically switch blending on.\n * @default PIXI.BLEND_MODES.NORMAL\n */\n get blendMode() {\n return this._blendMode;\n }\n set blendMode(value) {\n this.blend = value !== _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.NONE, this._blendMode = value;\n }\n /**\n * The polygon offset. Setting this property to anything other than 0 will automatically enable polygon offset fill.\n * @default 0\n */\n get polygonOffset() {\n return this._polygonOffset;\n }\n set polygonOffset(value) {\n this.offsets = !!value, this._polygonOffset = value;\n }\n static for2d() {\n const state = new State();\n return state.depthTest = !1, state.blend = !0, state;\n }\n}\nState.prototype.toString = function() {\n return `[@pixi/core:State blendMode=${this.blendMode} clockwiseFrontFace=${this.clockwiseFrontFace} culling=${this.culling} depthMask=${this.depthMask} polygonOffset=${this.polygonOffset}]`;\n};\n\n//# sourceMappingURL=State.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/state/State.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/state/StateSystem.mjs":
-/*!***********************************************************!*\
- !*** ./node_modules/@pixi/core/lib/state/StateSystem.mjs ***!
- \***********************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ StateSystem: () => (/* binding */ StateSystem)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _pixi_extensions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/extensions */ \"./node_modules/@pixi/extensions/lib/index.mjs\");\n/* harmony import */ var _State_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./State.mjs */ \"./node_modules/@pixi/core/lib/state/State.mjs\");\n/* harmony import */ var _utils_mapWebGLBlendModesToPixi_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/mapWebGLBlendModesToPixi.mjs */ \"./node_modules/@pixi/core/lib/state/utils/mapWebGLBlendModesToPixi.mjs\");\n\n\n\n\nconst BLEND = 0, OFFSET = 1, CULLING = 2, DEPTH_TEST = 3, WINDING = 4, DEPTH_MASK = 5, _StateSystem = class _StateSystem2 {\n constructor() {\n this.gl = null, this.stateId = 0, this.polygonOffset = 0, this.blendMode = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.NONE, this._blendEq = !1, this.map = [], this.map[BLEND] = this.setBlend, this.map[OFFSET] = this.setOffset, this.map[CULLING] = this.setCullFace, this.map[DEPTH_TEST] = this.setDepthTest, this.map[WINDING] = this.setFrontFace, this.map[DEPTH_MASK] = this.setDepthMask, this.checks = [], this.defaultState = new _State_mjs__WEBPACK_IMPORTED_MODULE_2__.State(), this.defaultState.blend = !0;\n }\n contextChange(gl) {\n this.gl = gl, this.blendModes = (0,_utils_mapWebGLBlendModesToPixi_mjs__WEBPACK_IMPORTED_MODULE_3__.mapWebGLBlendModesToPixi)(gl), this.set(this.defaultState), this.reset();\n }\n /**\n * Sets the current state\n * @param {*} state - The state to set.\n */\n set(state) {\n if (state = state || this.defaultState, this.stateId !== state.data) {\n let diff = this.stateId ^ state.data, i = 0;\n for (; diff; )\n diff & 1 && this.map[i].call(this, !!(state.data & 1 << i)), diff = diff >> 1, i++;\n this.stateId = state.data;\n }\n for (let i = 0; i < this.checks.length; i++)\n this.checks[i](this, state);\n }\n /**\n * Sets the state, when previous state is unknown.\n * @param {*} state - The state to set\n */\n forceState(state) {\n state = state || this.defaultState;\n for (let i = 0; i < this.map.length; i++)\n this.map[i].call(this, !!(state.data & 1 << i));\n for (let i = 0; i < this.checks.length; i++)\n this.checks[i](this, state);\n this.stateId = state.data;\n }\n /**\n * Sets whether to enable or disable blending.\n * @param value - Turn on or off WebGl blending.\n */\n setBlend(value) {\n this.updateCheck(_StateSystem2.checkBlendMode, value), this.gl[value ? \"enable\" : \"disable\"](this.gl.BLEND);\n }\n /**\n * Sets whether to enable or disable polygon offset fill.\n * @param value - Turn on or off webgl polygon offset testing.\n */\n setOffset(value) {\n this.updateCheck(_StateSystem2.checkPolygonOffset, value), this.gl[value ? \"enable\" : \"disable\"](this.gl.POLYGON_OFFSET_FILL);\n }\n /**\n * Sets whether to enable or disable depth test.\n * @param value - Turn on or off webgl depth testing.\n */\n setDepthTest(value) {\n this.gl[value ? \"enable\" : \"disable\"](this.gl.DEPTH_TEST);\n }\n /**\n * Sets whether to enable or disable depth mask.\n * @param value - Turn on or off webgl depth mask.\n */\n setDepthMask(value) {\n this.gl.depthMask(value);\n }\n /**\n * Sets whether to enable or disable cull face.\n * @param {boolean} value - Turn on or off webgl cull face.\n */\n setCullFace(value) {\n this.gl[value ? \"enable\" : \"disable\"](this.gl.CULL_FACE);\n }\n /**\n * Sets the gl front face.\n * @param {boolean} value - true is clockwise and false is counter-clockwise\n */\n setFrontFace(value) {\n this.gl.frontFace(this.gl[value ? \"CW\" : \"CCW\"]);\n }\n /**\n * Sets the blend mode.\n * @param {number} value - The blend mode to set to.\n */\n setBlendMode(value) {\n if (value === this.blendMode)\n return;\n this.blendMode = value;\n const mode = this.blendModes[value], gl = this.gl;\n mode.length === 2 ? gl.blendFunc(mode[0], mode[1]) : gl.blendFuncSeparate(mode[0], mode[1], mode[2], mode[3]), mode.length === 6 ? (this._blendEq = !0, gl.blendEquationSeparate(mode[4], mode[5])) : this._blendEq && (this._blendEq = !1, gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_ADD));\n }\n /**\n * Sets the polygon offset.\n * @param {number} value - the polygon offset\n * @param {number} scale - the polygon offset scale\n */\n setPolygonOffset(value, scale) {\n this.gl.polygonOffset(value, scale);\n }\n // used\n /** Resets all the logic and disables the VAOs. */\n reset() {\n this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL, !1), this.forceState(this.defaultState), this._blendEq = !0, this.blendMode = -1, this.setBlendMode(0);\n }\n /**\n * Checks to see which updates should be checked based on which settings have been activated.\n *\n * For example, if blend is enabled then we should check the blend modes each time the state is changed\n * or if polygon fill is activated then we need to check if the polygon offset changes.\n * The idea is that we only check what we have too.\n * @param func - the checking function to add or remove\n * @param value - should the check function be added or removed.\n */\n updateCheck(func, value) {\n const index = this.checks.indexOf(func);\n value && index === -1 ? this.checks.push(func) : !value && index !== -1 && this.checks.splice(index, 1);\n }\n /**\n * A private little wrapper function that we call to check the blend mode.\n * @param system - the System to perform the state check on\n * @param state - the state that the blendMode will pulled from\n */\n static checkBlendMode(system, state) {\n system.setBlendMode(state.blendMode);\n }\n /**\n * A private little wrapper function that we call to check the polygon offset.\n * @param system - the System to perform the state check on\n * @param state - the state that the blendMode will pulled from\n */\n static checkPolygonOffset(system, state) {\n system.setPolygonOffset(1, state.polygonOffset);\n }\n /**\n * @ignore\n */\n destroy() {\n this.gl = null;\n }\n};\n_StateSystem.extension = {\n type: _pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.ExtensionType.RendererSystem,\n name: \"state\"\n};\nlet StateSystem = _StateSystem;\n_pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.extensions.add(StateSystem);\n\n//# sourceMappingURL=StateSystem.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/state/StateSystem.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/state/utils/mapWebGLBlendModesToPixi.mjs":
-/*!******************************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/state/utils/mapWebGLBlendModesToPixi.mjs ***!
- \******************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ mapWebGLBlendModesToPixi: () => (/* binding */ mapWebGLBlendModesToPixi)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n\nfunction mapWebGLBlendModesToPixi(gl, array = []) {\n return array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.NORMAL] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.ADD] = [gl.ONE, gl.ONE], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.MULTIPLY] = [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.SCREEN] = [gl.ONE, gl.ONE_MINUS_SRC_COLOR, gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.OVERLAY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.DARKEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.LIGHTEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.COLOR_DODGE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.COLOR_BURN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.HARD_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.SOFT_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.DIFFERENCE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.EXCLUSION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.HUE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.SATURATION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.COLOR] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.LUMINOSITY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.NONE] = [0, 0], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.NORMAL_NPM] = [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.ADD_NPM] = [gl.SRC_ALPHA, gl.ONE, gl.ONE, gl.ONE], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.SCREEN_NPM] = [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_COLOR, gl.ONE, gl.ONE_MINUS_SRC_ALPHA], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.SRC_IN] = [gl.DST_ALPHA, gl.ZERO], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.SRC_OUT] = [gl.ONE_MINUS_DST_ALPHA, gl.ZERO], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.SRC_ATOP] = [gl.DST_ALPHA, gl.ONE_MINUS_SRC_ALPHA], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.DST_OVER] = [gl.ONE_MINUS_DST_ALPHA, gl.ONE], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.DST_IN] = [gl.ZERO, gl.SRC_ALPHA], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.DST_OUT] = [gl.ZERO, gl.ONE_MINUS_SRC_ALPHA], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.DST_ATOP] = [gl.ONE_MINUS_DST_ALPHA, gl.SRC_ALPHA], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.XOR] = [gl.ONE_MINUS_DST_ALPHA, gl.ONE_MINUS_SRC_ALPHA], array[_pixi_constants__WEBPACK_IMPORTED_MODULE_0__.BLEND_MODES.SUBTRACT] = [gl.ONE, gl.ONE, gl.ONE, gl.ONE, gl.FUNC_REVERSE_SUBTRACT, gl.FUNC_ADD], array;\n}\n\n//# sourceMappingURL=mapWebGLBlendModesToPixi.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/state/utils/mapWebGLBlendModesToPixi.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/system/ISystem.mjs":
-/*!********************************************************!*\
- !*** ./node_modules/@pixi/core/lib/system/ISystem.mjs ***!
- \********************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n\n//# sourceMappingURL=ISystem.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/system/ISystem.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/system/SystemManager.mjs":
-/*!**************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/system/SystemManager.mjs ***!
- \**************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SystemManager: () => (/* binding */ SystemManager)\n/* harmony export */ });\n/* harmony import */ var _pixi_runner__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/runner */ \"./node_modules/@pixi/runner/lib/index.mjs\");\n/* harmony import */ var _pixi_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/utils */ \"./node_modules/@pixi/utils/lib/index.mjs\");\n\n\nclass SystemManager extends _pixi_utils__WEBPACK_IMPORTED_MODULE_1__.EventEmitter {\n constructor() {\n super(...arguments), this.runners = {}, this._systemsHash = {};\n }\n /**\n * Set up a system with a collection of SystemClasses and runners.\n * Systems are attached dynamically to this class when added.\n * @param config - the config for the system manager\n */\n setup(config) {\n this.addRunners(...config.runners);\n const priority = (config.priority ?? []).filter((key) => config.systems[key]), orderByPriority = [\n ...priority,\n ...Object.keys(config.systems).filter((key) => !priority.includes(key))\n ];\n for (const i of orderByPriority)\n this.addSystem(config.systems[i], i);\n }\n /**\n * Create a bunch of runners based of a collection of ids\n * @param runnerIds - the runner ids to add\n */\n addRunners(...runnerIds) {\n runnerIds.forEach((runnerId) => {\n this.runners[runnerId] = new _pixi_runner__WEBPACK_IMPORTED_MODULE_0__.Runner(runnerId);\n });\n }\n /**\n * Add a new system to the renderer.\n * @param ClassRef - Class reference\n * @param name - Property name for system, if not specified\n * will use a static `name` property on the class itself. This\n * name will be assigned as s property on the Renderer so make\n * sure it doesn't collide with properties on Renderer.\n * @returns Return instance of renderer\n */\n addSystem(ClassRef, name) {\n const system = new ClassRef(this);\n if (this[name])\n throw new Error(`Whoops! The name \"${name}\" is already in use`);\n this[name] = system, this._systemsHash[name] = system;\n for (const i in this.runners)\n this.runners[i].add(system);\n return this;\n }\n /**\n * A function that will run a runner and call the runners function but pass in different options\n * to each system based on there name.\n *\n * E.g. If you have two systems added called `systemA` and `systemB` you could call do the following:\n *\n * ```js\n * system.emitWithCustomOptions(init, {\n * systemA: {...optionsForA},\n * systemB: {...optionsForB},\n * });\n * ```\n *\n * `init` would be called on system A passing `optionsForA` and on system B passing `optionsForB`.\n * @param runner - the runner to target\n * @param options - key value options for each system\n */\n emitWithCustomOptions(runner, options) {\n const systemHashKeys = Object.keys(this._systemsHash);\n runner.items.forEach((system) => {\n const systemName = systemHashKeys.find((systemId) => this._systemsHash[systemId] === system);\n system[runner.name](options[systemName]);\n });\n }\n /** destroy the all runners and systems. Its apps job to */\n destroy() {\n Object.values(this.runners).forEach((runner) => {\n runner.destroy();\n }), this._systemsHash = {};\n }\n // TODO implement!\n // removeSystem(ClassRef: ISystemConstructor, name: string): void\n // {\n // }\n}\n\n//# sourceMappingURL=SystemManager.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/system/SystemManager.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/systems.mjs":
-/*!*************************************************!*\
- !*** ./node_modules/@pixi/core/lib/systems.mjs ***!
- \*************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BackgroundSystem: () => (/* reexport safe */ _background_BackgroundSystem_mjs__WEBPACK_IMPORTED_MODULE_0__.BackgroundSystem),\n/* harmony export */ BatchSystem: () => (/* reexport safe */ _batch_BatchSystem_mjs__WEBPACK_IMPORTED_MODULE_1__.BatchSystem),\n/* harmony export */ ContextSystem: () => (/* reexport safe */ _context_ContextSystem_mjs__WEBPACK_IMPORTED_MODULE_2__.ContextSystem),\n/* harmony export */ FilterSystem: () => (/* reexport safe */ _filters_FilterSystem_mjs__WEBPACK_IMPORTED_MODULE_3__.FilterSystem),\n/* harmony export */ FramebufferSystem: () => (/* reexport safe */ _framebuffer_FramebufferSystem_mjs__WEBPACK_IMPORTED_MODULE_4__.FramebufferSystem),\n/* harmony export */ GenerateTextureSystem: () => (/* reexport safe */ _renderTexture_GenerateTextureSystem_mjs__WEBPACK_IMPORTED_MODULE_11__.GenerateTextureSystem),\n/* harmony export */ GeometrySystem: () => (/* reexport safe */ _geometry_GeometrySystem_mjs__WEBPACK_IMPORTED_MODULE_5__.GeometrySystem),\n/* harmony export */ MaskSystem: () => (/* reexport safe */ _mask_MaskSystem_mjs__WEBPACK_IMPORTED_MODULE_6__.MaskSystem),\n/* harmony export */ PluginSystem: () => (/* reexport safe */ _plugin_PluginSystem_mjs__WEBPACK_IMPORTED_MODULE_9__.PluginSystem),\n/* harmony export */ ProjectionSystem: () => (/* reexport safe */ _projection_ProjectionSystem_mjs__WEBPACK_IMPORTED_MODULE_10__.ProjectionSystem),\n/* harmony export */ RenderTextureSystem: () => (/* reexport safe */ _renderTexture_RenderTextureSystem_mjs__WEBPACK_IMPORTED_MODULE_12__.RenderTextureSystem),\n/* harmony export */ ScissorSystem: () => (/* reexport safe */ _mask_ScissorSystem_mjs__WEBPACK_IMPORTED_MODULE_7__.ScissorSystem),\n/* harmony export */ ShaderSystem: () => (/* reexport safe */ _shader_ShaderSystem_mjs__WEBPACK_IMPORTED_MODULE_13__.ShaderSystem),\n/* harmony export */ StartupSystem: () => (/* reexport safe */ _startup_StartupSystem_mjs__WEBPACK_IMPORTED_MODULE_14__.StartupSystem),\n/* harmony export */ StateSystem: () => (/* reexport safe */ _state_StateSystem_mjs__WEBPACK_IMPORTED_MODULE_15__.StateSystem),\n/* harmony export */ StencilSystem: () => (/* reexport safe */ _mask_StencilSystem_mjs__WEBPACK_IMPORTED_MODULE_8__.StencilSystem),\n/* harmony export */ SystemManager: () => (/* reexport safe */ _system_SystemManager_mjs__WEBPACK_IMPORTED_MODULE_16__.SystemManager),\n/* harmony export */ TextureGCSystem: () => (/* reexport safe */ _textures_TextureGCSystem_mjs__WEBPACK_IMPORTED_MODULE_17__.TextureGCSystem),\n/* harmony export */ TextureSystem: () => (/* reexport safe */ _textures_TextureSystem_mjs__WEBPACK_IMPORTED_MODULE_18__.TextureSystem),\n/* harmony export */ TransformFeedbackSystem: () => (/* reexport safe */ _transformFeedback_TransformFeedbackSystem_mjs__WEBPACK_IMPORTED_MODULE_19__.TransformFeedbackSystem),\n/* harmony export */ ViewSystem: () => (/* reexport safe */ _view_ViewSystem_mjs__WEBPACK_IMPORTED_MODULE_20__.ViewSystem)\n/* harmony export */ });\n/* harmony import */ var _background_BackgroundSystem_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./background/BackgroundSystem.mjs */ \"./node_modules/@pixi/core/lib/background/BackgroundSystem.mjs\");\n/* harmony import */ var _batch_BatchSystem_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./batch/BatchSystem.mjs */ \"./node_modules/@pixi/core/lib/batch/BatchSystem.mjs\");\n/* harmony import */ var _context_ContextSystem_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./context/ContextSystem.mjs */ \"./node_modules/@pixi/core/lib/context/ContextSystem.mjs\");\n/* harmony import */ var _filters_FilterSystem_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./filters/FilterSystem.mjs */ \"./node_modules/@pixi/core/lib/filters/FilterSystem.mjs\");\n/* harmony import */ var _framebuffer_FramebufferSystem_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./framebuffer/FramebufferSystem.mjs */ \"./node_modules/@pixi/core/lib/framebuffer/FramebufferSystem.mjs\");\n/* harmony import */ var _geometry_GeometrySystem_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./geometry/GeometrySystem.mjs */ \"./node_modules/@pixi/core/lib/geometry/GeometrySystem.mjs\");\n/* harmony import */ var _mask_MaskSystem_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./mask/MaskSystem.mjs */ \"./node_modules/@pixi/core/lib/mask/MaskSystem.mjs\");\n/* harmony import */ var _mask_ScissorSystem_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./mask/ScissorSystem.mjs */ \"./node_modules/@pixi/core/lib/mask/ScissorSystem.mjs\");\n/* harmony import */ var _mask_StencilSystem_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./mask/StencilSystem.mjs */ \"./node_modules/@pixi/core/lib/mask/StencilSystem.mjs\");\n/* harmony import */ var _plugin_PluginSystem_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./plugin/PluginSystem.mjs */ \"./node_modules/@pixi/core/lib/plugin/PluginSystem.mjs\");\n/* harmony import */ var _projection_ProjectionSystem_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./projection/ProjectionSystem.mjs */ \"./node_modules/@pixi/core/lib/projection/ProjectionSystem.mjs\");\n/* harmony import */ var _renderTexture_GenerateTextureSystem_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./renderTexture/GenerateTextureSystem.mjs */ \"./node_modules/@pixi/core/lib/renderTexture/GenerateTextureSystem.mjs\");\n/* harmony import */ var _renderTexture_RenderTextureSystem_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./renderTexture/RenderTextureSystem.mjs */ \"./node_modules/@pixi/core/lib/renderTexture/RenderTextureSystem.mjs\");\n/* harmony import */ var _shader_ShaderSystem_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./shader/ShaderSystem.mjs */ \"./node_modules/@pixi/core/lib/shader/ShaderSystem.mjs\");\n/* harmony import */ var _startup_StartupSystem_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./startup/StartupSystem.mjs */ \"./node_modules/@pixi/core/lib/startup/StartupSystem.mjs\");\n/* harmony import */ var _state_StateSystem_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./state/StateSystem.mjs */ \"./node_modules/@pixi/core/lib/state/StateSystem.mjs\");\n/* harmony import */ var _system_SystemManager_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./system/SystemManager.mjs */ \"./node_modules/@pixi/core/lib/system/SystemManager.mjs\");\n/* harmony import */ var _textures_TextureGCSystem_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./textures/TextureGCSystem.mjs */ \"./node_modules/@pixi/core/lib/textures/TextureGCSystem.mjs\");\n/* harmony import */ var _textures_TextureSystem_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./textures/TextureSystem.mjs */ \"./node_modules/@pixi/core/lib/textures/TextureSystem.mjs\");\n/* harmony import */ var _transformFeedback_TransformFeedbackSystem_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./transformFeedback/TransformFeedbackSystem.mjs */ \"./node_modules/@pixi/core/lib/transformFeedback/TransformFeedbackSystem.mjs\");\n/* harmony import */ var _view_ViewSystem_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./view/ViewSystem.mjs */ \"./node_modules/@pixi/core/lib/view/ViewSystem.mjs\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=systems.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/systems.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/textures/BaseTexture.mjs":
-/*!**************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/textures/BaseTexture.mjs ***!
- \**************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BaseTexture: () => (/* binding */ BaseTexture)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _pixi_settings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/settings */ \"./node_modules/@pixi/settings/lib/index.mjs\");\n/* harmony import */ var _pixi_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @pixi/utils */ \"./node_modules/@pixi/utils/lib/index.mjs\");\n/* harmony import */ var _resources_autoDetectResource_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./resources/autoDetectResource.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/autoDetectResource.mjs\");\n/* harmony import */ var _resources_BufferResource_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./resources/BufferResource.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/BufferResource.mjs\");\n/* harmony import */ var _resources_Resource_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./resources/Resource.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/Resource.mjs\");\n\n\n\n\n\n\nconst defaultBufferOptions = {\n scaleMode: _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.SCALE_MODES.NEAREST,\n alphaMode: _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.ALPHA_MODES.NPM\n}, _BaseTexture = class _BaseTexture2 extends _pixi_utils__WEBPACK_IMPORTED_MODULE_2__.EventEmitter {\n /**\n * @param {PIXI.Resource|HTMLImageElement|HTMLVideoElement|ImageBitmap|ICanvas|string} [resource=null] -\n * The current resource to use, for things that aren't Resource objects, will be converted\n * into a Resource.\n * @param options - Collection of options, default options inherited from {@link PIXI.BaseTexture.defaultOptions}.\n * @param {PIXI.MIPMAP_MODES} [options.mipmap] - If mipmapping is enabled for texture\n * @param {number} [options.anisotropicLevel] - Anisotropic filtering level of texture\n * @param {PIXI.WRAP_MODES} [options.wrapMode] - Wrap mode for textures\n * @param {PIXI.SCALE_MODES} [options.scaleMode] - Default scale mode, linear, nearest\n * @param {PIXI.FORMATS} [options.format] - GL format type\n * @param {PIXI.TYPES} [options.type] - GL data type\n * @param {PIXI.TARGETS} [options.target] - GL texture target\n * @param {PIXI.ALPHA_MODES} [options.alphaMode] - Pre multiply the image alpha\n * @param {number} [options.width=0] - Width of the texture\n * @param {number} [options.height=0] - Height of the texture\n * @param {number} [options.resolution=PIXI.settings.RESOLUTION] - Resolution of the base texture\n * @param {object} [options.resourceOptions] - Optional resource options,\n * see {@link PIXI.autoDetectResource autoDetectResource}\n */\n constructor(resource = null, options = null) {\n super(), options = Object.assign({}, _BaseTexture2.defaultOptions, options);\n const {\n alphaMode,\n mipmap,\n anisotropicLevel,\n scaleMode,\n width,\n height,\n wrapMode,\n format,\n type,\n target,\n resolution,\n resourceOptions\n } = options;\n resource && !(resource instanceof _resources_Resource_mjs__WEBPACK_IMPORTED_MODULE_5__.Resource) && (resource = (0,_resources_autoDetectResource_mjs__WEBPACK_IMPORTED_MODULE_3__.autoDetectResource)(resource, resourceOptions), resource.internal = !0), this.resolution = resolution || _pixi_settings__WEBPACK_IMPORTED_MODULE_1__.settings.RESOLUTION, this.width = Math.round((width || 0) * this.resolution) / this.resolution, this.height = Math.round((height || 0) * this.resolution) / this.resolution, this._mipmap = mipmap, this.anisotropicLevel = anisotropicLevel, this._wrapMode = wrapMode, this._scaleMode = scaleMode, this.format = format, this.type = type, this.target = target, this.alphaMode = alphaMode, this.uid = (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_2__.uid)(), this.touched = 0, this.isPowerOfTwo = !1, this._refreshPOT(), this._glTextures = {}, this.dirtyId = 0, this.dirtyStyleId = 0, this.cacheId = null, this.valid = width > 0 && height > 0, this.textureCacheIds = [], this.destroyed = !1, this.resource = null, this._batchEnabled = 0, this._batchLocation = 0, this.parentTextureArray = null, this.setResource(resource);\n }\n /**\n * Pixel width of the source of this texture\n * @readonly\n */\n get realWidth() {\n return Math.round(this.width * this.resolution);\n }\n /**\n * Pixel height of the source of this texture\n * @readonly\n */\n get realHeight() {\n return Math.round(this.height * this.resolution);\n }\n /**\n * Mipmap mode of the texture, affects downscaled images\n * @default PIXI.MIPMAP_MODES.POW2\n */\n get mipmap() {\n return this._mipmap;\n }\n set mipmap(value) {\n this._mipmap !== value && (this._mipmap = value, this.dirtyStyleId++);\n }\n /**\n * The scale mode to apply when scaling this texture\n * @default PIXI.SCALE_MODES.LINEAR\n */\n get scaleMode() {\n return this._scaleMode;\n }\n set scaleMode(value) {\n this._scaleMode !== value && (this._scaleMode = value, this.dirtyStyleId++);\n }\n /**\n * How the texture wraps\n * @default PIXI.WRAP_MODES.CLAMP\n */\n get wrapMode() {\n return this._wrapMode;\n }\n set wrapMode(value) {\n this._wrapMode !== value && (this._wrapMode = value, this.dirtyStyleId++);\n }\n /**\n * Changes style options of BaseTexture\n * @param scaleMode - Pixi scalemode\n * @param mipmap - enable mipmaps\n * @returns - this\n */\n setStyle(scaleMode, mipmap) {\n let dirty;\n return scaleMode !== void 0 && scaleMode !== this.scaleMode && (this.scaleMode = scaleMode, dirty = !0), mipmap !== void 0 && mipmap !== this.mipmap && (this.mipmap = mipmap, dirty = !0), dirty && this.dirtyStyleId++, this;\n }\n /**\n * Changes w/h/resolution. Texture becomes valid if width and height are greater than zero.\n * @param desiredWidth - Desired visual width\n * @param desiredHeight - Desired visual height\n * @param resolution - Optionally set resolution\n * @returns - this\n */\n setSize(desiredWidth, desiredHeight, resolution) {\n return resolution = resolution || this.resolution, this.setRealSize(desiredWidth * resolution, desiredHeight * resolution, resolution);\n }\n /**\n * Sets real size of baseTexture, preserves current resolution.\n * @param realWidth - Full rendered width\n * @param realHeight - Full rendered height\n * @param resolution - Optionally set resolution\n * @returns - this\n */\n setRealSize(realWidth, realHeight, resolution) {\n return this.resolution = resolution || this.resolution, this.width = Math.round(realWidth) / this.resolution, this.height = Math.round(realHeight) / this.resolution, this._refreshPOT(), this.update(), this;\n }\n /**\n * Refresh check for isPowerOfTwo texture based on size\n * @private\n */\n _refreshPOT() {\n this.isPowerOfTwo = (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_2__.isPow2)(this.realWidth) && (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_2__.isPow2)(this.realHeight);\n }\n /**\n * Changes resolution\n * @param resolution - res\n * @returns - this\n */\n setResolution(resolution) {\n const oldResolution = this.resolution;\n return oldResolution === resolution ? this : (this.resolution = resolution, this.valid && (this.width = Math.round(this.width * oldResolution) / resolution, this.height = Math.round(this.height * oldResolution) / resolution, this.emit(\"update\", this)), this._refreshPOT(), this);\n }\n /**\n * Sets the resource if it wasn't set. Throws error if resource already present\n * @param resource - that is managing this BaseTexture\n * @returns - this\n */\n setResource(resource) {\n if (this.resource === resource)\n return this;\n if (this.resource)\n throw new Error(\"Resource can be set only once\");\n return resource.bind(this), this.resource = resource, this;\n }\n /** Invalidates the object. Texture becomes valid if width and height are greater than zero. */\n update() {\n this.valid ? (this.dirtyId++, this.dirtyStyleId++, this.emit(\"update\", this)) : this.width > 0 && this.height > 0 && (this.valid = !0, this.emit(\"loaded\", this), this.emit(\"update\", this));\n }\n /**\n * Handle errors with resources.\n * @private\n * @param event - Error event emitted.\n */\n onError(event) {\n this.emit(\"error\", this, event);\n }\n /**\n * Destroys this base texture.\n * The method stops if resource doesn't want this texture to be destroyed.\n * Removes texture from all caches.\n * @fires PIXI.BaseTexture#destroyed\n */\n destroy() {\n this.resource && (this.resource.unbind(this), this.resource.internal && this.resource.destroy(), this.resource = null), this.cacheId && (delete _pixi_utils__WEBPACK_IMPORTED_MODULE_2__.BaseTextureCache[this.cacheId], delete _pixi_utils__WEBPACK_IMPORTED_MODULE_2__.TextureCache[this.cacheId], this.cacheId = null), this.valid = !1, this.dispose(), _BaseTexture2.removeFromCache(this), this.textureCacheIds = null, this.destroyed = !0, this.emit(\"destroyed\", this), this.removeAllListeners();\n }\n /**\n * Frees the texture from WebGL memory without destroying this texture object.\n * This means you can still use the texture later which will upload it to GPU\n * memory again.\n * @fires PIXI.BaseTexture#dispose\n */\n dispose() {\n this.emit(\"dispose\", this);\n }\n /** Utility function for BaseTexture|Texture cast. */\n castToBaseTexture() {\n return this;\n }\n /**\n * Helper function that creates a base texture based on the source you provide.\n * The source can be - image url, image element, canvas element. If the\n * source is an image url or an image element and not in the base texture\n * cache, it will be created and loaded.\n * @static\n * @param {HTMLImageElement|HTMLVideoElement|ImageBitmap|PIXI.ICanvas|string|string[]} source - The\n * source to create base texture from.\n * @param options - See {@link PIXI.BaseTexture}'s constructor for options.\n * @param {string} [options.pixiIdPrefix=pixiid] - If a source has no id, this is the prefix of the generated id\n * @param {boolean} [strict] - Enforce strict-mode, see {@link PIXI.settings.STRICT_TEXTURE_CACHE}.\n * @returns {PIXI.BaseTexture} The new base texture.\n */\n static from(source, options, strict = _pixi_settings__WEBPACK_IMPORTED_MODULE_1__.settings.STRICT_TEXTURE_CACHE) {\n const isFrame = typeof source == \"string\";\n let cacheId = null;\n if (isFrame)\n cacheId = source;\n else {\n if (!source._pixiId) {\n const prefix = options?.pixiIdPrefix || \"pixiid\";\n source._pixiId = `${prefix}_${(0,_pixi_utils__WEBPACK_IMPORTED_MODULE_2__.uid)()}`;\n }\n cacheId = source._pixiId;\n }\n let baseTexture = _pixi_utils__WEBPACK_IMPORTED_MODULE_2__.BaseTextureCache[cacheId];\n if (isFrame && strict && !baseTexture)\n throw new Error(`The cacheId \"${cacheId}\" does not exist in BaseTextureCache.`);\n return baseTexture || (baseTexture = new _BaseTexture2(source, options), baseTexture.cacheId = cacheId, _BaseTexture2.addToCache(baseTexture, cacheId)), baseTexture;\n }\n /**\n * Create a new Texture with a BufferResource from a typed array.\n * @param buffer - The optional array to use. If no data is provided, a new Float32Array is created.\n * @param width - Width of the resource\n * @param height - Height of the resource\n * @param options - See {@link PIXI.BaseTexture}'s constructor for options.\n * Default properties are different from the constructor's defaults.\n * @param {PIXI.FORMATS} [options.format] - The format is not given, the type is inferred from the\n * type of the buffer: `RGBA` if Float32Array, Int8Array, Uint8Array, or Uint8ClampedArray,\n * otherwise `RGBA_INTEGER`.\n * @param {PIXI.TYPES} [options.type] - The type is not given, the type is inferred from the\n * type of the buffer. Maps Float32Array to `FLOAT`, Int32Array to `INT`, Uint32Array to\n * `UNSIGNED_INT`, Int16Array to `SHORT`, Uint16Array to `UNSIGNED_SHORT`, Int8Array to `BYTE`,\n * Uint8Array/Uint8ClampedArray to `UNSIGNED_BYTE`.\n * @param {PIXI.ALPHA_MODES} [options.alphaMode=PIXI.ALPHA_MODES.NPM]\n * @param {PIXI.SCALE_MODES} [options.scaleMode=PIXI.SCALE_MODES.NEAREST]\n * @returns - The resulting new BaseTexture\n */\n static fromBuffer(buffer, width, height, options) {\n buffer = buffer || new Float32Array(width * height * 4);\n const resource = new _resources_BufferResource_mjs__WEBPACK_IMPORTED_MODULE_4__.BufferResource(buffer, { width, height, ...options?.resourceOptions });\n let format, type;\n return buffer instanceof Float32Array ? (format = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.FORMATS.RGBA, type = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.TYPES.FLOAT) : buffer instanceof Int32Array ? (format = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.FORMATS.RGBA_INTEGER, type = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.TYPES.INT) : buffer instanceof Uint32Array ? (format = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.FORMATS.RGBA_INTEGER, type = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.TYPES.UNSIGNED_INT) : buffer instanceof Int16Array ? (format = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.FORMATS.RGBA_INTEGER, type = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.TYPES.SHORT) : buffer instanceof Uint16Array ? (format = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.FORMATS.RGBA_INTEGER, type = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.TYPES.UNSIGNED_SHORT) : buffer instanceof Int8Array ? (format = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.FORMATS.RGBA, type = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.TYPES.BYTE) : (format = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.FORMATS.RGBA, type = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.TYPES.UNSIGNED_BYTE), resource.internal = !0, new _BaseTexture2(resource, Object.assign({}, defaultBufferOptions, { type, format }, options));\n }\n /**\n * Adds a BaseTexture to the global BaseTextureCache. This cache is shared across the whole PIXI object.\n * @param {PIXI.BaseTexture} baseTexture - The BaseTexture to add to the cache.\n * @param {string} id - The id that the BaseTexture will be stored against.\n */\n static addToCache(baseTexture, id) {\n id && (baseTexture.textureCacheIds.includes(id) || baseTexture.textureCacheIds.push(id), _pixi_utils__WEBPACK_IMPORTED_MODULE_2__.BaseTextureCache[id] && _pixi_utils__WEBPACK_IMPORTED_MODULE_2__.BaseTextureCache[id] !== baseTexture && console.warn(`BaseTexture added to the cache with an id [${id}] that already had an entry`), _pixi_utils__WEBPACK_IMPORTED_MODULE_2__.BaseTextureCache[id] = baseTexture);\n }\n /**\n * Remove a BaseTexture from the global BaseTextureCache.\n * @param {string|PIXI.BaseTexture} baseTexture - id of a BaseTexture to be removed, or a BaseTexture instance itself.\n * @returns {PIXI.BaseTexture|null} The BaseTexture that was removed.\n */\n static removeFromCache(baseTexture) {\n if (typeof baseTexture == \"string\") {\n const baseTextureFromCache = _pixi_utils__WEBPACK_IMPORTED_MODULE_2__.BaseTextureCache[baseTexture];\n if (baseTextureFromCache) {\n const index = baseTextureFromCache.textureCacheIds.indexOf(baseTexture);\n return index > -1 && baseTextureFromCache.textureCacheIds.splice(index, 1), delete _pixi_utils__WEBPACK_IMPORTED_MODULE_2__.BaseTextureCache[baseTexture], baseTextureFromCache;\n }\n } else if (baseTexture?.textureCacheIds) {\n for (let i = 0; i < baseTexture.textureCacheIds.length; ++i)\n delete _pixi_utils__WEBPACK_IMPORTED_MODULE_2__.BaseTextureCache[baseTexture.textureCacheIds[i]];\n return baseTexture.textureCacheIds.length = 0, baseTexture;\n }\n return null;\n }\n};\n_BaseTexture.defaultOptions = {\n /**\n * If mipmapping is enabled for texture.\n * @type {PIXI.MIPMAP_MODES}\n * @default PIXI.MIPMAP_MODES.POW2\n */\n mipmap: _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MIPMAP_MODES.POW2,\n /** Anisotropic filtering level of texture */\n anisotropicLevel: 0,\n /**\n * Default scale mode, linear, nearest.\n * @type {PIXI.SCALE_MODES}\n * @default PIXI.SCALE_MODES.LINEAR\n */\n scaleMode: _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.SCALE_MODES.LINEAR,\n /**\n * Wrap mode for textures.\n * @type {PIXI.WRAP_MODES}\n * @default PIXI.WRAP_MODES.CLAMP\n */\n wrapMode: _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.WRAP_MODES.CLAMP,\n /**\n * Pre multiply the image alpha\n * @type {PIXI.ALPHA_MODES}\n * @default PIXI.ALPHA_MODES.UNPACK\n */\n alphaMode: _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.ALPHA_MODES.UNPACK,\n /**\n * GL texture target\n * @type {PIXI.TARGETS}\n * @default PIXI.TARGETS.TEXTURE_2D\n */\n target: _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.TARGETS.TEXTURE_2D,\n /**\n * GL format type\n * @type {PIXI.FORMATS}\n * @default PIXI.FORMATS.RGBA\n */\n format: _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.FORMATS.RGBA,\n /**\n * GL data type\n * @type {PIXI.TYPES}\n * @default PIXI.TYPES.UNSIGNED_BYTE\n */\n type: _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.TYPES.UNSIGNED_BYTE\n}, /** Global number of the texture batch, used by multi-texture renderers. */\n_BaseTexture._globalBatch = 0;\nlet BaseTexture = _BaseTexture;\n\n//# sourceMappingURL=BaseTexture.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/textures/BaseTexture.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/textures/GLTexture.mjs":
-/*!************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/textures/GLTexture.mjs ***!
- \************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ GLTexture: () => (/* binding */ GLTexture)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n\nclass GLTexture {\n constructor(texture) {\n this.texture = texture, this.width = -1, this.height = -1, this.dirtyId = -1, this.dirtyStyleId = -1, this.mipmap = !1, this.wrapMode = 33071, this.type = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.TYPES.UNSIGNED_BYTE, this.internalFormat = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.FORMATS.RGBA, this.samplerType = 0;\n }\n}\n\n//# sourceMappingURL=GLTexture.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/textures/GLTexture.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/textures/Texture.mjs":
-/*!**********************************************************!*\
- !*** ./node_modules/@pixi/core/lib/textures/Texture.mjs ***!
- \**********************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Texture: () => (/* binding */ Texture)\n/* harmony export */ });\n/* harmony import */ var _pixi_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/math */ \"./node_modules/@pixi/math/lib/index.mjs\");\n/* harmony import */ var _pixi_settings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/settings */ \"./node_modules/@pixi/settings/lib/index.mjs\");\n/* harmony import */ var _pixi_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @pixi/utils */ \"./node_modules/@pixi/utils/lib/index.mjs\");\n/* harmony import */ var _BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./BaseTexture.mjs */ \"./node_modules/@pixi/core/lib/textures/BaseTexture.mjs\");\n/* harmony import */ var _resources_ImageResource_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./resources/ImageResource.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/ImageResource.mjs\");\n/* harmony import */ var _TextureUvs_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./TextureUvs.mjs */ \"./node_modules/@pixi/core/lib/textures/TextureUvs.mjs\");\n\n\n\n\n\n\nconst DEFAULT_UVS = new _TextureUvs_mjs__WEBPACK_IMPORTED_MODULE_5__.TextureUvs();\nfunction removeAllHandlers(tex) {\n tex.destroy = function() {\n }, tex.on = function() {\n }, tex.once = function() {\n }, tex.emit = function() {\n };\n}\nclass Texture extends _pixi_utils__WEBPACK_IMPORTED_MODULE_2__.EventEmitter {\n /**\n * @param baseTexture - The base texture source to create the texture from\n * @param frame - The rectangle frame of the texture to show\n * @param orig - The area of original texture\n * @param trim - Trimmed rectangle of original texture\n * @param rotate - indicates how the texture was rotated by texture packer. See {@link PIXI.groupD8}\n * @param anchor - Default anchor point used for sprite placement / rotation\n * @param borders - Default borders used for 9-slice scaling. See {@link PIXI.NineSlicePlane}\n */\n constructor(baseTexture, frame, orig, trim, rotate, anchor, borders) {\n if (super(), this.noFrame = !1, frame || (this.noFrame = !0, frame = new _pixi_math__WEBPACK_IMPORTED_MODULE_0__.Rectangle(0, 0, 1, 1)), baseTexture instanceof Texture && (baseTexture = baseTexture.baseTexture), this.baseTexture = baseTexture, this._frame = frame, this.trim = trim, this.valid = !1, this.destroyed = !1, this._uvs = DEFAULT_UVS, this.uvMatrix = null, this.orig = orig || frame, this._rotate = Number(rotate || 0), rotate === !0)\n this._rotate = 2;\n else if (this._rotate % 2 !== 0)\n throw new Error(\"attempt to use diamond-shaped UVs. If you are sure, set rotation manually\");\n this.defaultAnchor = anchor ? new _pixi_math__WEBPACK_IMPORTED_MODULE_0__.Point(anchor.x, anchor.y) : new _pixi_math__WEBPACK_IMPORTED_MODULE_0__.Point(0, 0), this.defaultBorders = borders, this._updateID = 0, this.textureCacheIds = [], baseTexture.valid ? this.noFrame ? baseTexture.valid && this.onBaseTextureUpdated(baseTexture) : this.frame = frame : baseTexture.once(\"loaded\", this.onBaseTextureUpdated, this), this.noFrame && baseTexture.on(\"update\", this.onBaseTextureUpdated, this);\n }\n /**\n * Updates this texture on the gpu.\n *\n * Calls the TextureResource update.\n *\n * If you adjusted `frame` manually, please call `updateUvs()` instead.\n */\n update() {\n this.baseTexture.resource && this.baseTexture.resource.update();\n }\n /**\n * Called when the base texture is updated\n * @protected\n * @param baseTexture - The base texture.\n */\n onBaseTextureUpdated(baseTexture) {\n if (this.noFrame) {\n if (!this.baseTexture.valid)\n return;\n this._frame.width = baseTexture.width, this._frame.height = baseTexture.height, this.valid = !0, this.updateUvs();\n } else\n this.frame = this._frame;\n this.emit(\"update\", this);\n }\n /**\n * Destroys this texture\n * @param [destroyBase=false] - Whether to destroy the base texture as well\n * @fires PIXI.Texture#destroyed\n */\n destroy(destroyBase) {\n if (this.baseTexture) {\n if (destroyBase) {\n const { resource } = this.baseTexture;\n resource?.url && _pixi_utils__WEBPACK_IMPORTED_MODULE_2__.TextureCache[resource.url] && Texture.removeFromCache(resource.url), this.baseTexture.destroy();\n }\n this.baseTexture.off(\"loaded\", this.onBaseTextureUpdated, this), this.baseTexture.off(\"update\", this.onBaseTextureUpdated, this), this.baseTexture = null;\n }\n this._frame = null, this._uvs = null, this.trim = null, this.orig = null, this.valid = !1, Texture.removeFromCache(this), this.textureCacheIds = null, this.destroyed = !0, this.emit(\"destroyed\", this), this.removeAllListeners();\n }\n /**\n * Creates a new texture object that acts the same as this one.\n * @returns - The new texture\n */\n clone() {\n const clonedFrame = this._frame.clone(), clonedOrig = this._frame === this.orig ? clonedFrame : this.orig.clone(), clonedTexture = new Texture(\n this.baseTexture,\n !this.noFrame && clonedFrame,\n clonedOrig,\n this.trim?.clone(),\n this.rotate,\n this.defaultAnchor,\n this.defaultBorders\n );\n return this.noFrame && (clonedTexture._frame = clonedFrame), clonedTexture;\n }\n /**\n * Updates the internal WebGL UV cache. Use it after you change `frame` or `trim` of the texture.\n * Call it after changing the frame\n */\n updateUvs() {\n this._uvs === DEFAULT_UVS && (this._uvs = new _TextureUvs_mjs__WEBPACK_IMPORTED_MODULE_5__.TextureUvs()), this._uvs.set(this._frame, this.baseTexture, this.rotate), this._updateID++;\n }\n /**\n * Helper function that creates a new Texture based on the source you provide.\n * The source can be - frame id, image url, video url, canvas element, video element, base texture\n * @param {string|PIXI.BaseTexture|HTMLImageElement|HTMLVideoElement|ImageBitmap|PIXI.ICanvas} source -\n * Source or array of sources to create texture from\n * @param options - See {@link PIXI.BaseTexture}'s constructor for options.\n * @param {string} [options.pixiIdPrefix=pixiid] - If a source has no id, this is the prefix of the generated id\n * @param {boolean} [strict] - Enforce strict-mode, see {@link PIXI.settings.STRICT_TEXTURE_CACHE}.\n * @returns {PIXI.Texture} The newly created texture\n */\n static from(source, options = {}, strict = _pixi_settings__WEBPACK_IMPORTED_MODULE_1__.settings.STRICT_TEXTURE_CACHE) {\n const isFrame = typeof source == \"string\";\n let cacheId = null;\n if (isFrame)\n cacheId = source;\n else if (source instanceof _BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_3__.BaseTexture) {\n if (!source.cacheId) {\n const prefix = options?.pixiIdPrefix || \"pixiid\";\n source.cacheId = `${prefix}-${(0,_pixi_utils__WEBPACK_IMPORTED_MODULE_2__.uid)()}`, _BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_3__.BaseTexture.addToCache(source, source.cacheId);\n }\n cacheId = source.cacheId;\n } else {\n if (!source._pixiId) {\n const prefix = options?.pixiIdPrefix || \"pixiid\";\n source._pixiId = `${prefix}_${(0,_pixi_utils__WEBPACK_IMPORTED_MODULE_2__.uid)()}`;\n }\n cacheId = source._pixiId;\n }\n let texture = _pixi_utils__WEBPACK_IMPORTED_MODULE_2__.TextureCache[cacheId];\n if (isFrame && strict && !texture)\n throw new Error(`The cacheId \"${cacheId}\" does not exist in TextureCache.`);\n return !texture && !(source instanceof _BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_3__.BaseTexture) ? (options.resolution || (options.resolution = (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_2__.getResolutionOfUrl)(source)), texture = new Texture(new _BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_3__.BaseTexture(source, options)), texture.baseTexture.cacheId = cacheId, _BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_3__.BaseTexture.addToCache(texture.baseTexture, cacheId), Texture.addToCache(texture, cacheId)) : !texture && source instanceof _BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_3__.BaseTexture && (texture = new Texture(source), Texture.addToCache(texture, cacheId)), texture;\n }\n /**\n * Useful for loading textures via URLs. Use instead of `Texture.from` because\n * it does a better job of handling failed URLs more effectively. This also ignores\n * `PIXI.settings.STRICT_TEXTURE_CACHE`. Works for Videos, SVGs, Images.\n * @param url - The remote URL or array of URLs to load.\n * @param options - Optional options to include\n * @returns - A Promise that resolves to a Texture.\n */\n static fromURL(url, options) {\n const resourceOptions = Object.assign({ autoLoad: !1 }, options?.resourceOptions), texture = Texture.from(url, Object.assign({ resourceOptions }, options), !1), resource = texture.baseTexture.resource;\n return texture.baseTexture.valid ? Promise.resolve(texture) : resource.load().then(() => Promise.resolve(texture));\n }\n /**\n * Create a new Texture with a BufferResource from a typed array.\n * @param buffer - The optional array to use. If no data is provided, a new Float32Array is created.\n * @param width - Width of the resource\n * @param height - Height of the resource\n * @param options - See {@link PIXI.BaseTexture}'s constructor for options.\n * Default properties are different from the constructor's defaults.\n * @param {PIXI.FORMATS} [options.format] - The format is not given, the type is inferred from the\n * type of the buffer: `RGBA` if Float32Array, Int8Array, Uint8Array, or Uint8ClampedArray,\n * otherwise `RGBA_INTEGER`.\n * @param {PIXI.TYPES} [options.type] - The type is not given, the type is inferred from the\n * type of the buffer. Maps Float32Array to `FLOAT`, Int32Array to `INT`, Uint32Array to\n * `UNSIGNED_INT`, Int16Array to `SHORT`, Uint16Array to `UNSIGNED_SHORT`, Int8Array to `BYTE`,\n * Uint8Array/Uint8ClampedArray to `UNSIGNED_BYTE`.\n * @param {PIXI.ALPHA_MODES} [options.alphaMode=PIXI.ALPHA_MODES.NPM]\n * @param {PIXI.SCALE_MODES} [options.scaleMode=PIXI.SCALE_MODES.NEAREST]\n * @returns - The resulting new BaseTexture\n */\n static fromBuffer(buffer, width, height, options) {\n return new Texture(_BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_3__.BaseTexture.fromBuffer(buffer, width, height, options));\n }\n /**\n * Create a texture from a source and add to the cache.\n * @param {HTMLImageElement|HTMLVideoElement|ImageBitmap|PIXI.ICanvas|string} source - The input source.\n * @param imageUrl - File name of texture, for cache and resolving resolution.\n * @param name - Human readable name for the texture cache. If no name is\n * specified, only `imageUrl` will be used as the cache ID.\n * @param options\n * @returns - Output texture\n */\n static fromLoader(source, imageUrl, name, options) {\n const baseTexture = new _BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_3__.BaseTexture(source, Object.assign({\n scaleMode: _BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_3__.BaseTexture.defaultOptions.scaleMode,\n resolution: (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_2__.getResolutionOfUrl)(imageUrl)\n }, options)), { resource } = baseTexture;\n resource instanceof _resources_ImageResource_mjs__WEBPACK_IMPORTED_MODULE_4__.ImageResource && (resource.url = imageUrl);\n const texture = new Texture(baseTexture);\n return name || (name = imageUrl), _BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_3__.BaseTexture.addToCache(texture.baseTexture, name), Texture.addToCache(texture, name), name !== imageUrl && (_BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_3__.BaseTexture.addToCache(texture.baseTexture, imageUrl), Texture.addToCache(texture, imageUrl)), texture.baseTexture.valid ? Promise.resolve(texture) : new Promise((resolve) => {\n texture.baseTexture.once(\"loaded\", () => resolve(texture));\n });\n }\n /**\n * Adds a Texture to the global TextureCache. This cache is shared across the whole PIXI object.\n * @param texture - The Texture to add to the cache.\n * @param id - The id that the Texture will be stored against.\n */\n static addToCache(texture, id) {\n id && (texture.textureCacheIds.includes(id) || texture.textureCacheIds.push(id), _pixi_utils__WEBPACK_IMPORTED_MODULE_2__.TextureCache[id] && _pixi_utils__WEBPACK_IMPORTED_MODULE_2__.TextureCache[id] !== texture && console.warn(`Texture added to the cache with an id [${id}] that already had an entry`), _pixi_utils__WEBPACK_IMPORTED_MODULE_2__.TextureCache[id] = texture);\n }\n /**\n * Remove a Texture from the global TextureCache.\n * @param texture - id of a Texture to be removed, or a Texture instance itself\n * @returns - The Texture that was removed\n */\n static removeFromCache(texture) {\n if (typeof texture == \"string\") {\n const textureFromCache = _pixi_utils__WEBPACK_IMPORTED_MODULE_2__.TextureCache[texture];\n if (textureFromCache) {\n const index = textureFromCache.textureCacheIds.indexOf(texture);\n return index > -1 && textureFromCache.textureCacheIds.splice(index, 1), delete _pixi_utils__WEBPACK_IMPORTED_MODULE_2__.TextureCache[texture], textureFromCache;\n }\n } else if (texture?.textureCacheIds) {\n for (let i = 0; i < texture.textureCacheIds.length; ++i)\n _pixi_utils__WEBPACK_IMPORTED_MODULE_2__.TextureCache[texture.textureCacheIds[i]] === texture && delete _pixi_utils__WEBPACK_IMPORTED_MODULE_2__.TextureCache[texture.textureCacheIds[i]];\n return texture.textureCacheIds.length = 0, texture;\n }\n return null;\n }\n /**\n * Returns resolution of baseTexture\n * @readonly\n */\n get resolution() {\n return this.baseTexture.resolution;\n }\n /**\n * The frame specifies the region of the base texture that this texture uses.\n * Please call `updateUvs()` after you change coordinates of `frame` manually.\n */\n get frame() {\n return this._frame;\n }\n set frame(frame) {\n this._frame = frame, this.noFrame = !1;\n const { x, y, width, height } = frame, xNotFit = x + width > this.baseTexture.width, yNotFit = y + height > this.baseTexture.height;\n if (xNotFit || yNotFit) {\n const relationship = xNotFit && yNotFit ? \"and\" : \"or\", errorX = `X: ${x} + ${width} = ${x + width} > ${this.baseTexture.width}`, errorY = `Y: ${y} + ${height} = ${y + height} > ${this.baseTexture.height}`;\n throw new Error(`Texture Error: frame does not fit inside the base Texture dimensions: ${errorX} ${relationship} ${errorY}`);\n }\n this.valid = width && height && this.baseTexture.valid, !this.trim && !this.rotate && (this.orig = frame), this.valid && this.updateUvs();\n }\n /**\n * Indicates whether the texture is rotated inside the atlas\n * set to 2 to compensate for texture packer rotation\n * set to 6 to compensate for spine packer rotation\n * can be used to rotate or mirror sprites\n * See {@link PIXI.groupD8} for explanation\n */\n get rotate() {\n return this._rotate;\n }\n set rotate(rotate) {\n this._rotate = rotate, this.valid && this.updateUvs();\n }\n /** The width of the Texture in pixels. */\n get width() {\n return this.orig.width;\n }\n /** The height of the Texture in pixels. */\n get height() {\n return this.orig.height;\n }\n /** Utility function for BaseTexture|Texture cast. */\n castToBaseTexture() {\n return this.baseTexture;\n }\n /** An empty texture, used often to not have to create multiple empty textures. Can not be destroyed. */\n static get EMPTY() {\n return Texture._EMPTY || (Texture._EMPTY = new Texture(new _BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_3__.BaseTexture()), removeAllHandlers(Texture._EMPTY), removeAllHandlers(Texture._EMPTY.baseTexture)), Texture._EMPTY;\n }\n /** A white texture of 16x16 size, used for graphics and other things Can not be destroyed. */\n static get WHITE() {\n if (!Texture._WHITE) {\n const canvas = _pixi_settings__WEBPACK_IMPORTED_MODULE_1__.settings.ADAPTER.createCanvas(16, 16), context = canvas.getContext(\"2d\");\n canvas.width = 16, canvas.height = 16, context.fillStyle = \"white\", context.fillRect(0, 0, 16, 16), Texture._WHITE = new Texture(_BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_3__.BaseTexture.from(canvas)), removeAllHandlers(Texture._WHITE), removeAllHandlers(Texture._WHITE.baseTexture);\n }\n return Texture._WHITE;\n }\n}\n\n//# sourceMappingURL=Texture.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/textures/Texture.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/textures/TextureGCSystem.mjs":
-/*!******************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/textures/TextureGCSystem.mjs ***!
- \******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TextureGCSystem: () => (/* binding */ TextureGCSystem)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _pixi_extensions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/extensions */ \"./node_modules/@pixi/extensions/lib/index.mjs\");\n\n\nconst _TextureGCSystem = class _TextureGCSystem2 {\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n this.renderer = renderer, this.count = 0, this.checkCount = 0, this.maxIdle = _TextureGCSystem2.defaultMaxIdle, this.checkCountMax = _TextureGCSystem2.defaultCheckCountMax, this.mode = _TextureGCSystem2.defaultMode;\n }\n /**\n * Checks to see when the last time a texture was used.\n * If the texture has not been used for a specified amount of time, it will be removed from the GPU.\n */\n postrender() {\n this.renderer.objectRenderer.renderingToScreen && (this.count++, this.mode !== _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.GC_MODES.MANUAL && (this.checkCount++, this.checkCount > this.checkCountMax && (this.checkCount = 0, this.run())));\n }\n /**\n * Checks to see when the last time a texture was used.\n * If the texture has not been used for a specified amount of time, it will be removed from the GPU.\n */\n run() {\n const tm = this.renderer.texture, managedTextures = tm.managedTextures;\n let wasRemoved = !1;\n for (let i = 0; i < managedTextures.length; i++) {\n const texture = managedTextures[i];\n texture.resource && this.count - texture.touched > this.maxIdle && (tm.destroyTexture(texture, !0), managedTextures[i] = null, wasRemoved = !0);\n }\n if (wasRemoved) {\n let j = 0;\n for (let i = 0; i < managedTextures.length; i++)\n managedTextures[i] !== null && (managedTextures[j++] = managedTextures[i]);\n managedTextures.length = j;\n }\n }\n /**\n * Removes all the textures within the specified displayObject and its children from the GPU.\n * @param {PIXI.DisplayObject} displayObject - the displayObject to remove the textures from.\n */\n unload(displayObject) {\n const tm = this.renderer.texture, texture = displayObject._texture;\n texture && !texture.framebuffer && tm.destroyTexture(texture);\n for (let i = displayObject.children.length - 1; i >= 0; i--)\n this.unload(displayObject.children[i]);\n }\n destroy() {\n this.renderer = null;\n }\n};\n_TextureGCSystem.defaultMode = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.GC_MODES.AUTO, /**\n* Default maximum idle frames before a texture is destroyed by garbage collection.\n* @static\n* @default 3600\n* @see PIXI.TextureGCSystem#maxIdle\n*/\n_TextureGCSystem.defaultMaxIdle = 60 * 60, /**\n* Default frames between two garbage collections.\n* @static\n* @default 600\n* @see PIXI.TextureGCSystem#checkCountMax\n*/\n_TextureGCSystem.defaultCheckCountMax = 60 * 10, /** @ignore */\n_TextureGCSystem.extension = {\n type: _pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.ExtensionType.RendererSystem,\n name: \"textureGC\"\n};\nlet TextureGCSystem = _TextureGCSystem;\n_pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.extensions.add(TextureGCSystem);\n\n//# sourceMappingURL=TextureGCSystem.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/textures/TextureGCSystem.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/textures/TextureMatrix.mjs":
-/*!****************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/textures/TextureMatrix.mjs ***!
- \****************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TextureMatrix: () => (/* binding */ TextureMatrix)\n/* harmony export */ });\n/* harmony import */ var _pixi_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/math */ \"./node_modules/@pixi/math/lib/index.mjs\");\n\nconst tempMat = new _pixi_math__WEBPACK_IMPORTED_MODULE_0__.Matrix();\nclass TextureMatrix {\n /**\n * @param texture - observed texture\n * @param clampMargin - Changes frame clamping, 0.5 by default. Use -0.5 for extra border.\n */\n constructor(texture, clampMargin) {\n this._texture = texture, this.mapCoord = new _pixi_math__WEBPACK_IMPORTED_MODULE_0__.Matrix(), this.uClampFrame = new Float32Array(4), this.uClampOffset = new Float32Array(2), this._textureID = -1, this._updateID = 0, this.clampOffset = 0, this.clampMargin = typeof clampMargin > \"u\" ? 0.5 : clampMargin, this.isSimple = !1;\n }\n /** Texture property. */\n get texture() {\n return this._texture;\n }\n set texture(value) {\n this._texture = value, this._textureID = -1;\n }\n /**\n * Multiplies uvs array to transform\n * @param uvs - mesh uvs\n * @param [out=uvs] - output\n * @returns - output\n */\n multiplyUvs(uvs, out) {\n out === void 0 && (out = uvs);\n const mat = this.mapCoord;\n for (let i = 0; i < uvs.length; i += 2) {\n const x = uvs[i], y = uvs[i + 1];\n out[i] = x * mat.a + y * mat.c + mat.tx, out[i + 1] = x * mat.b + y * mat.d + mat.ty;\n }\n return out;\n }\n /**\n * Updates matrices if texture was changed.\n * @param [forceUpdate=false] - if true, matrices will be updated any case\n * @returns - Whether or not it was updated\n */\n update(forceUpdate) {\n const tex = this._texture;\n if (!tex || !tex.valid || !forceUpdate && this._textureID === tex._updateID)\n return !1;\n this._textureID = tex._updateID, this._updateID++;\n const uvs = tex._uvs;\n this.mapCoord.set(uvs.x1 - uvs.x0, uvs.y1 - uvs.y0, uvs.x3 - uvs.x0, uvs.y3 - uvs.y0, uvs.x0, uvs.y0);\n const orig = tex.orig, trim = tex.trim;\n trim && (tempMat.set(\n orig.width / trim.width,\n 0,\n 0,\n orig.height / trim.height,\n -trim.x / trim.width,\n -trim.y / trim.height\n ), this.mapCoord.append(tempMat));\n const texBase = tex.baseTexture, frame = this.uClampFrame, margin = this.clampMargin / texBase.resolution, offset = this.clampOffset;\n return frame[0] = (tex._frame.x + margin + offset) / texBase.width, frame[1] = (tex._frame.y + margin + offset) / texBase.height, frame[2] = (tex._frame.x + tex._frame.width - margin + offset) / texBase.width, frame[3] = (tex._frame.y + tex._frame.height - margin + offset) / texBase.height, this.uClampOffset[0] = offset / texBase.realWidth, this.uClampOffset[1] = offset / texBase.realHeight, this.isSimple = tex._frame.width === texBase.width && tex._frame.height === texBase.height && tex.rotate === 0, !0;\n }\n}\n\n//# sourceMappingURL=TextureMatrix.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/textures/TextureMatrix.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/textures/TextureSystem.mjs":
-/*!****************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/textures/TextureSystem.mjs ***!
- \****************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TextureSystem: () => (/* binding */ TextureSystem)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _pixi_extensions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/extensions */ \"./node_modules/@pixi/extensions/lib/index.mjs\");\n/* harmony import */ var _pixi_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @pixi/utils */ \"./node_modules/@pixi/utils/lib/index.mjs\");\n/* harmony import */ var _BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./BaseTexture.mjs */ \"./node_modules/@pixi/core/lib/textures/BaseTexture.mjs\");\n/* harmony import */ var _GLTexture_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./GLTexture.mjs */ \"./node_modules/@pixi/core/lib/textures/GLTexture.mjs\");\n/* harmony import */ var _utils_mapInternalFormatToSamplerType_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/mapInternalFormatToSamplerType.mjs */ \"./node_modules/@pixi/core/lib/textures/utils/mapInternalFormatToSamplerType.mjs\");\n/* harmony import */ var _utils_mapTypeAndFormatToInternalFormat_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils/mapTypeAndFormatToInternalFormat.mjs */ \"./node_modules/@pixi/core/lib/textures/utils/mapTypeAndFormatToInternalFormat.mjs\");\n\n\n\n\n\n\n\nclass TextureSystem {\n /**\n * @param renderer - The renderer this system works for.\n */\n constructor(renderer) {\n this.renderer = renderer, this.boundTextures = [], this.currentLocation = -1, this.managedTextures = [], this._unknownBoundTextures = !1, this.unknownTexture = new _BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_3__.BaseTexture(), this.hasIntegerTextures = !1;\n }\n /** Sets up the renderer context and necessary buffers. */\n contextChange() {\n const gl = this.gl = this.renderer.gl;\n this.CONTEXT_UID = this.renderer.CONTEXT_UID, this.webGLVersion = this.renderer.context.webGLVersion, this.internalFormats = (0,_utils_mapTypeAndFormatToInternalFormat_mjs__WEBPACK_IMPORTED_MODULE_6__.mapTypeAndFormatToInternalFormat)(gl), this.samplerTypes = (0,_utils_mapInternalFormatToSamplerType_mjs__WEBPACK_IMPORTED_MODULE_5__.mapInternalFormatToSamplerType)(gl);\n const maxTextures = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n this.boundTextures.length = maxTextures;\n for (let i = 0; i < maxTextures; i++)\n this.boundTextures[i] = null;\n this.emptyTextures = {};\n const emptyTexture2D = new _GLTexture_mjs__WEBPACK_IMPORTED_MODULE_4__.GLTexture(gl.createTexture());\n gl.bindTexture(gl.TEXTURE_2D, emptyTexture2D.texture), gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, new Uint8Array(4)), this.emptyTextures[gl.TEXTURE_2D] = emptyTexture2D, this.emptyTextures[gl.TEXTURE_CUBE_MAP] = new _GLTexture_mjs__WEBPACK_IMPORTED_MODULE_4__.GLTexture(gl.createTexture()), gl.bindTexture(gl.TEXTURE_CUBE_MAP, this.emptyTextures[gl.TEXTURE_CUBE_MAP].texture);\n for (let i = 0; i < 6; i++)\n gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MAG_FILTER, gl.LINEAR), gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n for (let i = 0; i < this.boundTextures.length; i++)\n this.bind(null, i);\n }\n /**\n * Bind a texture to a specific location\n *\n * If you want to unbind something, please use `unbind(texture)` instead of `bind(null, textureLocation)`\n * @param texture - Texture to bind\n * @param [location=0] - Location to bind at\n */\n bind(texture, location = 0) {\n const { gl } = this;\n if (texture = texture?.castToBaseTexture(), texture?.valid && !texture.parentTextureArray) {\n texture.touched = this.renderer.textureGC.count;\n const glTexture = texture._glTextures[this.CONTEXT_UID] || this.initTexture(texture);\n this.boundTextures[location] !== texture && (this.currentLocation !== location && (this.currentLocation = location, gl.activeTexture(gl.TEXTURE0 + location)), gl.bindTexture(texture.target, glTexture.texture)), glTexture.dirtyId !== texture.dirtyId ? (this.currentLocation !== location && (this.currentLocation = location, gl.activeTexture(gl.TEXTURE0 + location)), this.updateTexture(texture)) : glTexture.dirtyStyleId !== texture.dirtyStyleId && this.updateTextureStyle(texture), this.boundTextures[location] = texture;\n } else\n this.currentLocation !== location && (this.currentLocation = location, gl.activeTexture(gl.TEXTURE0 + location)), gl.bindTexture(gl.TEXTURE_2D, this.emptyTextures[gl.TEXTURE_2D].texture), this.boundTextures[location] = null;\n }\n /** Resets texture location and bound textures Actual `bind(null, i)` calls will be performed at next `unbind()` call */\n reset() {\n this._unknownBoundTextures = !0, this.hasIntegerTextures = !1, this.currentLocation = -1;\n for (let i = 0; i < this.boundTextures.length; i++)\n this.boundTextures[i] = this.unknownTexture;\n }\n /**\n * Unbind a texture.\n * @param texture - Texture to bind\n */\n unbind(texture) {\n const { gl, boundTextures } = this;\n if (this._unknownBoundTextures) {\n this._unknownBoundTextures = !1;\n for (let i = 0; i < boundTextures.length; i++)\n boundTextures[i] === this.unknownTexture && this.bind(null, i);\n }\n for (let i = 0; i < boundTextures.length; i++)\n boundTextures[i] === texture && (this.currentLocation !== i && (gl.activeTexture(gl.TEXTURE0 + i), this.currentLocation = i), gl.bindTexture(texture.target, this.emptyTextures[texture.target].texture), boundTextures[i] = null);\n }\n /**\n * Ensures that current boundTextures all have FLOAT sampler type,\n * see {@link PIXI.SAMPLER_TYPES} for explanation.\n * @param maxTextures - number of locations to check\n */\n ensureSamplerType(maxTextures) {\n const { boundTextures, hasIntegerTextures, CONTEXT_UID } = this;\n if (hasIntegerTextures)\n for (let i = maxTextures - 1; i >= 0; --i) {\n const tex = boundTextures[i];\n tex && tex._glTextures[CONTEXT_UID].samplerType !== _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.SAMPLER_TYPES.FLOAT && this.renderer.texture.unbind(tex);\n }\n }\n /**\n * Initialize a texture\n * @private\n * @param texture - Texture to initialize\n */\n initTexture(texture) {\n const glTexture = new _GLTexture_mjs__WEBPACK_IMPORTED_MODULE_4__.GLTexture(this.gl.createTexture());\n return glTexture.dirtyId = -1, texture._glTextures[this.CONTEXT_UID] = glTexture, this.managedTextures.push(texture), texture.on(\"dispose\", this.destroyTexture, this), glTexture;\n }\n initTextureType(texture, glTexture) {\n glTexture.internalFormat = this.internalFormats[texture.type]?.[texture.format] ?? texture.format, glTexture.samplerType = this.samplerTypes[glTexture.internalFormat] ?? _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.SAMPLER_TYPES.FLOAT, this.webGLVersion === 2 && texture.type === _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.TYPES.HALF_FLOAT ? glTexture.type = this.gl.HALF_FLOAT : glTexture.type = texture.type;\n }\n /**\n * Update a texture\n * @private\n * @param {PIXI.BaseTexture} texture - Texture to initialize\n */\n updateTexture(texture) {\n const glTexture = texture._glTextures[this.CONTEXT_UID];\n if (!glTexture)\n return;\n const renderer = this.renderer;\n if (this.initTextureType(texture, glTexture), texture.resource?.upload(renderer, texture, glTexture))\n glTexture.samplerType !== _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.SAMPLER_TYPES.FLOAT && (this.hasIntegerTextures = !0);\n else {\n const width = texture.realWidth, height = texture.realHeight, gl = renderer.gl;\n (glTexture.width !== width || glTexture.height !== height || glTexture.dirtyId < 0) && (glTexture.width = width, glTexture.height = height, gl.texImage2D(\n texture.target,\n 0,\n glTexture.internalFormat,\n width,\n height,\n 0,\n texture.format,\n glTexture.type,\n null\n ));\n }\n texture.dirtyStyleId !== glTexture.dirtyStyleId && this.updateTextureStyle(texture), glTexture.dirtyId = texture.dirtyId;\n }\n /**\n * Deletes the texture from WebGL\n * @private\n * @param texture - the texture to destroy\n * @param [skipRemove=false] - Whether to skip removing the texture from the TextureManager.\n */\n destroyTexture(texture, skipRemove) {\n const { gl } = this;\n if (texture = texture.castToBaseTexture(), texture._glTextures[this.CONTEXT_UID] && (this.unbind(texture), gl.deleteTexture(texture._glTextures[this.CONTEXT_UID].texture), texture.off(\"dispose\", this.destroyTexture, this), delete texture._glTextures[this.CONTEXT_UID], !skipRemove)) {\n const i = this.managedTextures.indexOf(texture);\n i !== -1 && (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_2__.removeItems)(this.managedTextures, i, 1);\n }\n }\n /**\n * Update texture style such as mipmap flag\n * @private\n * @param {PIXI.BaseTexture} texture - Texture to update\n */\n updateTextureStyle(texture) {\n const glTexture = texture._glTextures[this.CONTEXT_UID];\n glTexture && ((texture.mipmap === _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MIPMAP_MODES.POW2 || this.webGLVersion !== 2) && !texture.isPowerOfTwo ? glTexture.mipmap = !1 : glTexture.mipmap = texture.mipmap >= 1, this.webGLVersion !== 2 && !texture.isPowerOfTwo ? glTexture.wrapMode = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.WRAP_MODES.CLAMP : glTexture.wrapMode = texture.wrapMode, texture.resource?.style(this.renderer, texture, glTexture) || this.setStyle(texture, glTexture), glTexture.dirtyStyleId = texture.dirtyStyleId);\n }\n /**\n * Set style for texture\n * @private\n * @param texture - Texture to update\n * @param glTexture\n */\n setStyle(texture, glTexture) {\n const gl = this.gl;\n if (glTexture.mipmap && texture.mipmap !== _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.MIPMAP_MODES.ON_MANUAL && gl.generateMipmap(texture.target), gl.texParameteri(texture.target, gl.TEXTURE_WRAP_S, glTexture.wrapMode), gl.texParameteri(texture.target, gl.TEXTURE_WRAP_T, glTexture.wrapMode), glTexture.mipmap) {\n gl.texParameteri(texture.target, gl.TEXTURE_MIN_FILTER, texture.scaleMode === _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.SCALE_MODES.LINEAR ? gl.LINEAR_MIPMAP_LINEAR : gl.NEAREST_MIPMAP_NEAREST);\n const anisotropicExt = this.renderer.context.extensions.anisotropicFiltering;\n if (anisotropicExt && texture.anisotropicLevel > 0 && texture.scaleMode === _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.SCALE_MODES.LINEAR) {\n const level = Math.min(texture.anisotropicLevel, gl.getParameter(anisotropicExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT));\n gl.texParameterf(texture.target, anisotropicExt.TEXTURE_MAX_ANISOTROPY_EXT, level);\n }\n } else\n gl.texParameteri(texture.target, gl.TEXTURE_MIN_FILTER, texture.scaleMode === _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.SCALE_MODES.LINEAR ? gl.LINEAR : gl.NEAREST);\n gl.texParameteri(texture.target, gl.TEXTURE_MAG_FILTER, texture.scaleMode === _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.SCALE_MODES.LINEAR ? gl.LINEAR : gl.NEAREST);\n }\n destroy() {\n this.renderer = null;\n }\n}\nTextureSystem.extension = {\n type: _pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.ExtensionType.RendererSystem,\n name: \"texture\"\n};\n_pixi_extensions__WEBPACK_IMPORTED_MODULE_1__.extensions.add(TextureSystem);\n\n//# sourceMappingURL=TextureSystem.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/textures/TextureSystem.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/textures/TextureUvs.mjs":
-/*!*************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/textures/TextureUvs.mjs ***!
- \*************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TextureUvs: () => (/* binding */ TextureUvs)\n/* harmony export */ });\n/* harmony import */ var _pixi_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/math */ \"./node_modules/@pixi/math/lib/index.mjs\");\n\nclass TextureUvs {\n constructor() {\n this.x0 = 0, this.y0 = 0, this.x1 = 1, this.y1 = 0, this.x2 = 1, this.y2 = 1, this.x3 = 0, this.y3 = 1, this.uvsFloat32 = new Float32Array(8);\n }\n /**\n * Sets the texture Uvs based on the given frame information.\n * @protected\n * @param frame - The frame of the texture\n * @param baseFrame - The base frame of the texture\n * @param rotate - Rotation of frame, see {@link PIXI.groupD8}\n */\n set(frame, baseFrame, rotate) {\n const tw = baseFrame.width, th = baseFrame.height;\n if (rotate) {\n const w2 = frame.width / 2 / tw, h2 = frame.height / 2 / th, cX = frame.x / tw + w2, cY = frame.y / th + h2;\n rotate = _pixi_math__WEBPACK_IMPORTED_MODULE_0__.groupD8.add(rotate, _pixi_math__WEBPACK_IMPORTED_MODULE_0__.groupD8.NW), this.x0 = cX + w2 * _pixi_math__WEBPACK_IMPORTED_MODULE_0__.groupD8.uX(rotate), this.y0 = cY + h2 * _pixi_math__WEBPACK_IMPORTED_MODULE_0__.groupD8.uY(rotate), rotate = _pixi_math__WEBPACK_IMPORTED_MODULE_0__.groupD8.add(rotate, 2), this.x1 = cX + w2 * _pixi_math__WEBPACK_IMPORTED_MODULE_0__.groupD8.uX(rotate), this.y1 = cY + h2 * _pixi_math__WEBPACK_IMPORTED_MODULE_0__.groupD8.uY(rotate), rotate = _pixi_math__WEBPACK_IMPORTED_MODULE_0__.groupD8.add(rotate, 2), this.x2 = cX + w2 * _pixi_math__WEBPACK_IMPORTED_MODULE_0__.groupD8.uX(rotate), this.y2 = cY + h2 * _pixi_math__WEBPACK_IMPORTED_MODULE_0__.groupD8.uY(rotate), rotate = _pixi_math__WEBPACK_IMPORTED_MODULE_0__.groupD8.add(rotate, 2), this.x3 = cX + w2 * _pixi_math__WEBPACK_IMPORTED_MODULE_0__.groupD8.uX(rotate), this.y3 = cY + h2 * _pixi_math__WEBPACK_IMPORTED_MODULE_0__.groupD8.uY(rotate);\n } else\n this.x0 = frame.x / tw, this.y0 = frame.y / th, this.x1 = (frame.x + frame.width) / tw, this.y1 = frame.y / th, this.x2 = (frame.x + frame.width) / tw, this.y2 = (frame.y + frame.height) / th, this.x3 = frame.x / tw, this.y3 = (frame.y + frame.height) / th;\n this.uvsFloat32[0] = this.x0, this.uvsFloat32[1] = this.y0, this.uvsFloat32[2] = this.x1, this.uvsFloat32[3] = this.y1, this.uvsFloat32[4] = this.x2, this.uvsFloat32[5] = this.y2, this.uvsFloat32[6] = this.x3, this.uvsFloat32[7] = this.y3;\n }\n}\nTextureUvs.prototype.toString = function() {\n return `[@pixi/core:TextureUvs x0=${this.x0} y0=${this.y0} x1=${this.x1} y1=${this.y1} x2=${this.x2} y2=${this.y2} x3=${this.x3} y3=${this.y3}]`;\n};\n\n//# sourceMappingURL=TextureUvs.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/textures/TextureUvs.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/textures/resources/AbstractMultiResource.mjs":
-/*!**********************************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/textures/resources/AbstractMultiResource.mjs ***!
- \**********************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AbstractMultiResource: () => (/* binding */ AbstractMultiResource)\n/* harmony export */ });\n/* harmony import */ var _BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../BaseTexture.mjs */ \"./node_modules/@pixi/core/lib/textures/BaseTexture.mjs\");\n/* harmony import */ var _autoDetectResource_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./autoDetectResource.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/autoDetectResource.mjs\");\n/* harmony import */ var _Resource_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Resource.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/Resource.mjs\");\n\n\n\nclass AbstractMultiResource extends _Resource_mjs__WEBPACK_IMPORTED_MODULE_2__.Resource {\n /**\n * @param length\n * @param options - Options to for Resource constructor\n * @param {number} [options.width] - Width of the resource\n * @param {number} [options.height] - Height of the resource\n */\n constructor(length, options) {\n const { width, height } = options || {};\n super(width, height), this.items = [], this.itemDirtyIds = [];\n for (let i = 0; i < length; i++) {\n const partTexture = new _BaseTexture_mjs__WEBPACK_IMPORTED_MODULE_0__.BaseTexture();\n this.items.push(partTexture), this.itemDirtyIds.push(-2);\n }\n this.length = length, this._load = null, this.baseTexture = null;\n }\n /**\n * Used from ArrayResource and CubeResource constructors.\n * @param resources - Can be resources, image elements, canvas, etc. ,\n * length should be same as constructor length\n * @param options - Detect options for resources\n */\n initFromArray(resources, options) {\n for (let i = 0; i < this.length; i++)\n resources[i] && (resources[i].castToBaseTexture ? this.addBaseTextureAt(resources[i].castToBaseTexture(), i) : resources[i] instanceof _Resource_mjs__WEBPACK_IMPORTED_MODULE_2__.Resource ? this.addResourceAt(resources[i], i) : this.addResourceAt((0,_autoDetectResource_mjs__WEBPACK_IMPORTED_MODULE_1__.autoDetectResource)(resources[i], options), i));\n }\n /** Destroy this BaseImageResource. */\n dispose() {\n for (let i = 0, len = this.length; i < len; i++)\n this.items[i].destroy();\n this.items = null, this.itemDirtyIds = null, this._load = null;\n }\n /**\n * Set a resource by ID\n * @param resource\n * @param index - Zero-based index of resource to set\n * @returns - Instance for chaining\n */\n addResourceAt(resource, index) {\n if (!this.items[index])\n throw new Error(`Index ${index} is out of bounds`);\n return resource.valid && !this.valid && this.resize(resource.width, resource.height), this.items[index].setResource(resource), this;\n }\n /**\n * Set the parent base texture.\n * @param baseTexture\n */\n bind(baseTexture) {\n if (this.baseTexture !== null)\n throw new Error(\"Only one base texture per TextureArray is allowed\");\n super.bind(baseTexture);\n for (let i = 0; i < this.length; i++)\n this.items[i].parentTextureArray = baseTexture, this.items[i].on(\"update\", baseTexture.update, baseTexture);\n }\n /**\n * Unset the parent base texture.\n * @param baseTexture\n */\n unbind(baseTexture) {\n super.unbind(baseTexture);\n for (let i = 0; i < this.length; i++)\n this.items[i].parentTextureArray = null, this.items[i].off(\"update\", baseTexture.update, baseTexture);\n }\n /**\n * Load all the resources simultaneously\n * @returns - When load is resolved\n */\n load() {\n if (this._load)\n return this._load;\n const promises = this.items.map((item) => item.resource).filter((item) => item).map((item) => item.load());\n return this._load = Promise.all(promises).then(\n () => {\n const { realWidth, realHeight } = this.items[0];\n return this.resize(realWidth, realHeight), this.update(), Promise.resolve(this);\n }\n ), this._load;\n }\n}\n\n//# sourceMappingURL=AbstractMultiResource.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/textures/resources/AbstractMultiResource.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/textures/resources/ArrayResource.mjs":
-/*!**************************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/textures/resources/ArrayResource.mjs ***!
- \**************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ArrayResource: () => (/* binding */ ArrayResource)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _AbstractMultiResource_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AbstractMultiResource.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/AbstractMultiResource.mjs\");\n\n\nclass ArrayResource extends _AbstractMultiResource_mjs__WEBPACK_IMPORTED_MODULE_1__.AbstractMultiResource {\n /**\n * @param source - Number of items in array or the collection\n * of image URLs to use. Can also be resources, image elements, canvas, etc.\n * @param options - Options to apply to {@link PIXI.autoDetectResource}\n * @param {number} [options.width] - Width of the resource\n * @param {number} [options.height] - Height of the resource\n */\n constructor(source, options) {\n const { width, height } = options || {};\n let urls, length;\n Array.isArray(source) ? (urls = source, length = source.length) : length = source, super(length, { width, height }), urls && this.initFromArray(urls, options);\n }\n /**\n * Set a baseTexture by ID,\n * ArrayResource just takes resource from it, nothing more\n * @param baseTexture\n * @param index - Zero-based index of resource to set\n * @returns - Instance for chaining\n */\n addBaseTextureAt(baseTexture, index) {\n if (baseTexture.resource)\n this.addResourceAt(baseTexture.resource, index);\n else\n throw new Error(\"ArrayResource does not support RenderTexture\");\n return this;\n }\n /**\n * Add binding\n * @param baseTexture\n */\n bind(baseTexture) {\n super.bind(baseTexture), baseTexture.target = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.TARGETS.TEXTURE_2D_ARRAY;\n }\n /**\n * Upload the resources to the GPU.\n * @param renderer\n * @param texture\n * @param glTexture\n * @returns - whether texture was uploaded\n */\n upload(renderer, texture, glTexture) {\n const { length, itemDirtyIds, items } = this, { gl } = renderer;\n glTexture.dirtyId < 0 && gl.texImage3D(\n gl.TEXTURE_2D_ARRAY,\n 0,\n glTexture.internalFormat,\n this._width,\n this._height,\n length,\n 0,\n texture.format,\n glTexture.type,\n null\n );\n for (let i = 0; i < length; i++) {\n const item = items[i];\n itemDirtyIds[i] < item.dirtyId && (itemDirtyIds[i] = item.dirtyId, item.valid && gl.texSubImage3D(\n gl.TEXTURE_2D_ARRAY,\n 0,\n 0,\n // xoffset\n 0,\n // yoffset\n i,\n // zoffset\n item.resource.width,\n item.resource.height,\n 1,\n texture.format,\n glTexture.type,\n item.resource.source\n ));\n }\n return !0;\n }\n}\n\n//# sourceMappingURL=ArrayResource.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/textures/resources/ArrayResource.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/textures/resources/BaseImageResource.mjs":
-/*!******************************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/textures/resources/BaseImageResource.mjs ***!
- \******************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BaseImageResource: () => (/* binding */ BaseImageResource)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _pixi_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/utils */ \"./node_modules/@pixi/utils/lib/index.mjs\");\n/* harmony import */ var _Resource_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Resource.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/Resource.mjs\");\n\n\n\nclass BaseImageResource extends _Resource_mjs__WEBPACK_IMPORTED_MODULE_2__.Resource {\n /**\n * @param {HTMLImageElement|HTMLVideoElement|ImageBitmap|PIXI.ICanvas} source\n */\n constructor(source) {\n const sourceAny = source, width = sourceAny.naturalWidth || sourceAny.videoWidth || sourceAny.width, height = sourceAny.naturalHeight || sourceAny.videoHeight || sourceAny.height;\n super(width, height), this.source = source, this.noSubImage = !1;\n }\n /**\n * Set cross origin based detecting the url and the crossorigin\n * @param element - Element to apply crossOrigin\n * @param url - URL to check\n * @param crossorigin - Cross origin value to use\n */\n static crossOrigin(element, url, crossorigin) {\n crossorigin === void 0 && !url.startsWith(\"data:\") ? element.crossOrigin = (0,_pixi_utils__WEBPACK_IMPORTED_MODULE_1__.determineCrossOrigin)(url) : crossorigin !== !1 && (element.crossOrigin = typeof crossorigin == \"string\" ? crossorigin : \"anonymous\");\n }\n /**\n * Upload the texture to the GPU.\n * @param renderer - Upload to the renderer\n * @param baseTexture - Reference to parent texture\n * @param glTexture\n * @param {HTMLImageElement|HTMLVideoElement|ImageBitmap|PIXI.ICanvas} [source] - (optional)\n * @returns - true is success\n */\n upload(renderer, baseTexture, glTexture, source) {\n const gl = renderer.gl, width = baseTexture.realWidth, height = baseTexture.realHeight;\n if (source = source || this.source, typeof HTMLImageElement < \"u\" && source instanceof HTMLImageElement) {\n if (!source.complete || source.naturalWidth === 0)\n return !1;\n } else if (typeof HTMLVideoElement < \"u\" && source instanceof HTMLVideoElement && source.readyState <= 1)\n return !1;\n return gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, baseTexture.alphaMode === _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.ALPHA_MODES.UNPACK), !this.noSubImage && baseTexture.target === gl.TEXTURE_2D && glTexture.width === width && glTexture.height === height ? gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, baseTexture.format, glTexture.type, source) : (glTexture.width = width, glTexture.height = height, gl.texImage2D(baseTexture.target, 0, glTexture.internalFormat, baseTexture.format, glTexture.type, source)), !0;\n }\n /**\n * Checks if source width/height was changed, resize can cause extra baseTexture update.\n * Triggers one update in any case.\n */\n update() {\n if (this.destroyed)\n return;\n const source = this.source, width = source.naturalWidth || source.videoWidth || source.width, height = source.naturalHeight || source.videoHeight || source.height;\n this.resize(width, height), super.update();\n }\n /** Destroy this {@link PIXI.BaseImageResource} */\n dispose() {\n this.source = null;\n }\n}\n\n//# sourceMappingURL=BaseImageResource.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/textures/resources/BaseImageResource.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/textures/resources/BufferResource.mjs":
-/*!***************************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/textures/resources/BufferResource.mjs ***!
- \***************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BufferResource: () => (/* binding */ BufferResource)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _Resource_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Resource.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/Resource.mjs\");\n\n\nclass BufferResource extends _Resource_mjs__WEBPACK_IMPORTED_MODULE_1__.Resource {\n /**\n * @param source - Source buffer\n * @param options - Options\n * @param {number} options.width - Width of the texture\n * @param {number} options.height - Height of the texture\n * @param {1|2|4|8} [options.unpackAlignment=4] - The alignment of the pixel rows.\n */\n constructor(source, options) {\n const { width, height } = options || {};\n if (!width || !height)\n throw new Error(\"BufferResource width or height invalid\");\n super(width, height), this.data = source, this.unpackAlignment = options.unpackAlignment ?? 4;\n }\n /**\n * Upload the texture to the GPU.\n * @param renderer - Upload to the renderer\n * @param baseTexture - Reference to parent texture\n * @param glTexture - glTexture\n * @returns - true is success\n */\n upload(renderer, baseTexture, glTexture) {\n const gl = renderer.gl;\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, this.unpackAlignment), gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, baseTexture.alphaMode === _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.ALPHA_MODES.UNPACK);\n const width = baseTexture.realWidth, height = baseTexture.realHeight;\n return glTexture.width === width && glTexture.height === height ? gl.texSubImage2D(\n baseTexture.target,\n 0,\n 0,\n 0,\n width,\n height,\n baseTexture.format,\n glTexture.type,\n this.data\n ) : (glTexture.width = width, glTexture.height = height, gl.texImage2D(\n baseTexture.target,\n 0,\n glTexture.internalFormat,\n width,\n height,\n 0,\n baseTexture.format,\n glTexture.type,\n this.data\n )), !0;\n }\n /** Destroy and don't use after this. */\n dispose() {\n this.data = null;\n }\n /**\n * Used to auto-detect the type of resource.\n * @param {*} source - The source object\n * @returns {boolean} `true` if buffer source\n */\n static test(source) {\n return source === null || source instanceof Int8Array || source instanceof Uint8Array || source instanceof Uint8ClampedArray || source instanceof Int16Array || source instanceof Uint16Array || source instanceof Int32Array || source instanceof Uint32Array || source instanceof Float32Array;\n }\n}\n\n//# sourceMappingURL=BufferResource.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/textures/resources/BufferResource.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/textures/resources/CanvasResource.mjs":
-/*!***************************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/textures/resources/CanvasResource.mjs ***!
- \***************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CanvasResource: () => (/* binding */ CanvasResource)\n/* harmony export */ });\n/* harmony import */ var _BaseImageResource_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BaseImageResource.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/BaseImageResource.mjs\");\n\nclass CanvasResource extends _BaseImageResource_mjs__WEBPACK_IMPORTED_MODULE_0__.BaseImageResource {\n /**\n * @param source - Canvas element to use\n */\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(source) {\n super(source);\n }\n /**\n * Used to auto-detect the type of resource.\n * @param {*} source - The source object\n * @returns {boolean} `true` if source is HTMLCanvasElement or OffscreenCanvas\n */\n static test(source) {\n const { OffscreenCanvas } = globalThis;\n return OffscreenCanvas && source instanceof OffscreenCanvas ? !0 : globalThis.HTMLCanvasElement && source instanceof HTMLCanvasElement;\n }\n}\n\n//# sourceMappingURL=CanvasResource.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/textures/resources/CanvasResource.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/textures/resources/CubeResource.mjs":
-/*!*************************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/textures/resources/CubeResource.mjs ***!
- \*************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CubeResource: () => (/* binding */ CubeResource)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _AbstractMultiResource_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AbstractMultiResource.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/AbstractMultiResource.mjs\");\n\n\nconst _CubeResource = class _CubeResource2 extends _AbstractMultiResource_mjs__WEBPACK_IMPORTED_MODULE_1__.AbstractMultiResource {\n /**\n * @param {Array} [source] - Collection of URLs or resources\n * to use as the sides of the cube.\n * @param options - ImageResource options\n * @param {number} [options.width] - Width of resource\n * @param {number} [options.height] - Height of resource\n * @param {number} [options.autoLoad=true] - Whether to auto-load resources\n * @param {number} [options.linkBaseTexture=true] - In case BaseTextures are supplied,\n * whether to copy them or use\n */\n constructor(source, options) {\n const { width, height, autoLoad, linkBaseTexture } = options || {};\n if (source && source.length !== _CubeResource2.SIDES)\n throw new Error(`Invalid length. Got ${source.length}, expected 6`);\n super(6, { width, height });\n for (let i = 0; i < _CubeResource2.SIDES; i++)\n this.items[i].target = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.TARGETS.TEXTURE_CUBE_MAP_POSITIVE_X + i;\n this.linkBaseTexture = linkBaseTexture !== !1, source && this.initFromArray(source, options), autoLoad !== !1 && this.load();\n }\n /**\n * Add binding.\n * @param baseTexture - parent base texture\n */\n bind(baseTexture) {\n super.bind(baseTexture), baseTexture.target = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.TARGETS.TEXTURE_CUBE_MAP;\n }\n addBaseTextureAt(baseTexture, index, linkBaseTexture) {\n if (linkBaseTexture === void 0 && (linkBaseTexture = this.linkBaseTexture), !this.items[index])\n throw new Error(`Index ${index} is out of bounds`);\n if (!this.linkBaseTexture || baseTexture.parentTextureArray || Object.keys(baseTexture._glTextures).length > 0)\n if (baseTexture.resource)\n this.addResourceAt(baseTexture.resource, index);\n else\n throw new Error(\"CubeResource does not support copying of renderTexture.\");\n else\n baseTexture.target = _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.TARGETS.TEXTURE_CUBE_MAP_POSITIVE_X + index, baseTexture.parentTextureArray = this.baseTexture, this.items[index] = baseTexture;\n return baseTexture.valid && !this.valid && this.resize(baseTexture.realWidth, baseTexture.realHeight), this.items[index] = baseTexture, this;\n }\n /**\n * Upload the resource\n * @param renderer\n * @param _baseTexture\n * @param glTexture\n * @returns {boolean} true is success\n */\n upload(renderer, _baseTexture, glTexture) {\n const dirty = this.itemDirtyIds;\n for (let i = 0; i < _CubeResource2.SIDES; i++) {\n const side = this.items[i];\n (dirty[i] < side.dirtyId || glTexture.dirtyId < _baseTexture.dirtyId) && (side.valid && side.resource ? (side.resource.upload(renderer, side, glTexture), dirty[i] = side.dirtyId) : dirty[i] < -1 && (renderer.gl.texImage2D(\n side.target,\n 0,\n glTexture.internalFormat,\n _baseTexture.realWidth,\n _baseTexture.realHeight,\n 0,\n _baseTexture.format,\n glTexture.type,\n null\n ), dirty[i] = -1));\n }\n return !0;\n }\n /**\n * Used to auto-detect the type of resource.\n * @param {*} source - The source object\n * @returns {boolean} `true` if source is an array of 6 elements\n */\n static test(source) {\n return Array.isArray(source) && source.length === _CubeResource2.SIDES;\n }\n};\n_CubeResource.SIDES = 6;\nlet CubeResource = _CubeResource;\n\n//# sourceMappingURL=CubeResource.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/textures/resources/CubeResource.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/textures/resources/ImageBitmapResource.mjs":
-/*!********************************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/textures/resources/ImageBitmapResource.mjs ***!
- \********************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ImageBitmapResource: () => (/* binding */ ImageBitmapResource)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _pixi_settings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/settings */ \"./node_modules/@pixi/settings/lib/index.mjs\");\n/* harmony import */ var _BaseImageResource_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./BaseImageResource.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/BaseImageResource.mjs\");\n\n\n\nclass ImageBitmapResource extends _BaseImageResource_mjs__WEBPACK_IMPORTED_MODULE_2__.BaseImageResource {\n /**\n * @param source - ImageBitmap or URL to use.\n * @param options - Options to use.\n */\n constructor(source, options) {\n options = options || {};\n let baseSource, url, ownsImageBitmap;\n typeof source == \"string\" ? (baseSource = ImageBitmapResource.EMPTY, url = source, ownsImageBitmap = !0) : (baseSource = source, url = null, ownsImageBitmap = !1), super(baseSource), this.url = url, this.crossOrigin = options.crossOrigin ?? !0, this.alphaMode = typeof options.alphaMode == \"number\" ? options.alphaMode : null, this.ownsImageBitmap = options.ownsImageBitmap ?? ownsImageBitmap, this._load = null, options.autoLoad !== !1 && this.load();\n }\n load() {\n return this._load ? this._load : (this._load = new Promise(async (resolve, reject) => {\n if (this.url === null) {\n resolve(this);\n return;\n }\n try {\n const response = await _pixi_settings__WEBPACK_IMPORTED_MODULE_1__.settings.ADAPTER.fetch(this.url, {\n mode: this.crossOrigin ? \"cors\" : \"no-cors\"\n });\n if (this.destroyed)\n return;\n const imageBlob = await response.blob();\n if (this.destroyed)\n return;\n const imageBitmap = await createImageBitmap(imageBlob, {\n premultiplyAlpha: this.alphaMode === null || this.alphaMode === _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.ALPHA_MODES.UNPACK ? \"premultiply\" : \"none\"\n });\n if (this.destroyed) {\n imageBitmap.close();\n return;\n }\n this.source = imageBitmap, this.update(), resolve(this);\n } catch (e) {\n if (this.destroyed)\n return;\n reject(e), this.onError.emit(e);\n }\n }), this._load);\n }\n /**\n * Upload the image bitmap resource to GPU.\n * @param renderer - Renderer to upload to\n * @param baseTexture - BaseTexture for this resource\n * @param glTexture - GLTexture to use\n * @returns {boolean} true is success\n */\n upload(renderer, baseTexture, glTexture) {\n return this.source instanceof ImageBitmap ? (typeof this.alphaMode == \"number\" && (baseTexture.alphaMode = this.alphaMode), super.upload(renderer, baseTexture, glTexture)) : (this.load(), !1);\n }\n /** Destroys this resource. */\n dispose() {\n this.ownsImageBitmap && this.source instanceof ImageBitmap && this.source.close(), super.dispose(), this._load = null;\n }\n /**\n * Used to auto-detect the type of resource.\n * @param {*} source - The source object\n * @returns {boolean} `true` if current environment support ImageBitmap, and source is string or ImageBitmap\n */\n static test(source) {\n return !!globalThis.createImageBitmap && typeof ImageBitmap < \"u\" && (typeof source == \"string\" || source instanceof ImageBitmap);\n }\n /**\n * ImageBitmap cannot be created synchronously, so a empty placeholder canvas is needed when loading from URLs.\n * Only for internal usage.\n * @returns The cached placeholder canvas.\n */\n static get EMPTY() {\n return ImageBitmapResource._EMPTY = ImageBitmapResource._EMPTY ?? _pixi_settings__WEBPACK_IMPORTED_MODULE_1__.settings.ADAPTER.createCanvas(0, 0), ImageBitmapResource._EMPTY;\n }\n}\n\n//# sourceMappingURL=ImageBitmapResource.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/textures/resources/ImageBitmapResource.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/textures/resources/ImageResource.mjs":
-/*!**************************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/textures/resources/ImageResource.mjs ***!
- \**************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ImageResource: () => (/* binding */ ImageResource)\n/* harmony export */ });\n/* harmony import */ var _pixi_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/constants */ \"./node_modules/@pixi/constants/lib/index.mjs\");\n/* harmony import */ var _pixi_settings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/settings */ \"./node_modules/@pixi/settings/lib/index.mjs\");\n/* harmony import */ var _BaseImageResource_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./BaseImageResource.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/BaseImageResource.mjs\");\n\n\n\nclass ImageResource extends _BaseImageResource_mjs__WEBPACK_IMPORTED_MODULE_2__.BaseImageResource {\n /**\n * @param source - image source or URL\n * @param options\n * @param {boolean} [options.autoLoad=true] - start loading process\n * @param {boolean} [options.createBitmap=PIXI.settings.CREATE_IMAGE_BITMAP] - whether its required to create\n * a bitmap before upload\n * @param {boolean} [options.crossorigin=true] - Load image using cross origin\n * @param {PIXI.ALPHA_MODES} [options.alphaMode=PIXI.ALPHA_MODES.UNPACK] - Premultiply image alpha in bitmap\n */\n constructor(source, options) {\n if (options = options || {}, typeof source == \"string\") {\n const imageElement = new Image();\n _BaseImageResource_mjs__WEBPACK_IMPORTED_MODULE_2__.BaseImageResource.crossOrigin(imageElement, source, options.crossorigin), imageElement.src = source, source = imageElement;\n }\n super(source), !source.complete && this._width && this._height && (this._width = 0, this._height = 0), this.url = source.src, this._process = null, this.preserveBitmap = !1, this.createBitmap = (options.createBitmap ?? _pixi_settings__WEBPACK_IMPORTED_MODULE_1__.settings.CREATE_IMAGE_BITMAP) && !!globalThis.createImageBitmap, this.alphaMode = typeof options.alphaMode == \"number\" ? options.alphaMode : null, this.bitmap = null, this._load = null, options.autoLoad !== !1 && this.load();\n }\n /**\n * Returns a promise when image will be loaded and processed.\n * @param createBitmap - whether process image into bitmap\n */\n load(createBitmap) {\n return this._load ? this._load : (createBitmap !== void 0 && (this.createBitmap = createBitmap), this._load = new Promise((resolve, reject) => {\n const source = this.source;\n this.url = source.src;\n const completed = () => {\n this.destroyed || (source.onload = null, source.onerror = null, this.update(), this._load = null, this.createBitmap ? resolve(this.process()) : resolve(this));\n };\n source.complete && source.src ? completed() : (source.onload = completed, source.onerror = (event) => {\n reject(event), this.onError.emit(event);\n });\n }), this._load);\n }\n /**\n * Called when we need to convert image into BitmapImage.\n * Can be called multiple times, real promise is cached inside.\n * @returns - Cached promise to fill that bitmap\n */\n process() {\n const source = this.source;\n if (this._process !== null)\n return this._process;\n if (this.bitmap !== null || !globalThis.createImageBitmap)\n return Promise.resolve(this);\n const createImageBitmap = globalThis.createImageBitmap, cors = !source.crossOrigin || source.crossOrigin === \"anonymous\";\n return this._process = fetch(\n source.src,\n {\n mode: cors ? \"cors\" : \"no-cors\"\n }\n ).then((r) => r.blob()).then((blob) => createImageBitmap(\n blob,\n 0,\n 0,\n source.width,\n source.height,\n {\n premultiplyAlpha: this.alphaMode === null || this.alphaMode === _pixi_constants__WEBPACK_IMPORTED_MODULE_0__.ALPHA_MODES.UNPACK ? \"premultiply\" : \"none\"\n }\n )).then((bitmap) => this.destroyed ? Promise.reject() : (this.bitmap = bitmap, this.update(), this._process = null, Promise.resolve(this))), this._process;\n }\n /**\n * Upload the image resource to GPU.\n * @param renderer - Renderer to upload to\n * @param baseTexture - BaseTexture for this resource\n * @param glTexture - GLTexture to use\n * @returns {boolean} true is success\n */\n upload(renderer, baseTexture, glTexture) {\n if (typeof this.alphaMode == \"number\" && (baseTexture.alphaMode = this.alphaMode), !this.createBitmap)\n return super.upload(renderer, baseTexture, glTexture);\n if (!this.bitmap && (this.process(), !this.bitmap))\n return !1;\n if (super.upload(renderer, baseTexture, glTexture, this.bitmap), !this.preserveBitmap) {\n let flag = !0;\n const glTextures = baseTexture._glTextures;\n for (const key in glTextures) {\n const otherTex = glTextures[key];\n if (otherTex !== glTexture && otherTex.dirtyId !== baseTexture.dirtyId) {\n flag = !1;\n break;\n }\n }\n flag && (this.bitmap.close && this.bitmap.close(), this.bitmap = null);\n }\n return !0;\n }\n /** Destroys this resource. */\n dispose() {\n this.source.onload = null, this.source.onerror = null, super.dispose(), this.bitmap && (this.bitmap.close(), this.bitmap = null), this._process = null, this._load = null;\n }\n /**\n * Used to auto-detect the type of resource.\n * @param {*} source - The source object\n * @returns {boolean} `true` if current environment support HTMLImageElement, and source is string or HTMLImageElement\n */\n static test(source) {\n return typeof HTMLImageElement < \"u\" && (typeof source == \"string\" || source instanceof HTMLImageElement);\n }\n}\n\n//# sourceMappingURL=ImageResource.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/textures/resources/ImageResource.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/textures/resources/Resource.mjs":
-/*!*********************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/textures/resources/Resource.mjs ***!
- \*********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Resource: () => (/* binding */ Resource)\n/* harmony export */ });\n/* harmony import */ var _pixi_runner__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/runner */ \"./node_modules/@pixi/runner/lib/index.mjs\");\n\nclass Resource {\n /**\n * @param width - Width of the resource\n * @param height - Height of the resource\n */\n constructor(width = 0, height = 0) {\n this._width = width, this._height = height, this.destroyed = !1, this.internal = !1, this.onResize = new _pixi_runner__WEBPACK_IMPORTED_MODULE_0__.Runner(\"setRealSize\"), this.onUpdate = new _pixi_runner__WEBPACK_IMPORTED_MODULE_0__.Runner(\"update\"), this.onError = new _pixi_runner__WEBPACK_IMPORTED_MODULE_0__.Runner(\"onError\");\n }\n /**\n * Bind to a parent BaseTexture\n * @param baseTexture - Parent texture\n */\n bind(baseTexture) {\n this.onResize.add(baseTexture), this.onUpdate.add(baseTexture), this.onError.add(baseTexture), (this._width || this._height) && this.onResize.emit(this._width, this._height);\n }\n /**\n * Unbind to a parent BaseTexture\n * @param baseTexture - Parent texture\n */\n unbind(baseTexture) {\n this.onResize.remove(baseTexture), this.onUpdate.remove(baseTexture), this.onError.remove(baseTexture);\n }\n /**\n * Trigger a resize event\n * @param width - X dimension\n * @param height - Y dimension\n */\n resize(width, height) {\n (width !== this._width || height !== this._height) && (this._width = width, this._height = height, this.onResize.emit(width, height));\n }\n /**\n * Has been validated\n * @readonly\n */\n get valid() {\n return !!this._width && !!this._height;\n }\n /** Has been updated trigger event. */\n update() {\n this.destroyed || this.onUpdate.emit();\n }\n /**\n * This can be overridden to start preloading a resource\n * or do any other prepare step.\n * @protected\n * @returns Handle the validate event\n */\n load() {\n return Promise.resolve(this);\n }\n /**\n * The width of the resource.\n * @readonly\n */\n get width() {\n return this._width;\n }\n /**\n * The height of the resource.\n * @readonly\n */\n get height() {\n return this._height;\n }\n /**\n * Set the style, optional to override\n * @param _renderer - yeah, renderer!\n * @param _baseTexture - the texture\n * @param _glTexture - texture instance for this webgl context\n * @returns - `true` is success\n */\n style(_renderer, _baseTexture, _glTexture) {\n return !1;\n }\n /** Clean up anything, this happens when destroying is ready. */\n dispose() {\n }\n /**\n * Call when destroying resource, unbind any BaseTexture object\n * before calling this method, as reference counts are maintained\n * internally.\n */\n destroy() {\n this.destroyed || (this.destroyed = !0, this.dispose(), this.onError.removeAll(), this.onError = null, this.onResize.removeAll(), this.onResize = null, this.onUpdate.removeAll(), this.onUpdate = null);\n }\n /**\n * Abstract, used to auto-detect resource type.\n * @param {*} _source - The source object\n * @param {string} _extension - The extension of source, if set\n */\n static test(_source, _extension) {\n return !1;\n }\n}\n\n//# sourceMappingURL=Resource.mjs.map\n\n\n//# sourceURL=webpack://space_shooter/./node_modules/@pixi/core/lib/textures/resources/Resource.mjs?");
-
-/***/ }),
-
-/***/ "./node_modules/@pixi/core/lib/textures/resources/SVGResource.mjs":
-/*!************************************************************************!*\
- !*** ./node_modules/@pixi/core/lib/textures/resources/SVGResource.mjs ***!
- \************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SVGResource: () => (/* binding */ SVGResource)\n/* harmony export */ });\n/* harmony import */ var _pixi_settings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @pixi/settings */ \"./node_modules/@pixi/settings/lib/index.mjs\");\n/* harmony import */ var _pixi_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @pixi/utils */ \"./node_modules/@pixi/utils/lib/index.mjs\");\n/* harmony import */ var _BaseImageResource_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./BaseImageResource.mjs */ \"./node_modules/@pixi/core/lib/textures/resources/BaseImageResource.mjs\");\n\n\n\nconst _SVGResource = class _SVGResource2 extends _BaseImageResource_mjs__WEBPACK_IMPORTED_MODULE_2__.BaseImageResource {\n /**\n * @param sourceBase64 - Base64 encoded SVG element or URL for SVG file.\n * @param {object} [options] - Options to use\n * @param {number} [options.scale=1] - Scale to apply to SVG. Overridden by...\n * @param {number} [options.width] - Rasterize SVG this wide. Aspect ratio preserved if height not specified.\n * @param {number} [options.height] - Rasterize SVG this high. Aspect ratio preserved if width not specified.\n * @param {boolean} [options.autoLoad=true] - Start loading right away.\n */\n constructor(sourceBase64, options) {\n options = options || {}, super(_pixi_settings__WEBPACK_IMPORTED_MODULE_0__.settings.ADAPTER.createCanvas()), this._width = 0, this._height = 0, this.svg = sourceBase64, this.scale = options.scale || 1, this._overrideWidth = options.width, this._overrideHeight = options.height, this._resolve = null, this._crossorigin = options.crossorigin, this._load = null, options.autoLoad !== !1 && this.load();\n }\n load() {\n return this._load ? this._load : (this._load = new Promise((resolve) => {\n if (this._resolve = () => {\n this.update(), resolve(this);\n }, _SVGResource2.SVG_XML.test(this.svg.trim())) {\n if (!btoa)\n throw new Error(\"Your browser doesn't support base64 conversions.\");\n this.svg = `data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(this.svg)))}`;\n }\n this._loadSvg();\n }), this._load);\n }\n /** Loads an SVG image from `imageUrl` or `data URL`. */\n _loadSvg() {\n const tempImage = new Image();\n _BaseImageResource_mjs__WEBPACK_IMPORTED_MODULE_2__.BaseImageResource.crossOrigin(tempImage, this.svg, this._crossorigin), tempImage.src = this.svg, tempImage.onerror = (event) => {\n this._resolve && (tempImage.onerror = null, this.onError.emit(event));\n }, tempImage.onload = () => {\n if (!this._resolve)\n return;\n const svgWidth = tempImage.width, svgHeight = tempImage.height;\n if (!svgWidth || !svgHeight)\n throw new Error(\"The SVG image must have width and height defined (in pixels), canvas API needs them.\");\n let width = svgWidth * this.scale, height = svgHeight * this.scale;\n (this._overrideWidth || this._overrideHeight) && (width = this._overrideWidth || this._overrideHeight / svgHeight * svgWidth, height = this._overrideHeight || this._overrideWidth / svgWidth * svgHeight), width = Math.round(width), height = Math.round(height);\n const canvas = this.source;\n canvas.width = width, canvas.height = height, canvas._pixiId = `canvas_${(0,_pixi_utils__WEBPACK_IMPORTED_MODULE_1__.uid)()}`, canvas.getContext(\"2d\").drawImage(tempImage, 0, 0, svgWidth, svgHeight, 0, 0, width, height), this._resolve(), this._resolve = null;\n };\n }\n /**\n * Get size from an svg string using a regular expression.\n * @param svgString - a serialized svg element\n * @returns - image extension\n */\n static getSize(svgString) {\n const sizeMatch = _SVGResource2.SVG_SIZE.exec(svgString), size = {};\n return sizeMatch && (size[sizeMatch[1]] = Math.round(parseFloat(sizeMatch[3])), size[sizeMatch[5]] = Math.round(parseFloat(sizeMatch[7]))), size;\n }\n /** Destroys this texture. */\n dispose() {\n super.dispose(), this._resolve = null, this._crossorigin = null;\n }\n /**\n * Used to auto-detect the type of resource.\n * @param {*} source - The source object\n * @param {string} extension - The extension of source, if set\n * @returns {boolean} - If the source is a SVG source or data file\n */\n static test(source, extension) {\n return extension === \"svg\" || typeof source == \"string\" && source.startsWith(\"data:image/svg+xml\") || typeof source == \"string\" && _SVGResource2.SVG_XML.test(source);\n }\n // eslint-disable-line max-len\n};\n_SVGResource.SVG_XML = /^(<\\?xml[^?]+\\?>)?\\s*()]*-->)?\\s*\\