Index: frontend/node_modules/@babel/helper-create-class-features-plugin/LICENSE
===================================================================
--- frontend/node_modules/@babel/helper-create-class-features-plugin/LICENSE	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@babel/helper-create-class-features-plugin/LICENSE	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: frontend/node_modules/@babel/helper-create-class-features-plugin/README.md
===================================================================
--- frontend/node_modules/@babel/helper-create-class-features-plugin/README.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@babel/helper-create-class-features-plugin/README.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,19 @@
+# @babel/helper-create-class-features-plugin
+
+> Compile class public and private fields, private methods and decorators to ES6
+
+See our website [@babel/helper-create-class-features-plugin](https://babeljs.io/docs/babel-helper-create-class-features-plugin) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/helper-create-class-features-plugin
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-create-class-features-plugin
+```
Index: frontend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators-2018-09.js
===================================================================
--- frontend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators-2018-09.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators-2018-09.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,124 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.buildDecoratedClass = buildDecoratedClass;
+var _core = require("@babel/core");
+var _helperReplaceSupers = require("@babel/helper-replace-supers");
+function prop(key, value) {
+  if (!value) return null;
+  return _core.types.objectProperty(_core.types.identifier(key), value);
+}
+function method(key, body) {
+  return _core.types.objectMethod("method", _core.types.identifier(key), [], _core.types.blockStatement(body));
+}
+function takeDecorators(node) {
+  let result;
+  if (node.decorators && node.decorators.length > 0) {
+    result = _core.types.arrayExpression(node.decorators.map(decorator => decorator.expression));
+  }
+  node.decorators = undefined;
+  return result;
+}
+function getKey(node) {
+  if (node.computed) {
+    return node.key;
+  } else if (_core.types.isIdentifier(node.key)) {
+    return _core.types.stringLiteral(node.key.name);
+  } else {
+    return _core.types.stringLiteral(String(node.key.value));
+  }
+}
+function extractElementDescriptor(file, classRef, superRef, path) {
+  const isMethod = path.isClassMethod();
+  if (path.isPrivate()) {
+    throw path.buildCodeFrameError(`Private ${isMethod ? "methods" : "fields"} in decorated classes are not supported yet.`);
+  }
+  if (path.node.type === "ClassAccessorProperty") {
+    throw path.buildCodeFrameError(`Accessor properties are not supported in 2018-09 decorator transform, please specify { "version": "2021-12" } instead.`);
+  }
+  if (path.node.type === "StaticBlock") {
+    throw path.buildCodeFrameError(`Static blocks are not supported in 2018-09 decorator transform, please specify { "version": "2021-12" } instead.`);
+  }
+  const {
+    node,
+    scope
+  } = path;
+  if (!path.isTSDeclareMethod()) {
+    new _helperReplaceSupers.default({
+      methodPath: path,
+      objectRef: classRef,
+      superRef,
+      file,
+      refToPreserve: classRef
+    }).replace();
+  }
+  const properties = [prop("kind", _core.types.stringLiteral(_core.types.isClassMethod(node) ? node.kind : "field")), prop("decorators", takeDecorators(node)), prop("static", node.static && _core.types.booleanLiteral(true)), prop("key", getKey(node))].filter(Boolean);
+  if (isMethod) {
+    var _path$ensureFunctionN;
+    (_path$ensureFunctionN = path.ensureFunctionName) != null ? _path$ensureFunctionN : path.ensureFunctionName = require("@babel/traverse").NodePath.prototype.ensureFunctionName;
+    path.ensureFunctionName(false);
+    properties.push(prop("value", _core.types.toExpression(path.node)));
+  } else if (_core.types.isClassProperty(node) && node.value) {
+    properties.push(method("value", _core.template.statements.ast`return ${node.value}`));
+  } else {
+    properties.push(prop("value", scope.buildUndefinedNode()));
+  }
+  path.remove();
+  return _core.types.objectExpression(properties);
+}
+function addDecorateHelper(file) {
+  return file.addHelper("decorate");
+}
+function buildDecoratedClass(ref, path, elements, file) {
+  const {
+    node,
+    scope
+  } = path;
+  const initializeId = scope.generateUidIdentifier("initialize");
+  const isDeclaration = node.id && path.isDeclaration();
+  const isStrict = path.isInStrictMode();
+  const {
+    superClass
+  } = node;
+  node.type = "ClassDeclaration";
+  if (!node.id) node.id = _core.types.cloneNode(ref);
+  let superId;
+  if (superClass) {
+    superId = scope.generateUidIdentifierBasedOnNode(node.superClass, "super");
+    node.superClass = superId;
+  }
+  const classDecorators = takeDecorators(node);
+  const definitions = _core.types.arrayExpression(elements.filter(element => !element.node.abstract && element.node.type !== "TSIndexSignature").map(path => extractElementDescriptor(file, node.id, superId, path)));
+  const wrapperCall = _core.template.expression.ast`
+    ${addDecorateHelper(file)}(
+      ${classDecorators || _core.types.nullLiteral()},
+      function (${initializeId}, ${superClass ? _core.types.cloneNode(superId) : null}) {
+        ${node}
+        return { F: ${_core.types.cloneNode(node.id)}, d: ${definitions} };
+      },
+      ${superClass}
+    )
+  `;
+  if (!isStrict) {
+    wrapperCall.arguments[1].body.directives.push(_core.types.directive(_core.types.directiveLiteral("use strict")));
+  }
+  let replacement = wrapperCall;
+  let classPathDesc = "arguments.1.body.body.0";
+  if (isDeclaration) {
+    replacement = _core.template.statement.ast`let ${ref} = ${wrapperCall}`;
+    classPathDesc = "declarations.0.init." + classPathDesc;
+  }
+  return {
+    instanceNodes: [_core.template.statement.ast`
+        ${_core.types.cloneNode(initializeId)}(this)
+      `],
+    wrapClass(path) {
+      path.replaceWith(replacement);
+      return path.get(classPathDesc);
+    }
+  };
+}
+
+//# sourceMappingURL=decorators-2018-09.js.map
Index: frontend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators-2018-09.js.map
===================================================================
--- frontend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators-2018-09.js.map	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators-2018-09.js.map	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_core","require","_helperReplaceSupers","prop","key","value","t","objectProperty","identifier","method","body","objectMethod","blockStatement","takeDecorators","node","result","decorators","length","arrayExpression","map","decorator","expression","undefined","getKey","computed","isIdentifier","stringLiteral","name","String","extractElementDescriptor","file","classRef","superRef","path","isMethod","isClassMethod","isPrivate","buildCodeFrameError","type","scope","isTSDeclareMethod","ReplaceSupers","methodPath","objectRef","refToPreserve","replace","properties","kind","static","booleanLiteral","filter","Boolean","_path$ensureFunctionN","ensureFunctionName","NodePath","prototype","push","toExpression","isClassProperty","template","statements","ast","buildUndefinedNode","remove","objectExpression","addDecorateHelper","addHelper","buildDecoratedClass","ref","elements","initializeId","generateUidIdentifier","isDeclaration","id","isStrict","isInStrictMode","superClass","cloneNode","superId","generateUidIdentifierBasedOnNode","classDecorators","definitions","element","abstract","wrapperCall","nullLiteral","arguments","directives","directive","directiveLiteral","replacement","classPathDesc","statement","instanceNodes","wrapClass","replaceWith","get"],"sources":["../src/decorators-2018-09.ts"],"sourcesContent":["// TODO(Babel 8): Remove this file\nif (process.env.BABEL_8_BREAKING && process.env.IS_PUBLISH) {\n  throw new Error(\n    \"Internal Babel error: This file should only be loaded in Babel 7\",\n  );\n}\n\nimport { types as t, template } from \"@babel/core\";\nimport type { File, NodePath } from \"@babel/core\";\nimport ReplaceSupers from \"@babel/helper-replace-supers\";\n\ntype Decoratable = Extract<t.Node, { decorators?: t.Decorator[] | null }>;\n\nfunction prop(key: string, value?: t.Expression) {\n  if (!value) return null;\n  return t.objectProperty(t.identifier(key), value);\n}\n\nfunction method(key: string, body: t.Statement[]) {\n  return t.objectMethod(\n    \"method\",\n    t.identifier(key),\n    [],\n    t.blockStatement(body),\n  );\n}\n\nfunction takeDecorators(node: Decoratable) {\n  let result: t.ArrayExpression | undefined;\n  if (node.decorators && node.decorators.length > 0) {\n    result = t.arrayExpression(\n      node.decorators.map(decorator => decorator.expression),\n    );\n  }\n  node.decorators = undefined;\n  return result;\n}\n\ntype AcceptedElement = Exclude<ClassElement, t.TSIndexSignature>;\ntype SupportedElement = Exclude<\n  AcceptedElement,\n  | t.ClassPrivateMethod\n  | t.ClassPrivateProperty\n  | t.ClassAccessorProperty\n  | t.StaticBlock\n>;\n\nfunction getKey(node: SupportedElement) {\n  if (node.computed) {\n    return node.key;\n  } else if (t.isIdentifier(node.key)) {\n    return t.stringLiteral(node.key.name);\n  } else {\n    return t.stringLiteral(\n      String(\n        // A non-identifier non-computed key\n        (node.key as t.StringLiteral | t.NumericLiteral | t.BigIntLiteral)\n          .value,\n      ),\n    );\n  }\n}\n\nfunction extractElementDescriptor(\n  file: File,\n  classRef: t.Identifier,\n  superRef: t.Identifier,\n  path: NodePath<AcceptedElement>,\n) {\n  const isMethod = path.isClassMethod();\n  if (path.isPrivate()) {\n    throw path.buildCodeFrameError(\n      `Private ${\n        isMethod ? \"methods\" : \"fields\"\n      } in decorated classes are not supported yet.`,\n    );\n  }\n  if (path.node.type === \"ClassAccessorProperty\") {\n    throw path.buildCodeFrameError(\n      `Accessor properties are not supported in 2018-09 decorator transform, please specify { \"version\": \"2021-12\" } instead.`,\n    );\n  }\n  if (path.node.type === \"StaticBlock\") {\n    throw path.buildCodeFrameError(\n      `Static blocks are not supported in 2018-09 decorator transform, please specify { \"version\": \"2021-12\" } instead.`,\n    );\n  }\n\n  const { node, scope } = path as NodePath<SupportedElement>;\n\n  if (!path.isTSDeclareMethod()) {\n    new ReplaceSupers({\n      methodPath: path as NodePath<\n        Exclude<SupportedElement, t.TSDeclareMethod>\n      >,\n      objectRef: classRef,\n      superRef,\n      file,\n      refToPreserve: classRef,\n    }).replace();\n  }\n\n  const properties: t.ObjectExpression[\"properties\"] = [\n    prop(\"kind\", t.stringLiteral(t.isClassMethod(node) ? node.kind : \"field\")),\n    prop(\"decorators\", takeDecorators(node as Decoratable)),\n    prop(\"static\", node.static && t.booleanLiteral(true)),\n    prop(\"key\", getKey(node)),\n  ].filter(Boolean);\n\n  if (isMethod) {\n    if (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n      // polyfill when being run by an older Babel version\n      path.ensureFunctionName ??=\n        // eslint-disable-next-line no-restricted-globals\n        require(\"@babel/traverse\").NodePath.prototype.ensureFunctionName;\n    }\n    // @ts-expect-error path is a ClassMethod, that technically\n    // is not supported as it does not have an .id property\n    // This plugin will however then transform the ClassMethod\n    // to a function expression, so it's fine.\n    path.ensureFunctionName(false);\n\n    properties.push(prop(\"value\", t.toExpression(path.node)));\n  } else if (t.isClassProperty(node) && node.value) {\n    properties.push(\n      method(\"value\", template.statements.ast`return ${node.value}`),\n    );\n  } else {\n    properties.push(prop(\"value\", scope.buildUndefinedNode()));\n  }\n\n  path.remove();\n\n  return t.objectExpression(properties);\n}\n\nfunction addDecorateHelper(file: File) {\n  return file.addHelper(\"decorate\");\n}\n\ntype ClassElement = t.Class[\"body\"][\"body\"][number];\ntype ClassElementPath = NodePath<ClassElement>;\n\nexport function buildDecoratedClass(\n  ref: t.Identifier,\n  path: NodePath<t.Class>,\n  elements: ClassElementPath[],\n  file: File,\n) {\n  const { node, scope } = path;\n  const initializeId = scope.generateUidIdentifier(\"initialize\");\n  const isDeclaration = node.id && path.isDeclaration();\n  const isStrict = path.isInStrictMode();\n  const { superClass } = node;\n\n  node.type = \"ClassDeclaration\";\n  if (!node.id) node.id = t.cloneNode(ref);\n\n  let superId: t.Identifier;\n  if (superClass) {\n    superId = scope.generateUidIdentifierBasedOnNode(node.superClass, \"super\");\n    node.superClass = superId;\n  }\n\n  const classDecorators = takeDecorators(node);\n  const definitions = t.arrayExpression(\n    elements\n      .filter(\n        element =>\n          // @ts-expect-error Ignore TypeScript's abstract methods (see #10514)\n          !element.node.abstract && element.node.type !== \"TSIndexSignature\",\n      )\n      .map(path =>\n        extractElementDescriptor(\n          file,\n          node.id,\n          superId,\n          // @ts-expect-error TS can not exclude TSIndexSignature\n          path,\n        ),\n      ),\n  );\n\n  const wrapperCall = template.expression.ast`\n    ${addDecorateHelper(file)}(\n      ${classDecorators || t.nullLiteral()},\n      function (${initializeId}, ${superClass ? t.cloneNode(superId) : null}) {\n        ${node}\n        return { F: ${t.cloneNode(node.id)}, d: ${definitions} };\n      },\n      ${superClass}\n    )\n  ` as t.CallExpression & { arguments: [unknown, t.FunctionExpression] };\n\n  if (!isStrict) {\n    wrapperCall.arguments[1].body.directives.push(\n      t.directive(t.directiveLiteral(\"use strict\")),\n    );\n  }\n\n  let replacement: t.Node = wrapperCall;\n  let classPathDesc = \"arguments.1.body.body.0\";\n  if (isDeclaration) {\n    replacement = template.statement.ast`let ${ref} = ${wrapperCall}`;\n    classPathDesc = \"declarations.0.init.\" + classPathDesc;\n  }\n\n  return {\n    instanceNodes: [\n      template.statement.ast`\n        ${t.cloneNode(initializeId)}(this)\n      ` as t.ExpressionStatement,\n    ],\n    wrapClass(path: NodePath<t.Class>) {\n      path.replaceWith(replacement);\n      return path.get(classPathDesc) as NodePath;\n    },\n  };\n}\n"],"mappings":"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","ignoreList":[]}
Index: frontend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators.js
===================================================================
--- frontend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1312 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.buildNamedEvaluationVisitor = buildNamedEvaluationVisitor;
+exports.default = _default;
+exports.hasDecorators = hasDecorators;
+exports.hasOwnDecorators = hasOwnDecorators;
+var _core = require("@babel/core");
+var _helperReplaceSupers = require("@babel/helper-replace-supers");
+var _helperSkipTransparentExpressionWrappers = require("@babel/helper-skip-transparent-expression-wrappers");
+var _fields = require("./fields.js");
+var _misc = require("./misc.js");
+function hasOwnDecorators(node) {
+  var _node$decorators;
+  return !!((_node$decorators = node.decorators) != null && _node$decorators.length);
+}
+function hasDecorators(node) {
+  return hasOwnDecorators(node) || node.body.body.some(hasOwnDecorators);
+}
+function incrementId(id, idx = id.length - 1) {
+  if (idx === -1) {
+    id.unshift(65);
+    return;
+  }
+  const current = id[idx];
+  if (current === 90) {
+    id[idx] = 97;
+  } else if (current === 122) {
+    id[idx] = 65;
+    incrementId(id, idx - 1);
+  } else {
+    id[idx] = current + 1;
+  }
+}
+function createPrivateUidGeneratorForClass(classPath) {
+  const currentPrivateId = [];
+  const privateNames = new Set();
+  _core.types.traverseFast(classPath.node, node => {
+    if (_core.types.isPrivateName(node)) {
+      privateNames.add(node.id.name);
+    }
+  });
+  return () => {
+    let reifiedId;
+    do {
+      incrementId(currentPrivateId);
+      reifiedId = String.fromCharCode(...currentPrivateId);
+    } while (privateNames.has(reifiedId));
+    return _core.types.privateName(_core.types.identifier(reifiedId));
+  };
+}
+function createLazyPrivateUidGeneratorForClass(classPath) {
+  let generator;
+  return () => {
+    if (!generator) {
+      generator = createPrivateUidGeneratorForClass(classPath);
+    }
+    return generator();
+  };
+}
+function replaceClassWithVar(path, className) {
+  const id = path.node.id;
+  const scope = path.scope;
+  if (path.type === "ClassDeclaration") {
+    const className = id.name;
+    const varId = scope.generateUidIdentifierBasedOnNode(id);
+    const classId = _core.types.identifier(className);
+    scope.rename(className, varId.name);
+    path.get("id").replaceWith(classId);
+    return {
+      id: _core.types.cloneNode(varId),
+      path
+    };
+  } else {
+    let varId;
+    if (id) {
+      className = id.name;
+      varId = generateLetUidIdentifier(scope.parent, className);
+      scope.rename(className, varId.name);
+    } else {
+      varId = generateLetUidIdentifier(scope.parent, typeof className === "string" ? className : "decorated_class");
+    }
+    const newClassExpr = _core.types.classExpression(typeof className === "string" ? _core.types.identifier(className) : null, path.node.superClass, path.node.body);
+    const [newPath] = path.replaceWith(_core.types.sequenceExpression([newClassExpr, varId]));
+    return {
+      id: _core.types.cloneNode(varId),
+      path: newPath.get("expressions.0")
+    };
+  }
+}
+function generateClassProperty(key, value, isStatic) {
+  if (key.type === "PrivateName") {
+    return _core.types.classPrivateProperty(key, value, undefined, isStatic);
+  } else {
+    return _core.types.classProperty(key, value, undefined, undefined, isStatic);
+  }
+}
+function assignIdForAnonymousClass(path, className) {
+  if (!path.node.id) {
+    path.node.id = typeof className === "string" ? _core.types.identifier(className) : path.scope.generateUidIdentifier("Class");
+  }
+}
+function addProxyAccessorsFor(className, element, getterKey, setterKey, targetKey, isComputed, isStatic, version) {
+  const thisArg = (version === "2023-11" || version === "2023-05") && isStatic ? className : _core.types.thisExpression();
+  const getterBody = _core.types.blockStatement([_core.types.returnStatement(_core.types.memberExpression(_core.types.cloneNode(thisArg), _core.types.cloneNode(targetKey)))]);
+  const setterBody = _core.types.blockStatement([_core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.memberExpression(_core.types.cloneNode(thisArg), _core.types.cloneNode(targetKey)), _core.types.identifier("v")))]);
+  let getter, setter;
+  if (getterKey.type === "PrivateName") {
+    getter = _core.types.classPrivateMethod("get", getterKey, [], getterBody, isStatic);
+    setter = _core.types.classPrivateMethod("set", setterKey, [_core.types.identifier("v")], setterBody, isStatic);
+  } else {
+    getter = _core.types.classMethod("get", getterKey, [], getterBody, isComputed, isStatic);
+    setter = _core.types.classMethod("set", setterKey, [_core.types.identifier("v")], setterBody, isComputed, isStatic);
+  }
+  element.insertAfter(setter);
+  element.insertAfter(getter);
+}
+function extractProxyAccessorsFor(targetKey, version) {
+  if (version !== "2023-11" && version !== "2023-05" && version !== "2023-01") {
+    return [_core.template.expression.ast`
+        function () {
+          return this.${_core.types.cloneNode(targetKey)};
+        }
+      `, _core.template.expression.ast`
+        function (value) {
+          this.${_core.types.cloneNode(targetKey)} = value;
+        }
+      `];
+  }
+  return [_core.template.expression.ast`
+      o => o.${_core.types.cloneNode(targetKey)}
+    `, _core.template.expression.ast`
+      (o, v) => o.${_core.types.cloneNode(targetKey)} = v
+    `];
+}
+function getComputedKeyLastElement(path) {
+  path = (0, _helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers)(path);
+  if (path.isSequenceExpression()) {
+    const expressions = path.get("expressions");
+    return getComputedKeyLastElement(expressions[expressions.length - 1]);
+  }
+  return path;
+}
+function getComputedKeyMemoiser(path) {
+  const element = getComputedKeyLastElement(path);
+  if (element.isConstantExpression()) {
+    return _core.types.cloneNode(path.node);
+  } else if (element.isIdentifier() && path.scope.hasUid(element.node.name)) {
+    return _core.types.cloneNode(path.node);
+  } else if (element.isAssignmentExpression() && element.get("left").isIdentifier()) {
+    return _core.types.cloneNode(element.node.left);
+  } else {
+    throw new Error(`Internal Error: the computed key ${path.toString()} has not yet been memoised.`);
+  }
+}
+function prependExpressionsToComputedKey(expressions, fieldPath) {
+  const key = fieldPath.get("key");
+  if (key.isSequenceExpression()) {
+    expressions.push(...key.node.expressions);
+  } else {
+    expressions.push(key.node);
+  }
+  key.replaceWith(maybeSequenceExpression(expressions));
+}
+function appendExpressionsToComputedKey(expressions, fieldPath) {
+  const key = fieldPath.get("key");
+  const completion = getComputedKeyLastElement(key);
+  if (completion.isConstantExpression()) {
+    prependExpressionsToComputedKey(expressions, fieldPath);
+  } else {
+    const scopeParent = key.scope.parent;
+    const maybeAssignment = (0, _misc.memoiseComputedKey)(completion.node, scopeParent, scopeParent.generateUid("computedKey"));
+    if (!maybeAssignment) {
+      prependExpressionsToComputedKey(expressions, fieldPath);
+    } else {
+      const expressionSequence = [...expressions, _core.types.cloneNode(maybeAssignment.left)];
+      const completionParent = completion.parentPath;
+      if (completionParent.isSequenceExpression()) {
+        completionParent.pushContainer("expressions", expressionSequence);
+      } else {
+        completion.replaceWith(maybeSequenceExpression([_core.types.cloneNode(maybeAssignment), ...expressionSequence]));
+      }
+    }
+  }
+}
+function prependExpressionsToFieldInitializer(expressions, fieldPath) {
+  const initializer = fieldPath.get("value");
+  if (initializer.node) {
+    expressions.push(initializer.node);
+  } else if (expressions.length > 0) {
+    expressions[expressions.length - 1] = _core.types.unaryExpression("void", expressions[expressions.length - 1]);
+  }
+  initializer.replaceWith(maybeSequenceExpression(expressions));
+}
+function prependExpressionsToStaticBlock(expressions, blockPath) {
+  blockPath.unshiftContainer("body", _core.types.expressionStatement(maybeSequenceExpression(expressions)));
+}
+function prependExpressionsToConstructor(expressions, constructorPath) {
+  constructorPath.node.body.body.unshift(_core.types.expressionStatement(maybeSequenceExpression(expressions)));
+}
+function isProtoInitCallExpression(expression, protoInitCall) {
+  return _core.types.isCallExpression(expression) && _core.types.isIdentifier(expression.callee, {
+    name: protoInitCall.name
+  });
+}
+function optimizeSuperCallAndExpressions(expressions, protoInitLocal) {
+  if (protoInitLocal) {
+    if (expressions.length >= 2 && isProtoInitCallExpression(expressions[1], protoInitLocal)) {
+      const mergedSuperCall = _core.types.callExpression(_core.types.cloneNode(protoInitLocal), [expressions[0]]);
+      expressions.splice(0, 2, mergedSuperCall);
+    }
+    if (expressions.length >= 2 && _core.types.isThisExpression(expressions[expressions.length - 1]) && isProtoInitCallExpression(expressions[expressions.length - 2], protoInitLocal)) {
+      expressions.splice(expressions.length - 1, 1);
+    }
+  }
+  return maybeSequenceExpression(expressions);
+}
+function insertExpressionsAfterSuperCallAndOptimize(expressions, constructorPath, protoInitLocal) {
+  constructorPath.traverse({
+    CallExpression: {
+      exit(path) {
+        if (!path.get("callee").isSuper()) return;
+        const newNodes = [path.node, ...expressions.map(expr => _core.types.cloneNode(expr))];
+        if (path.isCompletionRecord()) {
+          newNodes.push(_core.types.thisExpression());
+        }
+        path.replaceWith(optimizeSuperCallAndExpressions(newNodes, protoInitLocal));
+        path.skip();
+      }
+    },
+    ClassMethod(path) {
+      if (path.node.kind === "constructor") {
+        path.skip();
+      }
+    }
+  });
+}
+function createConstructorFromExpressions(expressions, isDerivedClass) {
+  const body = [_core.types.expressionStatement(maybeSequenceExpression(expressions))];
+  if (isDerivedClass) {
+    body.unshift(_core.types.expressionStatement(_core.types.callExpression(_core.types.super(), [_core.types.spreadElement(_core.types.identifier("args"))])));
+  }
+  return _core.types.classMethod("constructor", _core.types.identifier("constructor"), isDerivedClass ? [_core.types.restElement(_core.types.identifier("args"))] : [], _core.types.blockStatement(body));
+}
+function createStaticBlockFromExpressions(expressions) {
+  return _core.types.staticBlock([_core.types.expressionStatement(maybeSequenceExpression(expressions))]);
+}
+const FIELD = 0;
+const ACCESSOR = 1;
+const METHOD = 2;
+const GETTER = 3;
+const SETTER = 4;
+const STATIC_OLD_VERSION = 5;
+const STATIC = 8;
+const DECORATORS_HAVE_THIS = 16;
+function getElementKind(element) {
+  switch (element.node.type) {
+    case "ClassProperty":
+    case "ClassPrivateProperty":
+      return FIELD;
+    case "ClassAccessorProperty":
+      return ACCESSOR;
+    case "ClassMethod":
+    case "ClassPrivateMethod":
+      if (element.node.kind === "get") {
+        return GETTER;
+      } else if (element.node.kind === "set") {
+        return SETTER;
+      } else {
+        return METHOD;
+      }
+  }
+}
+function toSortedDecoratorInfo(info) {
+  return [...info.filter(el => el.isStatic && el.kind >= ACCESSOR && el.kind <= SETTER), ...info.filter(el => !el.isStatic && el.kind >= ACCESSOR && el.kind <= SETTER), ...info.filter(el => el.isStatic && el.kind === FIELD), ...info.filter(el => !el.isStatic && el.kind === FIELD)];
+}
+function generateDecorationList(decorators, decoratorsThis, version) {
+  const decsCount = decorators.length;
+  const haveOneThis = decoratorsThis.some(Boolean);
+  const decs = [];
+  for (let i = 0; i < decsCount; i++) {
+    if ((version === "2023-11" || version === "2023-05") && haveOneThis) {
+      decs.push(decoratorsThis[i] || _core.types.unaryExpression("void", _core.types.numericLiteral(0)));
+    }
+    decs.push(decorators[i].expression);
+  }
+  return {
+    haveThis: haveOneThis,
+    decs
+  };
+}
+function generateDecorationExprs(decorationInfo, version) {
+  return _core.types.arrayExpression(decorationInfo.map(el => {
+    let flag = el.kind;
+    if (el.isStatic) {
+      flag += version === "2023-11" || version === "2023-05" ? STATIC : STATIC_OLD_VERSION;
+    }
+    if (el.decoratorsHaveThis) flag += DECORATORS_HAVE_THIS;
+    return _core.types.arrayExpression([el.decoratorsArray, _core.types.numericLiteral(flag), el.name, ...(el.privateMethods || [])]);
+  }));
+}
+function extractElementLocalAssignments(decorationInfo) {
+  const localIds = [];
+  for (const el of decorationInfo) {
+    const {
+      locals
+    } = el;
+    if (Array.isArray(locals)) {
+      localIds.push(...locals);
+    } else if (locals !== undefined) {
+      localIds.push(locals);
+    }
+  }
+  return localIds;
+}
+function addCallAccessorsFor(version, element, key, getId, setId, isStatic) {
+  element.insertAfter(_core.types.classPrivateMethod("get", _core.types.cloneNode(key), [], _core.types.blockStatement([_core.types.returnStatement(_core.types.callExpression(_core.types.cloneNode(getId), version === "2023-11" && isStatic ? [] : [_core.types.thisExpression()]))]), isStatic));
+  element.insertAfter(_core.types.classPrivateMethod("set", _core.types.cloneNode(key), [_core.types.identifier("v")], _core.types.blockStatement([_core.types.expressionStatement(_core.types.callExpression(_core.types.cloneNode(setId), version === "2023-11" && isStatic ? [_core.types.identifier("v")] : [_core.types.thisExpression(), _core.types.identifier("v")]))]), isStatic));
+}
+function movePrivateAccessor(element, key, methodLocalVar, isStatic) {
+  let params;
+  let block;
+  if (element.node.kind === "set") {
+    params = [_core.types.identifier("v")];
+    block = [_core.types.expressionStatement(_core.types.callExpression(methodLocalVar, [_core.types.thisExpression(), _core.types.identifier("v")]))];
+  } else {
+    params = [];
+    block = [_core.types.returnStatement(_core.types.callExpression(methodLocalVar, [_core.types.thisExpression()]))];
+  }
+  element.replaceWith(_core.types.classPrivateMethod(element.node.kind, _core.types.cloneNode(key), params, _core.types.blockStatement(block), isStatic));
+}
+function isClassDecoratableElementPath(path) {
+  const {
+    type
+  } = path;
+  return type !== "TSDeclareMethod" && type !== "TSIndexSignature" && type !== "StaticBlock";
+}
+function staticBlockToIIFE(block) {
+  return _core.types.callExpression(_core.types.arrowFunctionExpression([], _core.types.blockStatement(block.body)), []);
+}
+function staticBlockToFunctionClosure(block) {
+  return _core.types.functionExpression(null, [], _core.types.blockStatement(block.body));
+}
+function fieldInitializerToClosure(value) {
+  return _core.types.functionExpression(null, [], _core.types.blockStatement([_core.types.returnStatement(value)]));
+}
+function maybeSequenceExpression(exprs) {
+  if (exprs.length === 0) return _core.types.unaryExpression("void", _core.types.numericLiteral(0));
+  if (exprs.length === 1) return exprs[0];
+  return _core.types.sequenceExpression(exprs);
+}
+function createFunctionExpressionFromPrivateMethod(node) {
+  const {
+    params,
+    body,
+    generator: isGenerator,
+    async: isAsync
+  } = node;
+  return _core.types.functionExpression(undefined, params, body, isGenerator, isAsync);
+}
+function createSetFunctionNameCall(state, className) {
+  return _core.types.callExpression(state.addHelper("setFunctionName"), [_core.types.thisExpression(), className]);
+}
+function createToPropertyKeyCall(state, propertyKey) {
+  return _core.types.callExpression(state.addHelper("toPropertyKey"), [propertyKey]);
+}
+function createPrivateBrandCheckClosure(brandName) {
+  return _core.types.arrowFunctionExpression([_core.types.identifier("_")], _core.types.binaryExpression("in", _core.types.cloneNode(brandName), _core.types.identifier("_")));
+}
+function usesPrivateField(expression) {
+  try {
+    _core.types.traverseFast(expression, node => {
+      if (_core.types.isPrivateName(node)) {
+        throw null;
+      }
+    });
+    return false;
+  } catch (_unused) {
+    return true;
+  }
+}
+function convertToComputedKey(path) {
+  const {
+    node
+  } = path;
+  node.computed = true;
+  if (_core.types.isIdentifier(node.key)) {
+    node.key = _core.types.stringLiteral(node.key.name);
+  }
+}
+function hasInstancePrivateAccess(path, privateNames) {
+  let containsInstancePrivateAccess = false;
+  if (privateNames.length > 0) {
+    const privateNameVisitor = (0, _fields.privateNameVisitorFactory)({
+      PrivateName(path, state) {
+        if (state.privateNamesMap.has(path.node.id.name)) {
+          containsInstancePrivateAccess = true;
+          path.stop();
+        }
+      }
+    });
+    const privateNamesMap = new Map();
+    for (const name of privateNames) {
+      privateNamesMap.set(name, null);
+    }
+    path.traverse(privateNameVisitor, {
+      privateNamesMap: privateNamesMap
+    });
+  }
+  return containsInstancePrivateAccess;
+}
+function checkPrivateMethodUpdateError(path, decoratedPrivateMethods) {
+  const privateNameVisitor = (0, _fields.privateNameVisitorFactory)({
+    PrivateName(path, state) {
+      if (!state.privateNamesMap.has(path.node.id.name)) return;
+      const parentPath = path.parentPath;
+      const parentParentPath = parentPath.parentPath;
+      if (parentParentPath.node.type === "AssignmentExpression" && parentParentPath.node.left === parentPath.node || parentParentPath.node.type === "UpdateExpression" || parentParentPath.node.type === "RestElement" || parentParentPath.node.type === "ArrayPattern" || parentParentPath.node.type === "ObjectProperty" && parentParentPath.node.value === parentPath.node && parentParentPath.parentPath.type === "ObjectPattern" || parentParentPath.node.type === "ForOfStatement" && parentParentPath.node.left === parentPath.node) {
+        throw path.buildCodeFrameError(`Decorated private methods are read-only, but "#${path.node.id.name}" is updated via this expression.`);
+      }
+    }
+  });
+  const privateNamesMap = new Map();
+  for (const name of decoratedPrivateMethods) {
+    privateNamesMap.set(name, null);
+  }
+  path.traverse(privateNameVisitor, {
+    privateNamesMap: privateNamesMap
+  });
+}
+function transformClass(path, state, constantSuper, ignoreFunctionLength, className, propertyVisitor, version) {
+  var _path$node$id;
+  const body = path.get("body.body");
+  const classDecorators = path.node.decorators;
+  let hasElementDecorators = false;
+  let hasComputedKeysSideEffects = false;
+  let elemDecsUseFnContext = false;
+  const generateClassPrivateUid = createLazyPrivateUidGeneratorForClass(path);
+  const classAssignments = [];
+  const scopeParent = path.scope.parent;
+  const memoiseExpression = (expression, hint, assignments) => {
+    const localEvaluatedId = generateLetUidIdentifier(scopeParent, hint);
+    assignments.push(_core.types.assignmentExpression("=", localEvaluatedId, expression));
+    return _core.types.cloneNode(localEvaluatedId);
+  };
+  let protoInitLocal;
+  let staticInitLocal;
+  const classIdName = (_path$node$id = path.node.id) == null ? void 0 : _path$node$id.name;
+  const setClassName = typeof className === "object" ? className : undefined;
+  const usesFunctionContextOrYieldAwait = decorator => {
+    try {
+      _core.types.traverseFast(decorator, node => {
+        if (_core.types.isThisExpression(node) || _core.types.isSuper(node) || _core.types.isYieldExpression(node) || _core.types.isAwaitExpression(node) || _core.types.isIdentifier(node, {
+          name: "arguments"
+        }) || classIdName && _core.types.isIdentifier(node, {
+          name: classIdName
+        }) || _core.types.isMetaProperty(node) && node.meta.name !== "import") {
+          throw null;
+        }
+      });
+      return false;
+    } catch (_unused2) {
+      return true;
+    }
+  };
+  const instancePrivateNames = [];
+  for (const element of body) {
+    if (!isClassDecoratableElementPath(element)) {
+      continue;
+    }
+    const elementNode = element.node;
+    if (!elementNode.static && _core.types.isPrivateName(elementNode.key)) {
+      instancePrivateNames.push(elementNode.key.id.name);
+    }
+    if (isDecorated(elementNode)) {
+      switch (elementNode.type) {
+        case "ClassProperty":
+          propertyVisitor.ClassProperty(element, state);
+          break;
+        case "ClassPrivateProperty":
+          propertyVisitor.ClassPrivateProperty(element, state);
+          break;
+        case "ClassAccessorProperty":
+          propertyVisitor.ClassAccessorProperty(element, state);
+          if (version === "2023-11") {
+            break;
+          }
+        default:
+          if (elementNode.static) {
+            staticInitLocal != null ? staticInitLocal : staticInitLocal = generateLetUidIdentifier(scopeParent, "initStatic");
+          } else {
+            protoInitLocal != null ? protoInitLocal : protoInitLocal = generateLetUidIdentifier(scopeParent, "initProto");
+          }
+          break;
+      }
+      hasElementDecorators = true;
+      elemDecsUseFnContext || (elemDecsUseFnContext = elementNode.decorators.some(usesFunctionContextOrYieldAwait));
+    } else if (elementNode.type === "ClassAccessorProperty") {
+      propertyVisitor.ClassAccessorProperty(element, state);
+      const {
+        key,
+        value,
+        static: isStatic,
+        computed
+      } = elementNode;
+      const newId = generateClassPrivateUid();
+      const newField = generateClassProperty(newId, value, isStatic);
+      const keyPath = element.get("key");
+      const [newPath] = element.replaceWith(newField);
+      let getterKey, setterKey;
+      if (computed && !keyPath.isConstantExpression()) {
+        getterKey = (0, _misc.memoiseComputedKey)(createToPropertyKeyCall(state, key), scopeParent, scopeParent.generateUid("computedKey"));
+        setterKey = _core.types.cloneNode(getterKey.left);
+      } else {
+        getterKey = _core.types.cloneNode(key);
+        setterKey = _core.types.cloneNode(key);
+      }
+      assignIdForAnonymousClass(path, className);
+      addProxyAccessorsFor(path.node.id, newPath, getterKey, setterKey, newId, computed, isStatic, version);
+    }
+    if ("computed" in element.node && element.node.computed) {
+      hasComputedKeysSideEffects || (hasComputedKeysSideEffects = !scopeParent.isStatic(element.node.key));
+    }
+  }
+  if (!classDecorators && !hasElementDecorators) {
+    if (!path.node.id && typeof className === "string") {
+      path.node.id = _core.types.identifier(className);
+    }
+    if (setClassName) {
+      path.node.body.body.unshift(createStaticBlockFromExpressions([createSetFunctionNameCall(state, setClassName)]));
+    }
+    return;
+  }
+  const elementDecoratorInfo = [];
+  let constructorPath;
+  const decoratedPrivateMethods = new Set();
+  let classInitLocal, classIdLocal;
+  let decoratorReceiverId = null;
+  function handleDecorators(decorators) {
+    let hasSideEffects = false;
+    let usesFnContext = false;
+    const decoratorsThis = [];
+    for (const decorator of decorators) {
+      const {
+        expression
+      } = decorator;
+      let object;
+      if ((version === "2023-11" || version === "2023-05") && _core.types.isMemberExpression(expression)) {
+        if (_core.types.isSuper(expression.object)) {
+          object = _core.types.thisExpression();
+        } else if (scopeParent.isStatic(expression.object)) {
+          object = _core.types.cloneNode(expression.object);
+        } else {
+          decoratorReceiverId != null ? decoratorReceiverId : decoratorReceiverId = generateLetUidIdentifier(scopeParent, "obj");
+          object = _core.types.assignmentExpression("=", _core.types.cloneNode(decoratorReceiverId), expression.object);
+          expression.object = _core.types.cloneNode(decoratorReceiverId);
+        }
+      }
+      decoratorsThis.push(object);
+      hasSideEffects || (hasSideEffects = !scopeParent.isStatic(expression));
+      usesFnContext || (usesFnContext = usesFunctionContextOrYieldAwait(decorator));
+    }
+    return {
+      hasSideEffects,
+      usesFnContext,
+      decoratorsThis
+    };
+  }
+  const willExtractSomeElemDecs = hasComputedKeysSideEffects || elemDecsUseFnContext || version !== "2023-11";
+  let needsDeclarationForClassBinding = false;
+  let classDecorationsFlag = 0;
+  let classDecorations = [];
+  let classDecorationsId;
+  let computedKeyAssignments = [];
+  if (classDecorators) {
+    classInitLocal = generateLetUidIdentifier(scopeParent, "initClass");
+    needsDeclarationForClassBinding = path.isClassDeclaration();
+    ({
+      id: classIdLocal,
+      path
+    } = replaceClassWithVar(path, className));
+    path.node.decorators = null;
+    const classDecsUsePrivateName = classDecorators.some(usesPrivateField);
+    const {
+      hasSideEffects,
+      usesFnContext,
+      decoratorsThis
+    } = handleDecorators(classDecorators);
+    const {
+      haveThis,
+      decs
+    } = generateDecorationList(classDecorators, decoratorsThis, version);
+    classDecorationsFlag = haveThis ? 1 : 0;
+    classDecorations = decs;
+    if (usesFnContext || hasSideEffects && willExtractSomeElemDecs || classDecsUsePrivateName) {
+      classDecorationsId = memoiseExpression(_core.types.arrayExpression(classDecorations), "classDecs", classAssignments);
+    }
+    if (!hasElementDecorators) {
+      for (const element of path.get("body.body")) {
+        const {
+          node
+        } = element;
+        const isComputed = "computed" in node && node.computed;
+        if (isComputed) {
+          if (element.isClassProperty({
+            static: true
+          })) {
+            if (!element.get("key").isConstantExpression()) {
+              const key = node.key;
+              const maybeAssignment = (0, _misc.memoiseComputedKey)(key, scopeParent, scopeParent.generateUid("computedKey"));
+              if (maybeAssignment != null) {
+                node.key = _core.types.cloneNode(maybeAssignment.left);
+                computedKeyAssignments.push(maybeAssignment);
+              }
+            }
+          } else if (computedKeyAssignments.length > 0) {
+            prependExpressionsToComputedKey(computedKeyAssignments, element);
+            computedKeyAssignments = [];
+          }
+        }
+      }
+    }
+  } else {
+    assignIdForAnonymousClass(path, className);
+    classIdLocal = _core.types.cloneNode(path.node.id);
+  }
+  let lastInstancePrivateName;
+  let needsInstancePrivateBrandCheck = false;
+  let fieldInitializerExpressions = [];
+  let staticFieldInitializerExpressions = [];
+  if (hasElementDecorators) {
+    if (protoInitLocal) {
+      const protoInitCall = _core.types.callExpression(_core.types.cloneNode(protoInitLocal), [_core.types.thisExpression()]);
+      fieldInitializerExpressions.push(protoInitCall);
+    }
+    for (const element of body) {
+      if (!isClassDecoratableElementPath(element)) {
+        if (staticFieldInitializerExpressions.length > 0 && element.isStaticBlock()) {
+          prependExpressionsToStaticBlock(staticFieldInitializerExpressions, element);
+          staticFieldInitializerExpressions = [];
+        }
+        continue;
+      }
+      const {
+        node
+      } = element;
+      const decorators = node.decorators;
+      const hasDecorators = !!(decorators != null && decorators.length);
+      const isComputed = "computed" in node && node.computed;
+      let name = "computedKey";
+      if (node.key.type === "PrivateName") {
+        name = node.key.id.name;
+      } else if (!isComputed && node.key.type === "Identifier") {
+        name = node.key.name;
+      }
+      let decoratorsArray;
+      let decoratorsHaveThis;
+      if (hasDecorators) {
+        const {
+          hasSideEffects,
+          usesFnContext,
+          decoratorsThis
+        } = handleDecorators(decorators);
+        const {
+          decs,
+          haveThis
+        } = generateDecorationList(decorators, decoratorsThis, version);
+        decoratorsHaveThis = haveThis;
+        decoratorsArray = decs.length === 1 ? decs[0] : _core.types.arrayExpression(decs);
+        if (usesFnContext || hasSideEffects && willExtractSomeElemDecs) {
+          decoratorsArray = memoiseExpression(decoratorsArray, name + "Decs", computedKeyAssignments);
+        }
+      }
+      if (isComputed) {
+        if (!element.get("key").isConstantExpression()) {
+          const key = node.key;
+          const maybeAssignment = (0, _misc.memoiseComputedKey)(hasDecorators ? createToPropertyKeyCall(state, key) : key, scopeParent, scopeParent.generateUid("computedKey"));
+          if (maybeAssignment != null) {
+            if (classDecorators && element.isClassProperty({
+              static: true
+            })) {
+              node.key = _core.types.cloneNode(maybeAssignment.left);
+              computedKeyAssignments.push(maybeAssignment);
+            } else {
+              node.key = maybeAssignment;
+            }
+          }
+        }
+      }
+      const {
+        key,
+        static: isStatic
+      } = node;
+      const isPrivate = key.type === "PrivateName";
+      const kind = getElementKind(element);
+      if (isPrivate && !isStatic) {
+        if (hasDecorators) {
+          needsInstancePrivateBrandCheck = true;
+        }
+        if (_core.types.isClassPrivateProperty(node) || !lastInstancePrivateName) {
+          lastInstancePrivateName = key;
+        }
+      }
+      if (element.isClassMethod({
+        kind: "constructor"
+      })) {
+        constructorPath = element;
+      }
+      let locals;
+      if (hasDecorators) {
+        let privateMethods;
+        let nameExpr;
+        if (isComputed) {
+          nameExpr = getComputedKeyMemoiser(element.get("key"));
+        } else if (key.type === "PrivateName") {
+          nameExpr = _core.types.stringLiteral(key.id.name);
+        } else if (key.type === "Identifier") {
+          nameExpr = _core.types.stringLiteral(key.name);
+        } else {
+          nameExpr = _core.types.cloneNode(key);
+        }
+        if (kind === ACCESSOR) {
+          const {
+            value
+          } = element.node;
+          const params = version === "2023-11" && isStatic ? [] : [_core.types.thisExpression()];
+          if (value) {
+            params.push(_core.types.cloneNode(value));
+          }
+          const newId = generateClassPrivateUid();
+          const newFieldInitId = generateLetUidIdentifier(scopeParent, `init_${name}`);
+          const newValue = _core.types.callExpression(_core.types.cloneNode(newFieldInitId), params);
+          const newField = generateClassProperty(newId, newValue, isStatic);
+          const [newPath] = element.replaceWith(newField);
+          if (isPrivate) {
+            privateMethods = extractProxyAccessorsFor(newId, version);
+            const getId = generateLetUidIdentifier(scopeParent, `get_${name}`);
+            const setId = generateLetUidIdentifier(scopeParent, `set_${name}`);
+            addCallAccessorsFor(version, newPath, key, getId, setId, isStatic);
+            locals = [newFieldInitId, getId, setId];
+          } else {
+            assignIdForAnonymousClass(path, className);
+            addProxyAccessorsFor(path.node.id, newPath, _core.types.cloneNode(key), _core.types.isAssignmentExpression(key) ? _core.types.cloneNode(key.left) : _core.types.cloneNode(key), newId, isComputed, isStatic, version);
+            locals = [newFieldInitId];
+          }
+        } else if (kind === FIELD) {
+          const initId = generateLetUidIdentifier(scopeParent, `init_${name}`);
+          const valuePath = element.get("value");
+          const args = version === "2023-11" && isStatic ? [] : [_core.types.thisExpression()];
+          if (valuePath.node) args.push(valuePath.node);
+          valuePath.replaceWith(_core.types.callExpression(_core.types.cloneNode(initId), args));
+          locals = [initId];
+          if (isPrivate) {
+            privateMethods = extractProxyAccessorsFor(key, version);
+          }
+        } else if (isPrivate) {
+          const callId = generateLetUidIdentifier(scopeParent, `call_${name}`);
+          locals = [callId];
+          const replaceSupers = new _helperReplaceSupers.default({
+            constantSuper,
+            methodPath: element,
+            objectRef: classIdLocal,
+            superRef: path.node.superClass,
+            file: state.file,
+            refToPreserve: classIdLocal
+          });
+          replaceSupers.replace();
+          privateMethods = [createFunctionExpressionFromPrivateMethod(element.node)];
+          if (kind === GETTER || kind === SETTER) {
+            movePrivateAccessor(element, _core.types.cloneNode(key), _core.types.cloneNode(callId), isStatic);
+          } else {
+            const node = element.node;
+            path.node.body.body.unshift(_core.types.classPrivateProperty(key, _core.types.cloneNode(callId), [], node.static));
+            decoratedPrivateMethods.add(key.id.name);
+            element.remove();
+          }
+        }
+        elementDecoratorInfo.push({
+          kind,
+          decoratorsArray,
+          decoratorsHaveThis,
+          name: nameExpr,
+          isStatic,
+          privateMethods,
+          locals
+        });
+        if (element.node) {
+          element.node.decorators = null;
+        }
+      }
+      if (isComputed && computedKeyAssignments.length > 0) {
+        if (classDecorators && element.isClassProperty({
+          static: true
+        })) {} else {
+          prependExpressionsToComputedKey(computedKeyAssignments, kind === ACCESSOR ? element.getNextSibling() : element);
+          computedKeyAssignments = [];
+        }
+      }
+      if (fieldInitializerExpressions.length > 0 && !isStatic && (kind === FIELD || kind === ACCESSOR)) {
+        prependExpressionsToFieldInitializer(fieldInitializerExpressions, element);
+        fieldInitializerExpressions = [];
+      }
+      if (staticFieldInitializerExpressions.length > 0 && isStatic && (kind === FIELD || kind === ACCESSOR)) {
+        prependExpressionsToFieldInitializer(staticFieldInitializerExpressions, element);
+        staticFieldInitializerExpressions = [];
+      }
+      if (hasDecorators && version === "2023-11") {
+        if (kind === FIELD || kind === ACCESSOR) {
+          const initExtraId = generateLetUidIdentifier(scopeParent, `init_extra_${name}`);
+          locals.push(initExtraId);
+          const initExtraCall = _core.types.callExpression(_core.types.cloneNode(initExtraId), isStatic ? [] : [_core.types.thisExpression()]);
+          if (!isStatic) {
+            fieldInitializerExpressions.push(initExtraCall);
+          } else {
+            staticFieldInitializerExpressions.push(initExtraCall);
+          }
+        }
+      }
+    }
+  }
+  if (computedKeyAssignments.length > 0) {
+    const elements = path.get("body.body");
+    let lastComputedElement;
+    for (let i = elements.length - 1; i >= 0; i--) {
+      const path = elements[i];
+      const node = path.node;
+      if (node.computed) {
+        if (classDecorators && _core.types.isClassProperty(node, {
+          static: true
+        })) {
+          continue;
+        }
+        lastComputedElement = path;
+        break;
+      }
+    }
+    if (lastComputedElement != null) {
+      appendExpressionsToComputedKey(computedKeyAssignments, lastComputedElement);
+      computedKeyAssignments = [];
+    } else {}
+  }
+  if (fieldInitializerExpressions.length > 0) {
+    const isDerivedClass = !!path.node.superClass;
+    if (constructorPath) {
+      if (isDerivedClass) {
+        insertExpressionsAfterSuperCallAndOptimize(fieldInitializerExpressions, constructorPath, protoInitLocal);
+      } else {
+        prependExpressionsToConstructor(fieldInitializerExpressions, constructorPath);
+      }
+    } else {
+      path.node.body.body.unshift(createConstructorFromExpressions(fieldInitializerExpressions, isDerivedClass));
+    }
+    fieldInitializerExpressions = [];
+  }
+  if (staticFieldInitializerExpressions.length > 0) {
+    path.node.body.body.push(createStaticBlockFromExpressions(staticFieldInitializerExpressions));
+    staticFieldInitializerExpressions = [];
+  }
+  const sortedElementDecoratorInfo = toSortedDecoratorInfo(elementDecoratorInfo);
+  const elementDecorations = generateDecorationExprs(version === "2023-11" ? elementDecoratorInfo : sortedElementDecoratorInfo, version);
+  const elementLocals = extractElementLocalAssignments(sortedElementDecoratorInfo);
+  if (protoInitLocal) {
+    elementLocals.push(protoInitLocal);
+  }
+  if (staticInitLocal) {
+    elementLocals.push(staticInitLocal);
+  }
+  const classLocals = [];
+  let classInitInjected = false;
+  const classInitCall = classInitLocal && _core.types.callExpression(_core.types.cloneNode(classInitLocal), []);
+  let originalClassPath = path;
+  const originalClass = path.node;
+  const staticClosures = [];
+  if (classDecorators) {
+    classLocals.push(classIdLocal, classInitLocal);
+    const statics = [];
+    path.get("body.body").forEach(element => {
+      if (element.isStaticBlock() || !element.isClassMethod() && element.node.static) {
+        const replaceSupers = new _helperReplaceSupers.default({
+          constantSuper,
+          methodPath: element,
+          objectRef: classIdLocal,
+          superRef: path.node.superClass,
+          file: state.file,
+          refToPreserve: classIdLocal
+        });
+        replaceSupers.replace();
+      }
+      if (element.isStaticBlock()) {
+        if (hasInstancePrivateAccess(element, instancePrivateNames)) {
+          const staticBlockClosureId = memoiseExpression(staticBlockToFunctionClosure(element.node), "staticBlock", staticClosures);
+          staticFieldInitializerExpressions.push(_core.types.callExpression(_core.types.memberExpression(staticBlockClosureId, _core.types.identifier("call")), [_core.types.thisExpression()]));
+        } else {
+          staticFieldInitializerExpressions.push(staticBlockToIIFE(element.node));
+        }
+        element.remove();
+        return;
+      }
+      if ((element.isClassProperty() || element.isClassPrivateProperty()) && element.node.static) {
+        const valuePath = element.get("value");
+        if (hasInstancePrivateAccess(valuePath, instancePrivateNames)) {
+          const fieldValueClosureId = memoiseExpression(fieldInitializerToClosure(valuePath.node), "fieldValue", staticClosures);
+          valuePath.replaceWith(_core.types.callExpression(_core.types.memberExpression(fieldValueClosureId, _core.types.identifier("call")), [_core.types.thisExpression()]));
+        }
+        if (staticFieldInitializerExpressions.length > 0) {
+          prependExpressionsToFieldInitializer(staticFieldInitializerExpressions, element);
+          staticFieldInitializerExpressions = [];
+        }
+        element.node.static = false;
+        statics.push(element.node);
+        element.remove();
+      } else if (element.isClassPrivateMethod({
+        static: true
+      })) {
+        if (hasInstancePrivateAccess(element, instancePrivateNames)) {
+          const privateMethodDelegateId = memoiseExpression(createFunctionExpressionFromPrivateMethod(element.node), element.get("key.id").node.name, staticClosures);
+          if (ignoreFunctionLength) {
+            element.node.params = [_core.types.restElement(_core.types.identifier("arg"))];
+            element.node.body = _core.types.blockStatement([_core.types.returnStatement(_core.types.callExpression(_core.types.memberExpression(privateMethodDelegateId, _core.types.identifier("apply")), [_core.types.thisExpression(), _core.types.identifier("arg")]))]);
+          } else {
+            element.node.params = element.node.params.map((p, i) => {
+              if (_core.types.isRestElement(p)) {
+                return _core.types.restElement(_core.types.identifier("arg"));
+              } else {
+                return _core.types.identifier("_" + i);
+              }
+            });
+            element.node.body = _core.types.blockStatement([_core.types.returnStatement(_core.types.callExpression(_core.types.memberExpression(privateMethodDelegateId, _core.types.identifier("apply")), [_core.types.thisExpression(), _core.types.identifier("arguments")]))]);
+          }
+        }
+        element.node.static = false;
+        statics.push(element.node);
+        element.remove();
+      }
+    });
+    if (statics.length > 0 || staticFieldInitializerExpressions.length > 0) {
+      const staticsClass = _core.template.expression.ast`
+        class extends ${state.addHelper("identity")} {}
+      `;
+      staticsClass.body.body = [_core.types.classProperty(_core.types.toExpression(originalClass), undefined, undefined, undefined, true, true), ...statics];
+      const constructorBody = [];
+      const newExpr = _core.types.newExpression(staticsClass, []);
+      if (staticFieldInitializerExpressions.length > 0) {
+        constructorBody.push(...staticFieldInitializerExpressions);
+      }
+      if (classInitCall) {
+        classInitInjected = true;
+        constructorBody.push(classInitCall);
+      }
+      if (constructorBody.length > 0) {
+        constructorBody.unshift(_core.types.callExpression(_core.types.super(), [_core.types.cloneNode(classIdLocal)]));
+        staticsClass.body.body.push(createConstructorFromExpressions(constructorBody, false));
+      } else {
+        newExpr.arguments.push(_core.types.cloneNode(classIdLocal));
+      }
+      const [newPath] = path.replaceWith(newExpr);
+      originalClassPath = newPath.get("callee").get("body").get("body.0.key");
+    }
+  }
+  if (!classInitInjected && classInitCall) {
+    path.node.body.body.push(_core.types.staticBlock([_core.types.expressionStatement(classInitCall)]));
+  }
+  let {
+    superClass
+  } = originalClass;
+  if (superClass && (version === "2023-11" || version === "2023-05")) {
+    const id = path.scope.maybeGenerateMemoised(superClass);
+    if (id) {
+      originalClass.superClass = _core.types.assignmentExpression("=", id, superClass);
+      superClass = id;
+    }
+  }
+  const applyDecoratorWrapper = _core.types.staticBlock([]);
+  originalClass.body.body.unshift(applyDecoratorWrapper);
+  const applyDecsBody = applyDecoratorWrapper.body;
+  if (computedKeyAssignments.length > 0) {
+    const elements = originalClassPath.get("body.body");
+    let firstPublicElement;
+    for (const path of elements) {
+      if ((path.isClassProperty() || path.isClassMethod()) && path.node.kind !== "constructor") {
+        firstPublicElement = path;
+        break;
+      }
+    }
+    if (firstPublicElement != null) {
+      convertToComputedKey(firstPublicElement);
+      prependExpressionsToComputedKey(computedKeyAssignments, firstPublicElement);
+    } else {
+      originalClass.body.body.unshift(_core.types.classProperty(_core.types.sequenceExpression([...computedKeyAssignments, _core.types.stringLiteral("_")]), undefined, undefined, undefined, true, true));
+      applyDecsBody.push(_core.types.expressionStatement(_core.types.unaryExpression("delete", _core.types.memberExpression(_core.types.thisExpression(), _core.types.identifier("_")))));
+    }
+    computedKeyAssignments = [];
+  }
+  applyDecsBody.push(_core.types.expressionStatement(createLocalsAssignment(elementLocals, classLocals, elementDecorations, classDecorationsId != null ? classDecorationsId : _core.types.arrayExpression(classDecorations), _core.types.numericLiteral(classDecorationsFlag), needsInstancePrivateBrandCheck ? lastInstancePrivateName : null, setClassName, _core.types.cloneNode(superClass), state, version)));
+  if (staticInitLocal) {
+    applyDecsBody.push(_core.types.expressionStatement(_core.types.callExpression(_core.types.cloneNode(staticInitLocal), [_core.types.thisExpression()])));
+  }
+  if (staticClosures.length > 0) {
+    applyDecsBody.push(...staticClosures.map(expr => _core.types.expressionStatement(expr)));
+  }
+  path.insertBefore(classAssignments.map(expr => _core.types.expressionStatement(expr)));
+  if (needsDeclarationForClassBinding) {
+    const classBindingInfo = scopeParent.getBinding(classIdLocal.name);
+    if (!classBindingInfo.constantViolations.length) {
+      path.insertBefore(_core.types.variableDeclaration("let", [_core.types.variableDeclarator(_core.types.cloneNode(classIdLocal))]));
+    } else {
+      const classOuterBindingDelegateLocal = scopeParent.generateUidIdentifier("t" + classIdLocal.name);
+      const classOuterBindingLocal = classIdLocal;
+      path.replaceWithMultiple([_core.types.variableDeclaration("let", [_core.types.variableDeclarator(_core.types.cloneNode(classOuterBindingLocal)), _core.types.variableDeclarator(classOuterBindingDelegateLocal)]), _core.types.blockStatement([_core.types.variableDeclaration("let", [_core.types.variableDeclarator(_core.types.cloneNode(classIdLocal))]), path.node, _core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.cloneNode(classOuterBindingDelegateLocal), _core.types.cloneNode(classIdLocal)))]), _core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.cloneNode(classOuterBindingLocal), _core.types.cloneNode(classOuterBindingDelegateLocal)))]);
+    }
+  }
+  if (decoratedPrivateMethods.size > 0) {
+    checkPrivateMethodUpdateError(path, decoratedPrivateMethods);
+  }
+  path.scope.crawl();
+  return path;
+}
+function createLocalsAssignment(elementLocals, classLocals, elementDecorations, classDecorations, classDecorationsFlag, maybePrivateBrandName, setClassName, superClass, state, version) {
+  let lhs, rhs;
+  const args = [setClassName ? createSetFunctionNameCall(state, setClassName) : _core.types.thisExpression(), classDecorations, elementDecorations];
+  if (version !== "2023-11") {
+    args.splice(1, 2, elementDecorations, classDecorations);
+  }
+  if (version === "2021-12" || version === "2022-03" && !state.availableHelper("applyDecs2203R")) {
+    lhs = _core.types.arrayPattern([...elementLocals, ...classLocals]);
+    rhs = _core.types.callExpression(state.addHelper(version === "2021-12" ? "applyDecs" : "applyDecs2203"), args);
+    return _core.types.assignmentExpression("=", lhs, rhs);
+  } else if (version === "2022-03") {
+    rhs = _core.types.callExpression(state.addHelper("applyDecs2203R"), args);
+  } else if (version === "2023-01") {
+    if (maybePrivateBrandName) {
+      args.push(createPrivateBrandCheckClosure(maybePrivateBrandName));
+    }
+    rhs = _core.types.callExpression(state.addHelper("applyDecs2301"), args);
+  } else if (version === "2023-05") {
+    if (maybePrivateBrandName || superClass || classDecorationsFlag.value !== 0) {
+      args.push(classDecorationsFlag);
+    }
+    if (maybePrivateBrandName) {
+      args.push(createPrivateBrandCheckClosure(maybePrivateBrandName));
+    } else if (superClass) {
+      args.push(_core.types.unaryExpression("void", _core.types.numericLiteral(0)));
+    }
+    if (superClass) args.push(superClass);
+    rhs = _core.types.callExpression(state.addHelper("applyDecs2305"), args);
+  }
+  if (version === "2023-11") {
+    if (maybePrivateBrandName || superClass || classDecorationsFlag.value !== 0) {
+      args.push(classDecorationsFlag);
+    }
+    if (maybePrivateBrandName) {
+      args.push(createPrivateBrandCheckClosure(maybePrivateBrandName));
+    } else if (superClass) {
+      args.push(_core.types.unaryExpression("void", _core.types.numericLiteral(0)));
+    }
+    if (superClass) args.push(superClass);
+    rhs = _core.types.callExpression(state.addHelper("applyDecs2311"), args);
+  }
+  if (elementLocals.length > 0) {
+    if (classLocals.length > 0) {
+      lhs = _core.types.objectPattern([_core.types.objectProperty(_core.types.identifier("e"), _core.types.arrayPattern(elementLocals)), _core.types.objectProperty(_core.types.identifier("c"), _core.types.arrayPattern(classLocals))]);
+    } else {
+      lhs = _core.types.arrayPattern(elementLocals);
+      rhs = _core.types.memberExpression(rhs, _core.types.identifier("e"), false, false);
+    }
+  } else {
+    lhs = _core.types.arrayPattern(classLocals);
+    rhs = _core.types.memberExpression(rhs, _core.types.identifier("c"), false, false);
+  }
+  return _core.types.assignmentExpression("=", lhs, rhs);
+}
+function isProtoKey(node) {
+  return node.type === "Identifier" ? node.name === "__proto__" : node.value === "__proto__";
+}
+function isDecorated(node) {
+  return node.decorators && node.decorators.length > 0;
+}
+function shouldTransformElement(node) {
+  switch (node.type) {
+    case "ClassAccessorProperty":
+      return true;
+    case "ClassMethod":
+    case "ClassProperty":
+    case "ClassPrivateMethod":
+    case "ClassPrivateProperty":
+      return isDecorated(node);
+    default:
+      return false;
+  }
+}
+function shouldTransformClass(node) {
+  return isDecorated(node) || node.body.body.some(shouldTransformElement);
+}
+function buildNamedEvaluationVisitor(needsName, visitor) {
+  function handleComputedProperty(propertyPath, key, state) {
+    switch (key.type) {
+      case "StringLiteral":
+        return _core.types.stringLiteral(key.value);
+      case "NumericLiteral":
+      case "BigIntLiteral":
+        {
+          const keyValue = key.value + "";
+          propertyPath.get("key").replaceWith(_core.types.stringLiteral(keyValue));
+          return _core.types.stringLiteral(keyValue);
+        }
+      default:
+        {
+          const ref = propertyPath.scope.maybeGenerateMemoised(key);
+          propertyPath.get("key").replaceWith(_core.types.assignmentExpression("=", ref, createToPropertyKeyCall(state, key)));
+          return _core.types.cloneNode(ref);
+        }
+    }
+  }
+  return {
+    VariableDeclarator(path, state) {
+      const id = path.node.id;
+      if (id.type === "Identifier") {
+        const initializer = (0, _helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers)(path.get("init"));
+        if (needsName(initializer)) {
+          const name = id.name;
+          visitor(initializer, state, name);
+        }
+      }
+    },
+    AssignmentExpression(path, state) {
+      const id = path.node.left;
+      if (id.type === "Identifier") {
+        const initializer = (0, _helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers)(path.get("right"));
+        if (needsName(initializer)) {
+          switch (path.node.operator) {
+            case "=":
+            case "&&=":
+            case "||=":
+            case "??=":
+              visitor(initializer, state, id.name);
+          }
+        }
+      }
+    },
+    AssignmentPattern(path, state) {
+      const id = path.node.left;
+      if (id.type === "Identifier") {
+        const initializer = (0, _helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers)(path.get("right"));
+        if (needsName(initializer)) {
+          const name = id.name;
+          visitor(initializer, state, name);
+        }
+      }
+    },
+    ObjectExpression(path, state) {
+      for (const propertyPath of path.get("properties")) {
+        if (!propertyPath.isObjectProperty()) continue;
+        const {
+          node
+        } = propertyPath;
+        const id = node.key;
+        const initializer = (0, _helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers)(propertyPath.get("value"));
+        if (needsName(initializer)) {
+          if (!node.computed) {
+            if (!isProtoKey(id)) {
+              if (id.type === "Identifier") {
+                visitor(initializer, state, id.name);
+              } else {
+                const className = _core.types.stringLiteral(id.value + "");
+                visitor(initializer, state, className);
+              }
+            }
+          } else {
+            const ref = handleComputedProperty(propertyPath, id, state);
+            visitor(initializer, state, ref);
+          }
+        }
+      }
+    },
+    ClassPrivateProperty(path, state) {
+      const {
+        node
+      } = path;
+      const initializer = (0, _helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers)(path.get("value"));
+      if (needsName(initializer)) {
+        const className = _core.types.stringLiteral("#" + node.key.id.name);
+        visitor(initializer, state, className);
+      }
+    },
+    ClassAccessorProperty(path, state) {
+      const {
+        node
+      } = path;
+      const id = node.key;
+      const initializer = (0, _helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers)(path.get("value"));
+      if (needsName(initializer)) {
+        if (!node.computed) {
+          if (id.type === "Identifier") {
+            visitor(initializer, state, id.name);
+          } else if (id.type === "PrivateName") {
+            const className = _core.types.stringLiteral("#" + id.id.name);
+            visitor(initializer, state, className);
+          } else {
+            const className = _core.types.stringLiteral(id.value + "");
+            visitor(initializer, state, className);
+          }
+        } else {
+          const ref = handleComputedProperty(path, id, state);
+          visitor(initializer, state, ref);
+        }
+      }
+    },
+    ClassProperty(path, state) {
+      const {
+        node
+      } = path;
+      const id = node.key;
+      const initializer = (0, _helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers)(path.get("value"));
+      if (needsName(initializer)) {
+        if (!node.computed) {
+          if (id.type === "Identifier") {
+            visitor(initializer, state, id.name);
+          } else {
+            const className = _core.types.stringLiteral(id.value + "");
+            visitor(initializer, state, className);
+          }
+        } else {
+          const ref = handleComputedProperty(path, id, state);
+          visitor(initializer, state, ref);
+        }
+      }
+    }
+  };
+}
+function isDecoratedAnonymousClassExpression(path) {
+  return path.isClassExpression({
+    id: null
+  }) && shouldTransformClass(path.node);
+}
+function generateLetUidIdentifier(scope, name) {
+  const id = scope.generateUidIdentifier(name);
+  scope.push({
+    id,
+    kind: "let"
+  });
+  return _core.types.cloneNode(id);
+}
+function _default({
+  assertVersion,
+  assumption
+}, {
+  loose
+}, version, inherits) {
+  var _assumption, _assumption2;
+  if (version === "2023-11" || version === "2023-05" || version === "2023-01") {
+    assertVersion("^7.21.0");
+  } else if (version === "2021-12") {
+    assertVersion("^7.16.0");
+  } else {
+    assertVersion("^7.19.0");
+  }
+  const VISITED = new WeakSet();
+  const constantSuper = (_assumption = assumption("constantSuper")) != null ? _assumption : loose;
+  const ignoreFunctionLength = (_assumption2 = assumption("ignoreFunctionLength")) != null ? _assumption2 : loose;
+  const namedEvaluationVisitor = buildNamedEvaluationVisitor(isDecoratedAnonymousClassExpression, visitClass);
+  function visitClass(path, state, className) {
+    var _node$id;
+    if (VISITED.has(path)) return;
+    const {
+      node
+    } = path;
+    className != null ? className : className = (_node$id = node.id) == null ? void 0 : _node$id.name;
+    const newPath = transformClass(path, state, constantSuper, ignoreFunctionLength, className, namedEvaluationVisitor, version);
+    if (newPath) {
+      VISITED.add(newPath);
+      return;
+    }
+    VISITED.add(path);
+  }
+  return {
+    name: "proposal-decorators",
+    inherits: inherits,
+    visitor: Object.assign({
+      ExportDefaultDeclaration(path, state) {
+        const {
+          declaration
+        } = path.node;
+        if ((declaration == null ? void 0 : declaration.type) === "ClassDeclaration" && isDecorated(declaration)) {
+          var _path$splitExportDecl;
+          const isAnonymous = !declaration.id;
+          (_path$splitExportDecl = path.splitExportDeclaration) != null ? _path$splitExportDecl : path.splitExportDeclaration = require("@babel/traverse").NodePath.prototype.splitExportDeclaration;
+          const updatedVarDeclarationPath = path.splitExportDeclaration();
+          if (isAnonymous) {
+            visitClass(updatedVarDeclarationPath, state, _core.types.stringLiteral("default"));
+          }
+        }
+      },
+      ExportNamedDeclaration(path) {
+        const {
+          declaration
+        } = path.node;
+        if ((declaration == null ? void 0 : declaration.type) === "ClassDeclaration" && isDecorated(declaration)) {
+          var _path$splitExportDecl2;
+          (_path$splitExportDecl2 = path.splitExportDeclaration) != null ? _path$splitExportDecl2 : path.splitExportDeclaration = require("@babel/traverse").NodePath.prototype.splitExportDeclaration;
+          path.splitExportDeclaration();
+        }
+      },
+      Class(path, state) {
+        visitClass(path, state, undefined);
+      }
+    }, namedEvaluationVisitor)
+  };
+}
+
+//# sourceMappingURL=decorators.js.map
Index: frontend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators.js.map
===================================================================
--- frontend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators.js.map	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators.js.map	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_core","require","_helperReplaceSupers","_helperSkipTransparentExpressionWrappers","_fields","_misc","hasOwnDecorators","node","_node$decorators","decorators","length","hasDecorators","body","some","incrementId","id","idx","unshift","current","createPrivateUidGeneratorForClass","classPath","currentPrivateId","privateNames","Set","t","traverseFast","isPrivateName","add","name","reifiedId","String","fromCharCode","has","privateName","identifier","createLazyPrivateUidGeneratorForClass","generator","replaceClassWithVar","path","className","scope","type","varId","generateUidIdentifierBasedOnNode","classId","rename","get","replaceWith","cloneNode","generateLetUidIdentifier","parent","newClassExpr","classExpression","superClass","newPath","sequenceExpression","generateClassProperty","key","value","isStatic","classPrivateProperty","undefined","classProperty","assignIdForAnonymousClass","generateUidIdentifier","addProxyAccessorsFor","element","getterKey","setterKey","targetKey","isComputed","version","thisArg","thisExpression","getterBody","blockStatement","returnStatement","memberExpression","setterBody","expressionStatement","assignmentExpression","getter","setter","classPrivateMethod","classMethod","insertAfter","extractProxyAccessorsFor","template","expression","ast","getComputedKeyLastElement","skipTransparentExprWrappers","isSequenceExpression","expressions","getComputedKeyMemoiser","isConstantExpression","isIdentifier","hasUid","isAssignmentExpression","left","Error","toString","prependExpressionsToComputedKey","fieldPath","push","maybeSequenceExpression","appendExpressionsToComputedKey","completion","scopeParent","maybeAssignment","memoiseComputedKey","generateUid","expressionSequence","completionParent","parentPath","pushContainer","prependExpressionsToFieldInitializer","initializer","unaryExpression","prependExpressionsToStaticBlock","blockPath","unshiftContainer","prependExpressionsToConstructor","constructorPath","isProtoInitCallExpression","protoInitCall","isCallExpression","callee","optimizeSuperCallAndExpressions","protoInitLocal","mergedSuperCall","callExpression","splice","isThisExpression","insertExpressionsAfterSuperCallAndOptimize","traverse","CallExpression","exit","isSuper","newNodes","map","expr","isCompletionRecord","skip","ClassMethod","kind","createConstructorFromExpressions","isDerivedClass","super","spreadElement","restElement","createStaticBlockFromExpressions","staticBlock","FIELD","ACCESSOR","METHOD","GETTER","SETTER","STATIC_OLD_VERSION","STATIC","DECORATORS_HAVE_THIS","getElementKind","toSortedDecoratorInfo","info","filter","el","generateDecorationList","decoratorsThis","decsCount","haveOneThis","Boolean","decs","i","numericLiteral","haveThis","generateDecorationExprs","decorationInfo","arrayExpression","flag","decoratorsHaveThis","decoratorsArray","privateMethods","extractElementLocalAssignments","localIds","locals","Array","isArray","addCallAccessorsFor","getId","setId","movePrivateAccessor","methodLocalVar","params","block","isClassDecoratableElementPath","staticBlockToIIFE","arrowFunctionExpression","staticBlockToFunctionClosure","functionExpression","fieldInitializerToClosure","exprs","createFunctionExpressionFromPrivateMethod","isGenerator","async","isAsync","createSetFunctionNameCall","state","addHelper","createToPropertyKeyCall","propertyKey","createPrivateBrandCheckClosure","brandName","binaryExpression","usesPrivateField","_unused","convertToComputedKey","computed","stringLiteral","hasInstancePrivateAccess","containsInstancePrivateAccess","privateNameVisitor","privateNameVisitorFactory","PrivateName","privateNamesMap","stop","Map","set","checkPrivateMethodUpdateError","decoratedPrivateMethods","parentParentPath","buildCodeFrameError","transformClass","constantSuper","ignoreFunctionLength","propertyVisitor","_path$node$id","classDecorators","hasElementDecorators","hasComputedKeysSideEffects","elemDecsUseFnContext","generateClassPrivateUid","classAssignments","memoiseExpression","hint","assignments","localEvaluatedId","staticInitLocal","classIdName","setClassName","usesFunctionContextOrYieldAwait","decorator","isYieldExpression","isAwaitExpression","isMetaProperty","meta","_unused2","instancePrivateNames","elementNode","static","isDecorated","ClassProperty","ClassPrivateProperty","ClassAccessorProperty","newId","newField","keyPath","elementDecoratorInfo","classInitLocal","classIdLocal","decoratorReceiverId","handleDecorators","hasSideEffects","usesFnContext","object","isMemberExpression","willExtractSomeElemDecs","needsDeclarationForClassBinding","classDecorationsFlag","classDecorations","classDecorationsId","computedKeyAssignments","isClassDeclaration","classDecsUsePrivateName","isClassProperty","lastInstancePrivateName","needsInstancePrivateBrandCheck","fieldInitializerExpressions","staticFieldInitializerExpressions","isStaticBlock","isPrivate","isClassPrivateProperty","isClassMethod","nameExpr","newFieldInitId","newValue","initId","valuePath","args","callId","replaceSupers","ReplaceSupers","methodPath","objectRef","superRef","file","refToPreserve","replace","remove","getNextSibling","initExtraId","initExtraCall","elements","lastComputedElement","sortedElementDecoratorInfo","elementDecorations","elementLocals","classLocals","classInitInjected","classInitCall","originalClassPath","originalClass","staticClosures","statics","forEach","staticBlockClosureId","fieldValueClosureId","isClassPrivateMethod","privateMethodDelegateId","p","isRestElement","staticsClass","toExpression","constructorBody","newExpr","newExpression","arguments","maybeGenerateMemoised","applyDecoratorWrapper","applyDecsBody","firstPublicElement","createLocalsAssignment","insertBefore","classBindingInfo","getBinding","constantViolations","variableDeclaration","variableDeclarator","classOuterBindingDelegateLocal","classOuterBindingLocal","replaceWithMultiple","size","crawl","maybePrivateBrandName","lhs","rhs","availableHelper","arrayPattern","objectPattern","objectProperty","isProtoKey","shouldTransformElement","shouldTransformClass","buildNamedEvaluationVisitor","needsName","visitor","handleComputedProperty","propertyPath","keyValue","ref","VariableDeclarator","AssignmentExpression","operator","AssignmentPattern","ObjectExpression","isObjectProperty","isDecoratedAnonymousClassExpression","isClassExpression","_default","assertVersion","assumption","loose","inherits","_assumption","_assumption2","VISITED","WeakSet","namedEvaluationVisitor","visitClass","_node$id","Object","assign","ExportDefaultDeclaration","declaration","_path$splitExportDecl","isAnonymous","splitExportDeclaration","NodePath","prototype","updatedVarDeclarationPath","ExportNamedDeclaration","_path$splitExportDecl2","Class"],"sources":["../src/decorators.ts"],"sourcesContent":["import type { NodePath, Scope, Visitor } from \"@babel/core\";\nimport { types as t, template } from \"@babel/core\";\nimport ReplaceSupers from \"@babel/helper-replace-supers\";\nimport type { PluginAPI, PluginObject, PluginPass } from \"@babel/core\";\nimport { skipTransparentExprWrappers } from \"@babel/helper-skip-transparent-expression-wrappers\";\nimport {\n  privateNameVisitorFactory,\n  type PrivateNameVisitorState,\n} from \"./fields.ts\";\nimport { memoiseComputedKey } from \"./misc.ts\";\n\nexport function hasOwnDecorators(node: t.Class | t.ClassBody[\"body\"][number]) {\n  // @ts-expect-error: 'decorators' not in TSIndexSignature\n  return !!node.decorators?.length;\n}\n\nexport function hasDecorators(node: t.Class) {\n  return hasOwnDecorators(node) || node.body.body.some(hasOwnDecorators);\n}\n\n// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\ninterface Options {\n  /** @deprecated use `constantSuper` assumption instead. Only supported in 2021-12 version. */\n  loose?: boolean;\n}\n\ntype ClassDecoratableElement =\n  | t.ClassMethod\n  | t.ClassPrivateMethod\n  | t.ClassProperty\n  | t.ClassPrivateProperty\n  | t.ClassAccessorProperty;\n\ntype ClassElement =\n  | ClassDecoratableElement\n  | t.TSDeclareMethod\n  | t.TSIndexSignature\n  | t.StaticBlock;\n\ntype ClassElementCanHaveComputedKeys =\n  | t.ClassMethod\n  | t.ClassProperty\n  | t.ClassAccessorProperty;\n\n// TODO(Babel 8): Only keep 2023-11\nexport type DecoratorVersionKind =\n  | \"2023-11\"\n  | \"2023-05\"\n  | \"2023-01\"\n  | \"2022-03\"\n  | \"2021-12\";\n\nfunction incrementId(id: number[], idx = id.length - 1): void {\n  // If index is -1, id needs an additional character, unshift A\n  if (idx === -1) {\n    id.unshift(charCodes.uppercaseA);\n    return;\n  }\n\n  const current = id[idx];\n\n  if (current === charCodes.uppercaseZ) {\n    // if current is Z, skip to a\n    id[idx] = charCodes.lowercaseA;\n  } else if (current === charCodes.lowercaseZ) {\n    // if current is z, reset to A and carry the 1\n    id[idx] = charCodes.uppercaseA;\n    incrementId(id, idx - 1);\n  } else {\n    // else, increment by one\n    id[idx] = current + 1;\n  }\n}\n\n/**\n * Generates a new private name that is unique to the given class. This can be\n * used to create extra class fields and methods for the implementation, while\n * keeping the length of those names as small as possible. This is important for\n * minification purposes (though private names can generally be minified,\n * transpilations and polyfills cannot yet).\n */\nfunction createPrivateUidGeneratorForClass(\n  classPath: NodePath<t.ClassDeclaration | t.ClassExpression>,\n): () => t.PrivateName {\n  const currentPrivateId: number[] = [];\n  const privateNames = new Set<string>();\n\n  t.traverseFast(classPath.node, node => {\n    if (t.isPrivateName(node)) {\n      privateNames.add(node.id.name);\n    }\n  });\n\n  return (): t.PrivateName => {\n    let reifiedId;\n    do {\n      incrementId(currentPrivateId);\n      reifiedId = String.fromCharCode(...currentPrivateId);\n    } while (privateNames.has(reifiedId));\n\n    return t.privateName(t.identifier(reifiedId));\n  };\n}\n\n/**\n * Wraps the above generator function so that it's run lazily the first time\n * it's actually required. Several types of decoration do not require this, so it\n * saves iterating the class elements an additional time and allocating the space\n * for the Sets of element names.\n */\nfunction createLazyPrivateUidGeneratorForClass(\n  classPath: NodePath<t.ClassDeclaration | t.ClassExpression>,\n): () => t.PrivateName {\n  let generator: () => t.PrivateName;\n\n  return (): t.PrivateName => {\n    if (!generator) {\n      generator = createPrivateUidGeneratorForClass(classPath);\n    }\n\n    return generator();\n  };\n}\n\n/**\n * Takes a class definition and the desired class name if anonymous and\n * replaces it with an equivalent class declaration (path) which is then\n * assigned to a local variable (id). This allows us to reassign the local variable with the\n * decorated version of the class. The class definition retains its original\n * name so that `toString` is not affected, other references to the class\n * are renamed instead.\n */\nfunction replaceClassWithVar(\n  path: NodePath<t.ClassDeclaration | t.ClassExpression>,\n  className: string | t.Identifier | t.StringLiteral | undefined,\n): {\n  id: t.Identifier;\n  path: NodePath<t.ClassDeclaration | t.ClassExpression>;\n} {\n  const id = path.node.id;\n  const scope = path.scope;\n  if (path.type === \"ClassDeclaration\") {\n    const className = id.name;\n    const varId = scope.generateUidIdentifierBasedOnNode(id);\n    const classId = t.identifier(className);\n\n    scope.rename(className, varId.name);\n\n    path.get(\"id\").replaceWith(classId);\n\n    return { id: t.cloneNode(varId), path };\n  } else {\n    let varId: t.Identifier;\n\n    if (id) {\n      className = id.name;\n      varId = generateLetUidIdentifier(scope.parent, className);\n      scope.rename(className, varId.name);\n    } else {\n      varId = generateLetUidIdentifier(\n        scope.parent,\n        typeof className === \"string\" ? className : \"decorated_class\",\n      );\n    }\n\n    const newClassExpr = t.classExpression(\n      typeof className === \"string\" ? t.identifier(className) : null,\n      path.node.superClass,\n      path.node.body,\n    );\n\n    const [newPath] = path.replaceWith(\n      t.sequenceExpression([newClassExpr, varId]),\n    );\n\n    return {\n      id: t.cloneNode(varId),\n      path: newPath.get(\"expressions.0\") as NodePath<t.ClassExpression>,\n    };\n  }\n}\n\nfunction generateClassProperty(\n  key: t.PrivateName | t.Identifier,\n  value: t.Expression | undefined,\n  isStatic: boolean,\n): t.ClassPrivateProperty | t.ClassProperty {\n  if (key.type === \"PrivateName\") {\n    return t.classPrivateProperty(key, value, undefined, isStatic);\n  } else {\n    return t.classProperty(key, value, undefined, undefined, isStatic);\n  }\n}\n\nfunction assignIdForAnonymousClass(\n  path: NodePath<t.Class>,\n  className: string | t.Identifier | t.StringLiteral | undefined,\n) {\n  if (!path.node.id) {\n    path.node.id =\n      typeof className === \"string\"\n        ? t.identifier(className)\n        : path.scope.generateUidIdentifier(\"Class\");\n  }\n}\n\nfunction addProxyAccessorsFor(\n  className: t.Identifier,\n  element: NodePath<ClassDecoratableElement>,\n  getterKey: t.PrivateName | t.Expression,\n  setterKey: t.PrivateName | t.Expression,\n  targetKey: t.PrivateName,\n  isComputed: boolean,\n  isStatic: boolean,\n  version: DecoratorVersionKind,\n): void {\n  const thisArg =\n    (version === \"2023-11\" ||\n      (!process.env.BABEL_8_BREAKING && version === \"2023-05\")) &&\n    isStatic\n      ? className\n      : t.thisExpression();\n\n  const getterBody = t.blockStatement([\n    t.returnStatement(\n      t.memberExpression(t.cloneNode(thisArg), t.cloneNode(targetKey)),\n    ),\n  ]);\n\n  const setterBody = t.blockStatement([\n    t.expressionStatement(\n      t.assignmentExpression(\n        \"=\",\n        t.memberExpression(t.cloneNode(thisArg), t.cloneNode(targetKey)),\n        t.identifier(\"v\"),\n      ),\n    ),\n  ]);\n\n  let getter: t.ClassMethod | t.ClassPrivateMethod,\n    setter: t.ClassMethod | t.ClassPrivateMethod;\n\n  if (getterKey.type === \"PrivateName\") {\n    getter = t.classPrivateMethod(\"get\", getterKey, [], getterBody, isStatic);\n    setter = t.classPrivateMethod(\n      \"set\",\n      setterKey as t.PrivateName,\n      [t.identifier(\"v\")],\n      setterBody,\n      isStatic,\n    );\n  } else {\n    getter = t.classMethod(\n      \"get\",\n      getterKey,\n      [],\n      getterBody,\n      isComputed,\n      isStatic,\n    );\n    setter = t.classMethod(\n      \"set\",\n      setterKey as t.Expression,\n      [t.identifier(\"v\")],\n      setterBody,\n      isComputed,\n      isStatic,\n    );\n  }\n\n  element.insertAfter(setter);\n  element.insertAfter(getter);\n}\n\nfunction extractProxyAccessorsFor(\n  targetKey: t.PrivateName,\n  version: DecoratorVersionKind,\n): (t.FunctionExpression | t.ArrowFunctionExpression)[] {\n  if (version !== \"2023-11\" && version !== \"2023-05\" && version !== \"2023-01\") {\n    return [\n      template.expression.ast`\n        function () {\n          return this.${t.cloneNode(targetKey)};\n        }\n      ` as t.FunctionExpression,\n      template.expression.ast`\n        function (value) {\n          this.${t.cloneNode(targetKey)} = value;\n        }\n      ` as t.FunctionExpression,\n    ];\n  }\n  return [\n    template.expression.ast`\n      o => o.${t.cloneNode(targetKey)}\n    ` as t.ArrowFunctionExpression,\n    template.expression.ast`\n      (o, v) => o.${t.cloneNode(targetKey)} = v\n    ` as t.ArrowFunctionExpression,\n  ];\n}\n\n/**\n * Get the last element for the given computed key path.\n *\n * This function unwraps transparent wrappers and gets the last item when\n * the key is a SequenceExpression.\n *\n * @param {NodePath<t.Expression>} path The key of a computed class element\n * @returns {NodePath<t.Expression>} The simple completion result\n */\nfunction getComputedKeyLastElement(\n  path: NodePath<t.Expression>,\n): NodePath<t.Expression> {\n  path = skipTransparentExprWrappers(path);\n  if (path.isSequenceExpression()) {\n    const expressions = path.get(\"expressions\");\n    return getComputedKeyLastElement(expressions[expressions.length - 1]);\n  }\n  return path;\n}\n\n/**\n * Get a memoiser of the computed key path.\n *\n * This function does not mutate AST. If the computed key is not a constant\n * expression, this function must be called after the key has been memoised.\n *\n * @param {NodePath<t.Expression>} path The key of a computed class element.\n * @returns {t.Expression} A clone of key if key is a constant expression,\n * otherwise a memoiser identifier.\n */\nfunction getComputedKeyMemoiser(path: NodePath<t.Expression>): t.Expression {\n  const element = getComputedKeyLastElement(path);\n  if (element.isConstantExpression()) {\n    return t.cloneNode(path.node);\n  } else if (element.isIdentifier() && path.scope.hasUid(element.node.name)) {\n    return t.cloneNode(path.node);\n  } else if (\n    element.isAssignmentExpression() &&\n    element.get(\"left\").isIdentifier()\n  ) {\n    return t.cloneNode(element.node.left as t.Identifier);\n  } else {\n    throw new Error(\n      `Internal Error: the computed key ${path.toString()} has not yet been memoised.`,\n    );\n  }\n}\n\n/**\n * Prepend expressions to the computed key of the given field path.\n *\n * If the computed key is a sequence expression, this function will unwrap\n * the sequence expression for optimal output size.\n *\n * @param {t.Expression[]} expressions\n * @param {(NodePath<\n *     t.ClassMethod | t.ClassProperty | t.ClassAccessorProperty\n *   >)} fieldPath\n */\nfunction prependExpressionsToComputedKey(\n  expressions: t.Expression[],\n  fieldPath: NodePath<\n    t.ClassMethod | t.ClassProperty | t.ClassAccessorProperty\n  >,\n) {\n  const key = fieldPath.get(\"key\") as NodePath<t.Expression>;\n  if (key.isSequenceExpression()) {\n    expressions.push(...key.node.expressions);\n  } else {\n    expressions.push(key.node);\n  }\n  key.replaceWith(maybeSequenceExpression(expressions));\n}\n\n/**\n * Append expressions to the computed key of the given field path.\n *\n * If the computed key is a constant expression or uid reference, it\n * will prepend expressions before the comptued key. Otherwise it will\n * memoise the computed key to preserve its completion result.\n *\n * @param {t.Expression[]} expressions\n * @param {(NodePath<\n *     t.ClassMethod | t.ClassProperty | t.ClassAccessorProperty\n *   >)} fieldPath\n */\nfunction appendExpressionsToComputedKey(\n  expressions: t.Expression[],\n  fieldPath: NodePath<\n    t.ClassMethod | t.ClassProperty | t.ClassAccessorProperty\n  >,\n) {\n  const key = fieldPath.get(\"key\") as NodePath<t.Expression>;\n  const completion = getComputedKeyLastElement(key);\n  if (completion.isConstantExpression()) {\n    prependExpressionsToComputedKey(expressions, fieldPath);\n  } else {\n    const scopeParent = key.scope.parent;\n    const maybeAssignment = memoiseComputedKey(\n      completion.node,\n      scopeParent,\n      scopeParent.generateUid(\"computedKey\"),\n    );\n    if (!maybeAssignment) {\n      // If the memoiseComputedKey returns undefined, the key is already a uid reference,\n      // treat it as a constant expression and prepend expressions before it\n      prependExpressionsToComputedKey(expressions, fieldPath);\n    } else {\n      const expressionSequence = [\n        ...expressions,\n        // preserve the completion result\n        t.cloneNode(maybeAssignment.left),\n      ];\n      const completionParent = completion.parentPath;\n      if (completionParent.isSequenceExpression()) {\n        completionParent.pushContainer(\"expressions\", expressionSequence);\n      } else {\n        completion.replaceWith(\n          maybeSequenceExpression([\n            t.cloneNode(maybeAssignment),\n            ...expressionSequence,\n          ]),\n        );\n      }\n    }\n  }\n}\n\n/**\n * Prepend expressions to the field initializer. If the initializer is not defined,\n * this function will wrap the last expression within a `void` unary expression.\n *\n * @param {t.Expression[]} expressions\n * @param {(NodePath<\n *     t.ClassProperty | t.ClassPrivateProperty | t.ClassAccessorProperty\n *   >)} fieldPath\n */\nfunction prependExpressionsToFieldInitializer(\n  expressions: t.Expression[],\n  fieldPath: NodePath<\n    t.ClassProperty | t.ClassPrivateProperty | t.ClassAccessorProperty\n  >,\n) {\n  const initializer = fieldPath.get(\"value\");\n  if (initializer.node) {\n    expressions.push(initializer.node);\n  } else if (expressions.length > 0) {\n    expressions[expressions.length - 1] = t.unaryExpression(\n      \"void\",\n      expressions[expressions.length - 1],\n    );\n  }\n  initializer.replaceWith(maybeSequenceExpression(expressions));\n}\n\nfunction prependExpressionsToStaticBlock(\n  expressions: t.Expression[],\n  blockPath: NodePath<t.StaticBlock>,\n) {\n  blockPath.unshiftContainer(\n    \"body\",\n    t.expressionStatement(maybeSequenceExpression(expressions)),\n  );\n}\n\nfunction prependExpressionsToConstructor(\n  expressions: t.Expression[],\n  constructorPath: NodePath<t.ClassMethod>,\n) {\n  constructorPath.node.body.body.unshift(\n    t.expressionStatement(maybeSequenceExpression(expressions)),\n  );\n}\n\nfunction isProtoInitCallExpression(\n  expression: t.Expression,\n  protoInitCall: t.Identifier,\n) {\n  return (\n    t.isCallExpression(expression) &&\n    t.isIdentifier(expression.callee, { name: protoInitCall.name })\n  );\n}\n\n/**\n * Optimize super call and its following expressions\n *\n * @param {t.Expression[]} expressions Mutated by this function. The first element must by a super call\n * @param {t.Identifier} protoInitLocal The generated protoInit id\n * @returns optimized expression\n */\nfunction optimizeSuperCallAndExpressions(\n  expressions: t.Expression[],\n  protoInitLocal: t.Identifier,\n) {\n  if (protoInitLocal) {\n    if (\n      expressions.length >= 2 &&\n      isProtoInitCallExpression(expressions[1], protoInitLocal)\n    ) {\n      // Merge `super(), protoInit(this)` into `protoInit(super())`\n      const mergedSuperCall = t.callExpression(t.cloneNode(protoInitLocal), [\n        expressions[0],\n      ]);\n      expressions.splice(0, 2, mergedSuperCall);\n    }\n    // Merge `protoInit(super()), this` into `protoInit(super())`\n    if (\n      expressions.length >= 2 &&\n      t.isThisExpression(expressions[expressions.length - 1]) &&\n      isProtoInitCallExpression(\n        expressions[expressions.length - 2],\n        protoInitLocal,\n      )\n    ) {\n      expressions.splice(expressions.length - 1, 1);\n    }\n  }\n  return maybeSequenceExpression(expressions);\n}\n\n/**\n * Insert expressions immediately after super() and optimize the output if possible.\n * This function will preserve the completion result using the trailing this expression.\n *\n * @param {t.Expression[]} expressions\n * @param {NodePath<t.ClassMethod>} constructorPath\n * @param {t.Identifier} protoInitLocal The generated protoInit id\n * @returns\n */\nfunction insertExpressionsAfterSuperCallAndOptimize(\n  expressions: t.Expression[],\n  constructorPath: NodePath<t.ClassMethod>,\n  protoInitLocal: t.Identifier,\n) {\n  constructorPath.traverse({\n    CallExpression: {\n      exit(path) {\n        if (!path.get(\"callee\").isSuper()) return;\n        const newNodes = [\n          path.node,\n          ...expressions.map(expr => t.cloneNode(expr)),\n        ];\n        // preserve completion result if super() is in an RHS or a return statement\n        if (path.isCompletionRecord()) {\n          newNodes.push(t.thisExpression());\n        }\n        path.replaceWith(\n          optimizeSuperCallAndExpressions(newNodes, protoInitLocal),\n        );\n\n        path.skip();\n      },\n    },\n    ClassMethod(path) {\n      if (path.node.kind === \"constructor\") {\n        path.skip();\n      }\n    },\n  });\n}\n\n/**\n * Build a class constructor node from the given expressions. If the class is\n * derived, the constructor will call super() first to ensure that `this`\n * in the expressions work as expected.\n *\n * @param {t.Expression[]} expressions\n * @param {boolean} isDerivedClass\n * @returns The class constructor node\n */\nfunction createConstructorFromExpressions(\n  expressions: t.Expression[],\n  isDerivedClass: boolean,\n) {\n  const body: t.Statement[] = [\n    t.expressionStatement(maybeSequenceExpression(expressions)),\n  ];\n  if (isDerivedClass) {\n    body.unshift(\n      t.expressionStatement(\n        t.callExpression(t.super(), [t.spreadElement(t.identifier(\"args\"))]),\n      ),\n    );\n  }\n  return t.classMethod(\n    \"constructor\",\n    t.identifier(\"constructor\"),\n    isDerivedClass ? [t.restElement(t.identifier(\"args\"))] : [],\n    t.blockStatement(body),\n  );\n}\n\nfunction createStaticBlockFromExpressions(expressions: t.Expression[]) {\n  return t.staticBlock([\n    t.expressionStatement(maybeSequenceExpression(expressions)),\n  ]);\n}\n\n// 3 bits reserved to this (0-7)\nconst FIELD = 0;\nconst ACCESSOR = 1;\nconst METHOD = 2;\nconst GETTER = 3;\nconst SETTER = 4;\n\nconst STATIC_OLD_VERSION = 5; // Before 2023-05\nconst STATIC = 8; // 1 << 3\nconst DECORATORS_HAVE_THIS = 16; // 1 << 4\n\nfunction getElementKind(element: NodePath<ClassDecoratableElement>): number {\n  switch (element.node.type) {\n    case \"ClassProperty\":\n    case \"ClassPrivateProperty\":\n      return FIELD;\n    case \"ClassAccessorProperty\":\n      return ACCESSOR;\n    case \"ClassMethod\":\n    case \"ClassPrivateMethod\":\n      if (element.node.kind === \"get\") {\n        return GETTER;\n      } else if (element.node.kind === \"set\") {\n        return SETTER;\n      } else {\n        return METHOD;\n      }\n  }\n}\n\n// Information about the decorators applied to an element\ninterface DecoratorInfo {\n  // An array of applied decorators or a memoised identifier\n  decoratorsArray: t.Identifier | t.ArrayExpression | t.Expression;\n  decoratorsHaveThis: boolean;\n\n  // The kind of the decorated value, matches the kind value passed to applyDecs\n  kind: number;\n\n  // whether or not the field is static\n  isStatic: boolean;\n\n  // The name of the decorator\n  name: t.StringLiteral | t.Expression;\n\n  privateMethods:\n    | (t.FunctionExpression | t.ArrowFunctionExpression)[]\n    | undefined;\n\n  // The names of local variables that will be used/returned from the decoration\n  locals: t.Identifier | t.Identifier[] | undefined;\n}\n\n/**\n * Sort decoration info in the application order:\n * - static non-fields\n * - instance non-fields\n * - static fields\n * - instance fields\n *\n * @param {DecoratorInfo[]} info\n * @returns {DecoratorInfo[]} Sorted decoration info\n */\nfunction toSortedDecoratorInfo(info: DecoratorInfo[]): DecoratorInfo[] {\n  return [\n    ...info.filter(\n      el => el.isStatic && el.kind >= ACCESSOR && el.kind <= SETTER,\n    ),\n    ...info.filter(\n      el => !el.isStatic && el.kind >= ACCESSOR && el.kind <= SETTER,\n    ),\n    ...info.filter(el => el.isStatic && el.kind === FIELD),\n    ...info.filter(el => !el.isStatic && el.kind === FIELD),\n  ];\n}\n\ntype GenerateDecorationListResult = {\n  // The zipped decorators array that will be passed to generateDecorationExprs\n  decs: t.Expression[];\n  // Whether there are non-empty decorator this values\n  haveThis: boolean;\n};\n/**\n * Zip decorators and decorator this values into an array\n *\n * @param {t.Decorator[]} decorators\n * @param {((t.Expression | undefined)[])} decoratorsThis decorator this values\n * @param {DecoratorVersionKind} version\n * @returns {GenerateDecorationListResult}\n */\nfunction generateDecorationList(\n  decorators: t.Decorator[],\n  decoratorsThis: (t.Expression | undefined)[],\n  version: DecoratorVersionKind,\n): GenerateDecorationListResult {\n  const decsCount = decorators.length;\n  const haveOneThis = decoratorsThis.some(Boolean);\n  const decs: t.Expression[] = [];\n  for (let i = 0; i < decsCount; i++) {\n    if (\n      (version === \"2023-11\" ||\n        (!process.env.BABEL_8_BREAKING && version === \"2023-05\")) &&\n      haveOneThis\n    ) {\n      decs.push(\n        decoratorsThis[i] || t.unaryExpression(\"void\", t.numericLiteral(0)),\n      );\n    }\n    decs.push(decorators[i].expression);\n  }\n\n  return { haveThis: haveOneThis, decs };\n}\n\nfunction generateDecorationExprs(\n  decorationInfo: DecoratorInfo[],\n  version: DecoratorVersionKind,\n): t.ArrayExpression {\n  return t.arrayExpression(\n    decorationInfo.map(el => {\n      let flag = el.kind;\n      if (el.isStatic) {\n        flag +=\n          version === \"2023-11\" ||\n          (!process.env.BABEL_8_BREAKING && version === \"2023-05\")\n            ? STATIC\n            : STATIC_OLD_VERSION;\n      }\n      if (el.decoratorsHaveThis) flag += DECORATORS_HAVE_THIS;\n\n      return t.arrayExpression([\n        el.decoratorsArray,\n        t.numericLiteral(flag),\n        el.name,\n        ...(el.privateMethods || []),\n      ]);\n    }),\n  );\n}\n\nfunction extractElementLocalAssignments(decorationInfo: DecoratorInfo[]) {\n  const localIds: t.Identifier[] = [];\n\n  for (const el of decorationInfo) {\n    const { locals } = el;\n\n    if (Array.isArray(locals)) {\n      localIds.push(...locals);\n    } else if (locals !== undefined) {\n      localIds.push(locals);\n    }\n  }\n\n  return localIds;\n}\n\nfunction addCallAccessorsFor(\n  version: DecoratorVersionKind,\n  element: NodePath,\n  key: t.PrivateName,\n  getId: t.Identifier,\n  setId: t.Identifier,\n  isStatic: boolean,\n) {\n  element.insertAfter(\n    t.classPrivateMethod(\n      \"get\",\n      t.cloneNode(key),\n      [],\n      t.blockStatement([\n        t.returnStatement(\n          t.callExpression(\n            t.cloneNode(getId),\n            (process.env.BABEL_8_BREAKING || version === \"2023-11\") && isStatic\n              ? []\n              : [t.thisExpression()],\n          ),\n        ),\n      ]),\n      isStatic,\n    ),\n  );\n\n  element.insertAfter(\n    t.classPrivateMethod(\n      \"set\",\n      t.cloneNode(key),\n      [t.identifier(\"v\")],\n      t.blockStatement([\n        t.expressionStatement(\n          t.callExpression(\n            t.cloneNode(setId),\n            (process.env.BABEL_8_BREAKING || version === \"2023-11\") && isStatic\n              ? [t.identifier(\"v\")]\n              : [t.thisExpression(), t.identifier(\"v\")],\n          ),\n        ),\n      ]),\n      isStatic,\n    ),\n  );\n}\n\nfunction movePrivateAccessor(\n  element: NodePath<t.ClassPrivateMethod>,\n  key: t.PrivateName,\n  methodLocalVar: t.Identifier,\n  isStatic: boolean,\n) {\n  let params: (t.Identifier | t.RestElement)[];\n  let block: t.Statement[];\n\n  if (element.node.kind === \"set\") {\n    params = [t.identifier(\"v\")];\n    block = [\n      t.expressionStatement(\n        t.callExpression(methodLocalVar, [\n          t.thisExpression(),\n          t.identifier(\"v\"),\n        ]),\n      ),\n    ];\n  } else {\n    params = [];\n    block = [\n      t.returnStatement(t.callExpression(methodLocalVar, [t.thisExpression()])),\n    ];\n  }\n\n  element.replaceWith(\n    t.classPrivateMethod(\n      element.node.kind,\n      t.cloneNode(key),\n      params,\n      t.blockStatement(block),\n      isStatic,\n    ),\n  );\n}\n\nfunction isClassDecoratableElementPath(\n  path: NodePath<ClassElement>,\n): path is NodePath<ClassDecoratableElement> {\n  const { type } = path;\n\n  return (\n    type !== \"TSDeclareMethod\" &&\n    type !== \"TSIndexSignature\" &&\n    type !== \"StaticBlock\"\n  );\n}\n\nfunction staticBlockToIIFE(block: t.StaticBlock) {\n  return t.callExpression(\n    t.arrowFunctionExpression([], t.blockStatement(block.body)),\n    [],\n  );\n}\n\nfunction staticBlockToFunctionClosure(block: t.StaticBlock) {\n  return t.functionExpression(null, [], t.blockStatement(block.body));\n}\n\nfunction fieldInitializerToClosure(value: t.Expression) {\n  return t.functionExpression(\n    null,\n    [],\n    t.blockStatement([t.returnStatement(value)]),\n  );\n}\n\nfunction maybeSequenceExpression(exprs: t.Expression[]) {\n  if (exprs.length === 0) return t.unaryExpression(\"void\", t.numericLiteral(0));\n  if (exprs.length === 1) return exprs[0];\n  return t.sequenceExpression(exprs);\n}\n\n/**\n * Create FunctionExpression from a ClassPrivateMethod.\n * The returned FunctionExpression node takes ownership of the private method's body and params.\n *\n * @param {t.ClassPrivateMethod} node\n * @returns\n */\nfunction createFunctionExpressionFromPrivateMethod(node: t.ClassPrivateMethod) {\n  const { params, body, generator: isGenerator, async: isAsync } = node;\n  return t.functionExpression(\n    undefined,\n    // @ts-expect-error todo: Improve typings: TSParameterProperty is only allowed in constructor\n    params,\n    body,\n    isGenerator,\n    isAsync,\n  );\n}\n\nfunction createSetFunctionNameCall(\n  state: PluginPass,\n  className: t.Identifier | t.StringLiteral,\n) {\n  return t.callExpression(state.addHelper(\"setFunctionName\"), [\n    t.thisExpression(),\n    className,\n  ]);\n}\n\nfunction createToPropertyKeyCall(state: PluginPass, propertyKey: t.Expression) {\n  return t.callExpression(state.addHelper(\"toPropertyKey\"), [propertyKey]);\n}\n\nfunction createPrivateBrandCheckClosure(brandName: t.PrivateName) {\n  return t.arrowFunctionExpression(\n    [t.identifier(\"_\")],\n    t.binaryExpression(\"in\", t.cloneNode(brandName), t.identifier(\"_\")),\n  );\n}\n\nfunction usesPrivateField(expression: t.Node) {\n  if (process.env.BABEL_8_BREAKING) {\n    return t.traverseFast(expression, node => {\n      if (t.isPrivateName(node)) {\n        return t.traverseFast.stop;\n      }\n    });\n  } else {\n    try {\n      t.traverseFast(expression, node => {\n        if (t.isPrivateName(node)) {\n          // eslint-disable-next-line @typescript-eslint/only-throw-error\n          throw null;\n        }\n      });\n      return false;\n    } catch {\n      return true;\n    }\n  }\n}\n\n/**\n * Convert a non-computed class element to its equivalent computed form.\n *\n * This function is to provide a decorator evaluation storage from non-computed\n * class elements.\n *\n * @param {(NodePath<t.ClassProperty | t.ClassMethod>)} path A non-computed class property or method\n */\nfunction convertToComputedKey(path: NodePath<t.ClassProperty | t.ClassMethod>) {\n  const { node } = path;\n  node.computed = true;\n  if (t.isIdentifier(node.key)) {\n    node.key = t.stringLiteral(node.key.name);\n  }\n}\n\nfunction hasInstancePrivateAccess(path: NodePath, privateNames: string[]) {\n  let containsInstancePrivateAccess = false;\n  if (privateNames.length > 0) {\n    const privateNameVisitor = privateNameVisitorFactory<\n      PrivateNameVisitorState<null>,\n      null\n    >({\n      PrivateName(path, state) {\n        if (state.privateNamesMap.has(path.node.id.name)) {\n          containsInstancePrivateAccess = true;\n          path.stop();\n        }\n      },\n    });\n    const privateNamesMap = new Map<string, null>();\n    for (const name of privateNames) {\n      privateNamesMap.set(name, null);\n    }\n    path.traverse(privateNameVisitor, {\n      privateNamesMap: privateNamesMap,\n    });\n  }\n  return containsInstancePrivateAccess;\n}\n\nfunction checkPrivateMethodUpdateError(\n  path: NodePath<t.Class>,\n  decoratedPrivateMethods: Set<string>,\n) {\n  const privateNameVisitor = privateNameVisitorFactory<\n    PrivateNameVisitorState<null>,\n    null\n  >({\n    PrivateName(path, state) {\n      if (!state.privateNamesMap.has(path.node.id.name)) return;\n\n      const parentPath = path.parentPath;\n      const parentParentPath = parentPath.parentPath;\n\n      if (\n        // this.bar().#x = 123;\n        (parentParentPath.node.type === \"AssignmentExpression\" &&\n          parentParentPath.node.left === parentPath.node) ||\n        // this.#x++;\n        parentParentPath.node.type === \"UpdateExpression\" ||\n        // ([...this.#x] = foo);\n        parentParentPath.node.type === \"RestElement\" ||\n        // ([this.#x] = foo);\n        parentParentPath.node.type === \"ArrayPattern\" ||\n        // ({ a: this.#x } = bar);\n        (parentParentPath.node.type === \"ObjectProperty\" &&\n          parentParentPath.node.value === parentPath.node &&\n          parentParentPath.parentPath.type === \"ObjectPattern\") ||\n        // for (this.#x of []);\n        (parentParentPath.node.type === \"ForOfStatement\" &&\n          parentParentPath.node.left === parentPath.node)\n      ) {\n        throw path.buildCodeFrameError(\n          `Decorated private methods are read-only, but \"#${path.node.id.name}\" is updated via this expression.`,\n        );\n      }\n    },\n  });\n  const privateNamesMap = new Map<string, null>();\n  for (const name of decoratedPrivateMethods) {\n    privateNamesMap.set(name, null);\n  }\n  path.traverse(privateNameVisitor, {\n    privateNamesMap: privateNamesMap,\n  });\n}\n\n/**\n * Apply decorator and accessor transform\n * @param path The class path.\n * @param state The plugin pass.\n * @param constantSuper The constantSuper compiler assumption.\n * @param ignoreFunctionLength The ignoreFunctionLength compiler assumption.\n * @param className The class name.\n * - If className is a `string`, it will be a valid identifier name that can safely serve as a class id\n * - If className is an Identifier, it is the reference to the name derived from NamedEvaluation\n * - If className is a StringLiteral, it is derived from NamedEvaluation on literal computed keys\n * @param propertyVisitor The visitor that should be applied on property prior to the transform.\n * @param version The decorator version.\n * @returns The transformed class path or undefined if there are no decorators.\n */\nfunction transformClass(\n  path: NodePath<t.Class>,\n  state: PluginPass,\n  constantSuper: boolean,\n  ignoreFunctionLength: boolean,\n  className: string | t.Identifier | t.StringLiteral | undefined,\n  propertyVisitor: Visitor<PluginPass>,\n  version: DecoratorVersionKind,\n): NodePath | undefined {\n  const body = path.get(\"body.body\");\n\n  const classDecorators = path.node.decorators;\n  let hasElementDecorators = false;\n  let hasComputedKeysSideEffects = false;\n  let elemDecsUseFnContext = false;\n\n  const generateClassPrivateUid = createLazyPrivateUidGeneratorForClass(path);\n\n  const classAssignments: t.AssignmentExpression[] = [];\n  const scopeParent: Scope = path.scope.parent;\n  const memoiseExpression = (\n    expression: t.Expression,\n    hint: string,\n    assignments: t.AssignmentExpression[],\n  ) => {\n    const localEvaluatedId = generateLetUidIdentifier(scopeParent, hint);\n    assignments.push(t.assignmentExpression(\"=\", localEvaluatedId, expression));\n    return t.cloneNode(localEvaluatedId);\n  };\n\n  let protoInitLocal: t.Identifier;\n  let staticInitLocal: t.Identifier;\n  const classIdName = path.node.id?.name;\n  // Whether to generate a setFunctionName call to preserve the class name\n  const setClassName = typeof className === \"object\" ? className : undefined;\n  // Check if the decorator does not reference function-specific\n  // context or the given identifier name or contains yield or await expression.\n  // `true` means \"maybe\" and `false` means \"no\".\n  const usesFunctionContextOrYieldAwait = (decorator: t.Decorator) => {\n    if (process.env.BABEL_8_BREAKING) {\n      return t.traverseFast(decorator, node => {\n        if (\n          t.isThisExpression(node) ||\n          t.isSuper(node) ||\n          t.isYieldExpression(node) ||\n          t.isAwaitExpression(node) ||\n          t.isIdentifier(node, { name: \"arguments\" }) ||\n          (classIdName && t.isIdentifier(node, { name: classIdName })) ||\n          (t.isMetaProperty(node) && node.meta.name !== \"import\")\n        ) {\n          return t.traverseFast.stop;\n        }\n      });\n    } else {\n      try {\n        t.traverseFast(decorator, node => {\n          if (\n            t.isThisExpression(node) ||\n            t.isSuper(node) ||\n            t.isYieldExpression(node) ||\n            t.isAwaitExpression(node) ||\n            t.isIdentifier(node, { name: \"arguments\" }) ||\n            (classIdName && t.isIdentifier(node, { name: classIdName })) ||\n            (t.isMetaProperty(node) && node.meta.name !== \"import\")\n          ) {\n            // eslint-disable-next-line @typescript-eslint/only-throw-error\n            throw null;\n          }\n        });\n        return false;\n      } catch {\n        return true;\n      }\n    }\n  };\n\n  const instancePrivateNames: string[] = [];\n  // Iterate over the class to see if we need to decorate it, and also to\n  // transform simple auto accessors which are not decorated, and handle inferred\n  // class name when the initializer of the class field is a class expression\n  for (const element of body) {\n    if (!isClassDecoratableElementPath(element)) {\n      continue;\n    }\n\n    const elementNode = element.node;\n\n    if (!elementNode.static && t.isPrivateName(elementNode.key)) {\n      instancePrivateNames.push(elementNode.key.id.name);\n    }\n\n    if (isDecorated(elementNode)) {\n      switch (elementNode.type) {\n        case \"ClassProperty\":\n          // @ts-expect-error todo: propertyVisitor.ClassProperty should be callable. Improve typings.\n          propertyVisitor.ClassProperty(\n            element as NodePath<t.ClassProperty>,\n            state,\n          );\n          break;\n        case \"ClassPrivateProperty\":\n          // @ts-expect-error todo: propertyVisitor.ClassPrivateProperty should be callable. Improve typings.\n          propertyVisitor.ClassPrivateProperty(\n            element as NodePath<t.ClassPrivateProperty>,\n            state,\n          );\n          break;\n        case \"ClassAccessorProperty\":\n          // @ts-expect-error todo: propertyVisitor.ClassAccessorProperty should be callable. Improve typings.\n          propertyVisitor.ClassAccessorProperty(\n            element as NodePath<t.ClassAccessorProperty>,\n            state,\n          );\n          if (version === \"2023-11\") {\n            break;\n          }\n        /* fallthrough */\n        default:\n          if (elementNode.static) {\n            staticInitLocal ??= generateLetUidIdentifier(\n              scopeParent,\n              \"initStatic\",\n            );\n          } else {\n            protoInitLocal ??= generateLetUidIdentifier(\n              scopeParent,\n              \"initProto\",\n            );\n          }\n          break;\n      }\n      hasElementDecorators = true;\n      elemDecsUseFnContext ||= elementNode.decorators.some(\n        usesFunctionContextOrYieldAwait,\n      );\n    } else if (elementNode.type === \"ClassAccessorProperty\") {\n      // @ts-expect-error todo: propertyVisitor.ClassAccessorProperty should be callable. Improve typings.\n      propertyVisitor.ClassAccessorProperty(\n        element as NodePath<t.ClassAccessorProperty>,\n        state,\n      );\n      const { key, value, static: isStatic, computed } = elementNode;\n\n      const newId = generateClassPrivateUid();\n      const newField = generateClassProperty(newId, value, isStatic);\n      const keyPath = element.get(\"key\");\n      const [newPath] = element.replaceWith(newField);\n\n      let getterKey, setterKey;\n      if (computed && !keyPath.isConstantExpression()) {\n        getterKey = memoiseComputedKey(\n          // @ts-ignore(Babel 7 vs Babel 8) Babel 8 has better type definitions\n          createToPropertyKeyCall(state, key),\n          scopeParent,\n          scopeParent.generateUid(\"computedKey\"),\n        )!;\n        setterKey = t.cloneNode(getterKey.left);\n      } else {\n        getterKey = t.cloneNode(key);\n        setterKey = t.cloneNode(key);\n      }\n\n      assignIdForAnonymousClass(path, className);\n\n      addProxyAccessorsFor(\n        path.node.id,\n        newPath,\n        getterKey,\n        setterKey,\n        newId,\n        computed,\n        isStatic,\n        version,\n      );\n    }\n\n    if (\"computed\" in element.node && element.node.computed) {\n      hasComputedKeysSideEffects ||= !scopeParent.isStatic(element.node.key);\n    }\n  }\n\n  if (!classDecorators && !hasElementDecorators) {\n    if (!path.node.id && typeof className === \"string\") {\n      path.node.id = t.identifier(className);\n    }\n    if (setClassName) {\n      path.node.body.body.unshift(\n        createStaticBlockFromExpressions([\n          createSetFunctionNameCall(state, setClassName),\n        ]),\n      );\n    }\n    // If nothing is decorated and no assignments inserted, return\n    return;\n  }\n\n  const elementDecoratorInfo: DecoratorInfo[] = [];\n\n  let constructorPath: NodePath<t.ClassMethod> | undefined;\n  const decoratedPrivateMethods = new Set<string>();\n\n  let classInitLocal: t.Identifier, classIdLocal: t.Identifier;\n  let decoratorReceiverId: t.Identifier | null = null;\n\n  // Memoise the this value `a.b` of decorator member expressions `@a.b.dec`,\n  type HandleDecoratorsResult = {\n    // whether the whole decorator list requires memoisation\n    hasSideEffects: boolean;\n    usesFnContext: boolean;\n    // the this value of each decorator if applicable\n    decoratorsThis: (t.Expression | undefined)[];\n  };\n  function handleDecorators(decorators: t.Decorator[]): HandleDecoratorsResult {\n    let hasSideEffects = false;\n    let usesFnContext = false;\n    const decoratorsThis: (t.Expression | null)[] = [];\n    for (const decorator of decorators) {\n      const { expression } = decorator;\n      let object;\n      if (\n        (version === \"2023-11\" ||\n          (!process.env.BABEL_8_BREAKING && version === \"2023-05\")) &&\n        t.isMemberExpression(expression)\n      ) {\n        if (t.isSuper(expression.object)) {\n          object = t.thisExpression();\n        } else if (scopeParent.isStatic(expression.object)) {\n          object = t.cloneNode(expression.object);\n        } else {\n          decoratorReceiverId ??= generateLetUidIdentifier(scopeParent, \"obj\");\n          object = t.assignmentExpression(\n            \"=\",\n            t.cloneNode(decoratorReceiverId),\n            expression.object,\n          );\n          expression.object = t.cloneNode(decoratorReceiverId);\n        }\n      }\n      decoratorsThis.push(object);\n      hasSideEffects ||= !scopeParent.isStatic(expression);\n      usesFnContext ||= usesFunctionContextOrYieldAwait(decorator);\n    }\n    return { hasSideEffects, usesFnContext, decoratorsThis };\n  }\n\n  const willExtractSomeElemDecs =\n    hasComputedKeysSideEffects ||\n    (process.env.BABEL_8_BREAKING\n      ? elemDecsUseFnContext\n      : elemDecsUseFnContext || version !== \"2023-11\");\n\n  let needsDeclarationForClassBinding = false;\n  let classDecorationsFlag = 0;\n  let classDecorations: t.Expression[] = [];\n  let classDecorationsId: t.Identifier;\n  let computedKeyAssignments: t.AssignmentExpression[] = [];\n  if (classDecorators) {\n    classInitLocal = generateLetUidIdentifier(scopeParent, \"initClass\");\n    needsDeclarationForClassBinding = path.isClassDeclaration();\n    ({ id: classIdLocal, path } = replaceClassWithVar(path, className));\n\n    path.node.decorators = null;\n\n    const classDecsUsePrivateName = classDecorators.some(usesPrivateField);\n    const { hasSideEffects, usesFnContext, decoratorsThis } =\n      handleDecorators(classDecorators);\n\n    const { haveThis, decs } = generateDecorationList(\n      classDecorators,\n      decoratorsThis,\n      version,\n    );\n    classDecorationsFlag = haveThis ? 1 : 0;\n    classDecorations = decs;\n\n    if (\n      usesFnContext ||\n      (hasSideEffects && willExtractSomeElemDecs) ||\n      classDecsUsePrivateName\n    ) {\n      classDecorationsId = memoiseExpression(\n        t.arrayExpression(classDecorations),\n        \"classDecs\",\n        classAssignments,\n      );\n    }\n\n    if (!hasElementDecorators) {\n      // Sync body paths as non-decorated computed accessors have been transpiled\n      // to getter-setter pairs.\n      for (const element of path.get(\"body.body\")) {\n        const { node } = element;\n        const isComputed = \"computed\" in node && node.computed;\n        if (isComputed) {\n          if (element.isClassProperty({ static: true })) {\n            if (!element.get(\"key\").isConstantExpression()) {\n              const key = (node as t.ClassProperty).key;\n              const maybeAssignment = memoiseComputedKey(\n                key,\n                scopeParent,\n                scopeParent.generateUid(\"computedKey\"),\n              );\n              if (maybeAssignment != null) {\n                // If it is a static computed field within a decorated class, we move the computed key\n                // into `computedKeyAssignments` which will be then moved into the non-static class,\n                // to ensure that the evaluation order and private environment are correct\n                node.key = t.cloneNode(maybeAssignment.left);\n                computedKeyAssignments.push(maybeAssignment);\n              }\n            }\n          } else if (computedKeyAssignments.length > 0) {\n            prependExpressionsToComputedKey(\n              computedKeyAssignments,\n              element as NodePath<ClassElementCanHaveComputedKeys>,\n            );\n            computedKeyAssignments = [];\n          }\n        }\n      }\n    }\n  } else {\n    assignIdForAnonymousClass(path, className);\n    classIdLocal = t.cloneNode(path.node.id);\n  }\n\n  let lastInstancePrivateName: t.PrivateName;\n  let needsInstancePrivateBrandCheck = false;\n\n  let fieldInitializerExpressions = [];\n  let staticFieldInitializerExpressions: t.Expression[] = [];\n\n  if (hasElementDecorators) {\n    if (protoInitLocal) {\n      const protoInitCall = t.callExpression(t.cloneNode(protoInitLocal), [\n        t.thisExpression(),\n      ]);\n      fieldInitializerExpressions.push(protoInitCall);\n    }\n    for (const element of body) {\n      if (!isClassDecoratableElementPath(element)) {\n        if (\n          staticFieldInitializerExpressions.length > 0 &&\n          element.isStaticBlock()\n        ) {\n          prependExpressionsToStaticBlock(\n            staticFieldInitializerExpressions,\n            element,\n          );\n          staticFieldInitializerExpressions = [];\n        }\n        continue;\n      }\n\n      const { node } = element;\n      const decorators = node.decorators;\n\n      const hasDecorators = !!decorators?.length;\n\n      const isComputed = \"computed\" in node && node.computed;\n\n      let name = \"computedKey\";\n\n      if (node.key.type === \"PrivateName\") {\n        name = node.key.id.name;\n      } else if (!isComputed && node.key.type === \"Identifier\") {\n        name = node.key.name;\n      }\n      let decoratorsArray: t.Identifier | t.ArrayExpression | t.Expression;\n      let decoratorsHaveThis;\n\n      if (hasDecorators) {\n        const { hasSideEffects, usesFnContext, decoratorsThis } =\n          handleDecorators(decorators);\n        const { decs, haveThis } = generateDecorationList(\n          decorators,\n          decoratorsThis,\n          version,\n        );\n        decoratorsHaveThis = haveThis;\n        decoratorsArray = decs.length === 1 ? decs[0] : t.arrayExpression(decs);\n        if (usesFnContext || (hasSideEffects && willExtractSomeElemDecs)) {\n          decoratorsArray = memoiseExpression(\n            decoratorsArray,\n            name + \"Decs\",\n            computedKeyAssignments,\n          );\n        }\n      }\n\n      if (isComputed) {\n        if (!element.get(\"key\").isConstantExpression()) {\n          const key = node.key as t.Expression;\n          const maybeAssignment = memoiseComputedKey(\n            hasDecorators ? createToPropertyKeyCall(state, key) : key,\n            scopeParent,\n            scopeParent.generateUid(\"computedKey\"),\n          );\n          if (maybeAssignment != null) {\n            // If it is a static computed field within a decorated class, we move the computed key\n            // into `computedKeyAssignments` which will be then moved into the non-static class,\n            // to ensure that the evaluation order and private environment are correct\n            if (classDecorators && element.isClassProperty({ static: true })) {\n              node.key = t.cloneNode(maybeAssignment.left);\n              computedKeyAssignments.push(maybeAssignment);\n            } else {\n              node.key = maybeAssignment;\n            }\n          }\n        }\n      }\n\n      const { key, static: isStatic } = node;\n\n      const isPrivate = key.type === \"PrivateName\";\n\n      const kind = getElementKind(element);\n\n      if (isPrivate && !isStatic) {\n        if (hasDecorators) {\n          needsInstancePrivateBrandCheck = true;\n        }\n        if (t.isClassPrivateProperty(node) || !lastInstancePrivateName) {\n          lastInstancePrivateName = key;\n        }\n      }\n\n      if (element.isClassMethod({ kind: \"constructor\" })) {\n        constructorPath = element;\n      }\n\n      let locals: t.Identifier[];\n      if (hasDecorators) {\n        let privateMethods: (\n          | t.FunctionExpression\n          | t.ArrowFunctionExpression\n        )[];\n\n        let nameExpr: t.Expression;\n\n        if (isComputed) {\n          nameExpr = getComputedKeyMemoiser(\n            element.get(\"key\") as NodePath<t.Expression>,\n          );\n        } else if (key.type === \"PrivateName\") {\n          nameExpr = t.stringLiteral(key.id.name);\n        } else if (key.type === \"Identifier\") {\n          nameExpr = t.stringLiteral(key.name);\n        } else {\n          nameExpr = t.cloneNode(key as t.Expression);\n        }\n\n        if (kind === ACCESSOR) {\n          const { value } = element.node as t.ClassAccessorProperty;\n\n          const params: t.Expression[] =\n            (process.env.BABEL_8_BREAKING || version === \"2023-11\") && isStatic\n              ? []\n              : [t.thisExpression()];\n\n          if (value) {\n            params.push(t.cloneNode(value));\n          }\n\n          const newId = generateClassPrivateUid();\n          const newFieldInitId = generateLetUidIdentifier(\n            scopeParent,\n            `init_${name}`,\n          );\n          const newValue = t.callExpression(\n            t.cloneNode(newFieldInitId),\n            params,\n          );\n\n          const newField = generateClassProperty(newId, newValue, isStatic);\n          const [newPath] = element.replaceWith(newField);\n\n          if (isPrivate) {\n            privateMethods = extractProxyAccessorsFor(newId, version);\n\n            const getId = generateLetUidIdentifier(scopeParent, `get_${name}`);\n            const setId = generateLetUidIdentifier(scopeParent, `set_${name}`);\n\n            addCallAccessorsFor(version, newPath, key, getId, setId, isStatic);\n\n            locals = [newFieldInitId, getId, setId];\n          } else {\n            assignIdForAnonymousClass(path, className);\n            addProxyAccessorsFor(\n              path.node.id,\n              newPath,\n              t.cloneNode(key),\n              t.isAssignmentExpression(key)\n                ? t.cloneNode(key.left as t.Identifier)\n                : t.cloneNode(key),\n              newId,\n              isComputed,\n              isStatic,\n              version,\n            );\n            locals = [newFieldInitId];\n          }\n        } else if (kind === FIELD) {\n          const initId = generateLetUidIdentifier(scopeParent, `init_${name}`);\n          const valuePath = (\n            element as NodePath<t.ClassProperty | t.ClassPrivateProperty>\n          ).get(\"value\");\n\n          const args: t.Expression[] =\n            (process.env.BABEL_8_BREAKING || version === \"2023-11\") && isStatic\n              ? []\n              : [t.thisExpression()];\n          if (valuePath.node) args.push(valuePath.node);\n\n          valuePath.replaceWith(t.callExpression(t.cloneNode(initId), args));\n\n          locals = [initId];\n\n          if (isPrivate) {\n            privateMethods = extractProxyAccessorsFor(key, version);\n          }\n        } else if (isPrivate) {\n          const callId = generateLetUidIdentifier(scopeParent, `call_${name}`);\n          locals = [callId];\n\n          const replaceSupers = new ReplaceSupers({\n            constantSuper,\n            methodPath: element as NodePath<t.ClassPrivateMethod>,\n            objectRef: classIdLocal,\n            superRef: path.node.superClass,\n            file: state.file,\n            refToPreserve: classIdLocal,\n          });\n\n          replaceSupers.replace();\n\n          privateMethods = [\n            createFunctionExpressionFromPrivateMethod(\n              element.node as t.ClassPrivateMethod,\n            ),\n          ];\n\n          if (kind === GETTER || kind === SETTER) {\n            movePrivateAccessor(\n              element as NodePath<t.ClassPrivateMethod>,\n              t.cloneNode(key),\n              t.cloneNode(callId),\n              isStatic,\n            );\n          } else {\n            const node = element.node as t.ClassPrivateMethod;\n\n            // Unshift\n            path.node.body.body.unshift(\n              t.classPrivateProperty(key, t.cloneNode(callId), [], node.static),\n            );\n\n            decoratedPrivateMethods.add(key.id.name);\n\n            element.remove();\n          }\n        }\n\n        elementDecoratorInfo.push({\n          kind,\n          decoratorsArray,\n          decoratorsHaveThis,\n          name: nameExpr,\n          isStatic,\n          privateMethods,\n          locals,\n        });\n\n        if (element.node) {\n          element.node.decorators = null;\n        }\n      }\n\n      if (isComputed && computedKeyAssignments.length > 0) {\n        if (classDecorators && element.isClassProperty({ static: true })) {\n          // If the class is decorated, we don't insert computedKeyAssignments here\n          // because any non-static computed elements defined after it will be moved\n          // into the non-static class, so they will be evaluated before the key of\n          // this field. At this momemnt, its key must be either a constant expression\n          // or a uid reference which has been assigned _within_ the non-static class.\n        } else {\n          prependExpressionsToComputedKey(\n            computedKeyAssignments,\n            (kind === ACCESSOR\n              ? element.getNextSibling() // the transpiled getter of the accessor property\n              : element) as NodePath<ClassElementCanHaveComputedKeys>,\n          );\n          computedKeyAssignments = [];\n        }\n      }\n\n      if (\n        fieldInitializerExpressions.length > 0 &&\n        !isStatic &&\n        (kind === FIELD || kind === ACCESSOR)\n      ) {\n        prependExpressionsToFieldInitializer(\n          fieldInitializerExpressions,\n          element as NodePath<t.ClassProperty | t.ClassPrivateProperty>,\n        );\n        fieldInitializerExpressions = [];\n      }\n\n      if (\n        staticFieldInitializerExpressions.length > 0 &&\n        isStatic &&\n        (kind === FIELD || kind === ACCESSOR)\n      ) {\n        prependExpressionsToFieldInitializer(\n          staticFieldInitializerExpressions,\n          element as NodePath<t.ClassProperty | t.ClassPrivateProperty>,\n        );\n        staticFieldInitializerExpressions = [];\n      }\n\n      if (hasDecorators && version === \"2023-11\") {\n        if (kind === FIELD || kind === ACCESSOR) {\n          const initExtraId = generateLetUidIdentifier(\n            scopeParent,\n            `init_extra_${name}`,\n          );\n          locals.push(initExtraId);\n          const initExtraCall = t.callExpression(\n            t.cloneNode(initExtraId),\n            isStatic ? [] : [t.thisExpression()],\n          );\n          if (!isStatic) {\n            fieldInitializerExpressions.push(initExtraCall);\n          } else {\n            staticFieldInitializerExpressions.push(initExtraCall);\n          }\n        }\n      }\n    }\n  }\n\n  if (computedKeyAssignments.length > 0) {\n    const elements = path.get(\"body.body\");\n    let lastComputedElement: NodePath<ClassElementCanHaveComputedKeys>;\n    for (let i = elements.length - 1; i >= 0; i--) {\n      const path = elements[i];\n      const node = path.node as ClassElementCanHaveComputedKeys;\n      if (node.computed) {\n        if (classDecorators && t.isClassProperty(node, { static: true })) {\n          continue;\n        }\n        lastComputedElement = path as NodePath<ClassElementCanHaveComputedKeys>;\n        break;\n      }\n    }\n    if (lastComputedElement != null) {\n      appendExpressionsToComputedKey(\n        computedKeyAssignments,\n        lastComputedElement,\n      );\n      computedKeyAssignments = [];\n    } else {\n      // If there is no computed key, we will try to convert the first non-computed\n      // class element into a computed key and insert assignments there. This will\n      // be done after we handle the class elements split when the class is decorated.\n    }\n  }\n\n  if (fieldInitializerExpressions.length > 0) {\n    const isDerivedClass = !!path.node.superClass;\n    if (constructorPath) {\n      if (isDerivedClass) {\n        insertExpressionsAfterSuperCallAndOptimize(\n          fieldInitializerExpressions,\n          constructorPath,\n          protoInitLocal,\n        );\n      } else {\n        prependExpressionsToConstructor(\n          fieldInitializerExpressions,\n          constructorPath,\n        );\n      }\n    } else {\n      path.node.body.body.unshift(\n        createConstructorFromExpressions(\n          fieldInitializerExpressions,\n          isDerivedClass,\n        ),\n      );\n    }\n    fieldInitializerExpressions = [];\n  }\n\n  if (staticFieldInitializerExpressions.length > 0) {\n    path.node.body.body.push(\n      createStaticBlockFromExpressions(staticFieldInitializerExpressions),\n    );\n    staticFieldInitializerExpressions = [];\n  }\n\n  const sortedElementDecoratorInfo =\n    toSortedDecoratorInfo(elementDecoratorInfo);\n\n  const elementDecorations = generateDecorationExprs(\n    process.env.BABEL_8_BREAKING || version === \"2023-11\"\n      ? elementDecoratorInfo\n      : sortedElementDecoratorInfo,\n    version,\n  );\n\n  const elementLocals: t.Identifier[] = extractElementLocalAssignments(\n    sortedElementDecoratorInfo,\n  );\n\n  if (protoInitLocal) {\n    elementLocals.push(protoInitLocal);\n  }\n\n  if (staticInitLocal) {\n    elementLocals.push(staticInitLocal);\n  }\n\n  const classLocals: t.Identifier[] = [];\n  let classInitInjected = false;\n  const classInitCall =\n    classInitLocal && t.callExpression(t.cloneNode(classInitLocal), []);\n\n  let originalClassPath = path;\n  const originalClass = path.node;\n\n  const staticClosures: t.AssignmentExpression[] = [];\n  if (classDecorators) {\n    classLocals.push(classIdLocal, classInitLocal);\n    const statics: (\n      | t.ClassProperty\n      | t.ClassPrivateProperty\n      | t.ClassPrivateMethod\n    )[] = [];\n    path.get(\"body.body\").forEach(element => {\n      if (\n        element.isStaticBlock() ||\n        (!element.isClassMethod() && element.node.static)\n      ) {\n        const replaceSupers = new ReplaceSupers({\n          constantSuper,\n          methodPath: element as NodePath<\n            // Any ClassAccessorProperty has been transpiled at this point\n            Exclude<\n              ClassDecoratableElement,\n              t.ClassAccessorProperty | t.ClassMethod\n            >\n          >,\n          objectRef: classIdLocal,\n          superRef: path.node.superClass,\n          file: state.file,\n          refToPreserve: classIdLocal,\n        });\n        replaceSupers.replace();\n      }\n      // Static blocks cannot be compiled to \"instance blocks\", but we can inline\n      // them as IIFEs in the next property.\n      if (element.isStaticBlock()) {\n        if (hasInstancePrivateAccess(element, instancePrivateNames)) {\n          const staticBlockClosureId = memoiseExpression(\n            staticBlockToFunctionClosure(element.node),\n            \"staticBlock\",\n            staticClosures,\n          );\n          staticFieldInitializerExpressions.push(\n            t.callExpression(\n              t.memberExpression(staticBlockClosureId, t.identifier(\"call\")),\n              [t.thisExpression()],\n            ),\n          );\n        } else {\n          staticFieldInitializerExpressions.push(\n            staticBlockToIIFE(element.node),\n          );\n        }\n        element.remove();\n        return;\n      }\n\n      if (\n        (element.isClassProperty() || element.isClassPrivateProperty()) &&\n        element.node.static\n      ) {\n        const valuePath = (\n          element as NodePath<t.ClassProperty | t.ClassPrivateProperty>\n        ).get(\"value\");\n        if (hasInstancePrivateAccess(valuePath, instancePrivateNames)) {\n          const fieldValueClosureId = memoiseExpression(\n            fieldInitializerToClosure(valuePath.node),\n            \"fieldValue\",\n            staticClosures,\n          );\n          valuePath.replaceWith(\n            t.callExpression(\n              t.memberExpression(fieldValueClosureId, t.identifier(\"call\")),\n              [t.thisExpression()],\n            ),\n          );\n        }\n        if (staticFieldInitializerExpressions.length > 0) {\n          prependExpressionsToFieldInitializer(\n            staticFieldInitializerExpressions,\n            element,\n          );\n          staticFieldInitializerExpressions = [];\n        }\n        element.node.static = false;\n        statics.push(element.node);\n        element.remove();\n      } else if (element.isClassPrivateMethod({ static: true })) {\n        // At this moment the element must not have decorators, so any private name\n        // within the element must come from either params or body\n        if (hasInstancePrivateAccess(element, instancePrivateNames)) {\n          const privateMethodDelegateId = memoiseExpression(\n            createFunctionExpressionFromPrivateMethod(element.node),\n            element.get(\"key.id\").node.name,\n            staticClosures,\n          );\n\n          if (ignoreFunctionLength) {\n            element.node.params = [t.restElement(t.identifier(\"arg\"))];\n            element.node.body = t.blockStatement([\n              t.returnStatement(\n                t.callExpression(\n                  t.memberExpression(\n                    privateMethodDelegateId,\n                    t.identifier(\"apply\"),\n                  ),\n                  [t.thisExpression(), t.identifier(\"arg\")],\n                ),\n              ),\n            ]);\n          } else {\n            element.node.params = element.node.params.map((p, i) => {\n              if (t.isRestElement(p)) {\n                return t.restElement(t.identifier(\"arg\"));\n              } else {\n                return t.identifier(\"_\" + i);\n              }\n            });\n            element.node.body = t.blockStatement([\n              t.returnStatement(\n                t.callExpression(\n                  t.memberExpression(\n                    privateMethodDelegateId,\n                    t.identifier(\"apply\"),\n                  ),\n                  [t.thisExpression(), t.identifier(\"arguments\")],\n                ),\n              ),\n            ]);\n          }\n        }\n        // @ts-expect-error Transforms static method to non-statics attached to the wrapper class\n        element.node.static = false;\n        statics.push(element.node);\n        element.remove();\n      }\n    });\n\n    if (statics.length > 0 || staticFieldInitializerExpressions.length > 0) {\n      const staticsClass = template.expression.ast`\n        class extends ${state.addHelper(\"identity\")} {}\n      ` as t.ClassExpression;\n      staticsClass.body.body = [\n        // Insert the original class to a computed key of the wrapper so that\n        // 1) they share the same function context with the wrapper class\n        // 2) the memoisation of static computed field is evaluated before they\n        //    are referenced in the wrapper class keys\n        // Note that any static elements of the wrapper class can not be accessed\n        // in the user land, so we don't have to remove the temporary class field.\n        t.classProperty(\n          t.toExpression(originalClass),\n          undefined,\n          undefined,\n          undefined,\n          /* computed */ true,\n          /* static */ true,\n        ),\n        ...statics,\n      ];\n\n      const constructorBody: t.Expression[] = [];\n\n      const newExpr = t.newExpression(staticsClass, []);\n\n      if (staticFieldInitializerExpressions.length > 0) {\n        constructorBody.push(...staticFieldInitializerExpressions);\n      }\n      if (classInitCall) {\n        classInitInjected = true;\n        constructorBody.push(classInitCall);\n      }\n      if (constructorBody.length > 0) {\n        constructorBody.unshift(\n          t.callExpression(t.super(), [t.cloneNode(classIdLocal)]),\n        );\n\n        // set isDerivedClass to false as we have already prepended super call\n        staticsClass.body.body.push(\n          createConstructorFromExpressions(\n            constructorBody,\n            /* isDerivedClass */ false,\n          ),\n        );\n      } else {\n        newExpr.arguments.push(t.cloneNode(classIdLocal));\n      }\n\n      const [newPath] = path.replaceWith(newExpr);\n\n      // update originalClassPath according to the new AST\n      originalClassPath = (\n        newPath.get(\"callee\").get(\"body\") as NodePath<t.Class>\n      ).get(\"body.0.key\");\n    }\n  }\n  if (!classInitInjected && classInitCall) {\n    path.node.body.body.push(\n      t.staticBlock([t.expressionStatement(classInitCall)]),\n    );\n  }\n\n  let { superClass } = originalClass;\n  if (\n    superClass &&\n    (process.env.BABEL_8_BREAKING ||\n      version === \"2023-11\" ||\n      version === \"2023-05\")\n  ) {\n    const id = path.scope.maybeGenerateMemoised(superClass);\n    if (id) {\n      originalClass.superClass = t.assignmentExpression(\"=\", id, superClass);\n      superClass = id;\n    }\n  }\n\n  const applyDecoratorWrapper = t.staticBlock([]);\n  originalClass.body.body.unshift(applyDecoratorWrapper);\n  const applyDecsBody = applyDecoratorWrapper.body;\n  if (computedKeyAssignments.length > 0) {\n    const elements = originalClassPath.get(\"body.body\");\n    let firstPublicElement: NodePath<t.ClassProperty | t.ClassMethod>;\n    for (const path of elements) {\n      if (\n        (path.isClassProperty() || path.isClassMethod()) &&\n        (path.node as t.ClassMethod).kind !== \"constructor\"\n      ) {\n        firstPublicElement = path;\n        break;\n      }\n    }\n    if (firstPublicElement != null) {\n      // Convert its key to a computed one to host the decorator evaluations.\n      convertToComputedKey(firstPublicElement);\n      prependExpressionsToComputedKey(\n        computedKeyAssignments,\n        firstPublicElement,\n      );\n    } else {\n      // When there is no public class elements, we inject a temporary computed\n      // field whose key will host the decorator evaluations. The field will be\n      // deleted immediately after it is defined.\n      originalClass.body.body.unshift(\n        t.classProperty(\n          t.sequenceExpression([\n            ...computedKeyAssignments,\n            t.stringLiteral(\"_\"),\n          ]),\n          undefined,\n          undefined,\n          undefined,\n          /* computed */ true,\n          /* static */ true,\n        ),\n      );\n      applyDecsBody.push(\n        t.expressionStatement(\n          t.unaryExpression(\n            \"delete\",\n            t.memberExpression(t.thisExpression(), t.identifier(\"_\")),\n          ),\n        ),\n      );\n    }\n    computedKeyAssignments = [];\n  }\n\n  applyDecsBody.push(\n    t.expressionStatement(\n      createLocalsAssignment(\n        elementLocals,\n        classLocals,\n        elementDecorations,\n        classDecorationsId ?? t.arrayExpression(classDecorations),\n        t.numericLiteral(classDecorationsFlag),\n        needsInstancePrivateBrandCheck ? lastInstancePrivateName : null,\n        setClassName,\n        t.cloneNode(superClass),\n        state,\n        version,\n      ),\n    ),\n  );\n  if (staticInitLocal) {\n    applyDecsBody.push(\n      t.expressionStatement(\n        t.callExpression(t.cloneNode(staticInitLocal), [t.thisExpression()]),\n      ),\n    );\n  }\n  if (staticClosures.length > 0) {\n    applyDecsBody.push(\n      ...staticClosures.map(expr => t.expressionStatement(expr)),\n    );\n  }\n\n  // When path is a ClassExpression, path.insertBefore will convert `path`\n  // into a SequenceExpression\n  path.insertBefore(classAssignments.map(expr => t.expressionStatement(expr)));\n\n  if (needsDeclarationForClassBinding) {\n    const classBindingInfo = scopeParent.getBinding(classIdLocal.name);\n    if (!classBindingInfo.constantViolations.length) {\n      // optimization: reuse the inner class binding if the outer class binding is not mutated\n      path.insertBefore(\n        t.variableDeclaration(\"let\", [\n          t.variableDeclarator(t.cloneNode(classIdLocal)),\n        ]),\n      );\n    } else {\n      const classOuterBindingDelegateLocal = scopeParent.generateUidIdentifier(\n        \"t\" + classIdLocal.name,\n      );\n      const classOuterBindingLocal = classIdLocal;\n      path.replaceWithMultiple([\n        t.variableDeclaration(\"let\", [\n          t.variableDeclarator(t.cloneNode(classOuterBindingLocal)),\n          t.variableDeclarator(classOuterBindingDelegateLocal),\n        ]),\n        t.blockStatement([\n          t.variableDeclaration(\"let\", [\n            t.variableDeclarator(t.cloneNode(classIdLocal)),\n          ]),\n          // needsDeclarationForClassBinding is true ↔ node is a class declaration\n          path.node as t.ClassDeclaration,\n          t.expressionStatement(\n            t.assignmentExpression(\n              \"=\",\n              t.cloneNode(classOuterBindingDelegateLocal),\n              t.cloneNode(classIdLocal),\n            ),\n          ),\n        ]),\n        t.expressionStatement(\n          t.assignmentExpression(\n            \"=\",\n            t.cloneNode(classOuterBindingLocal),\n            t.cloneNode(classOuterBindingDelegateLocal),\n          ),\n        ),\n      ]);\n    }\n  }\n\n  if (decoratedPrivateMethods.size > 0) {\n    checkPrivateMethodUpdateError(path, decoratedPrivateMethods);\n  }\n\n  // Recrawl the scope to make sure new identifiers are properly synced\n  path.scope.crawl();\n\n  return path;\n}\n\nfunction createLocalsAssignment(\n  elementLocals: t.Identifier[],\n  classLocals: t.Identifier[],\n  elementDecorations: t.ArrayExpression | t.Identifier,\n  classDecorations: t.ArrayExpression | t.Identifier,\n  classDecorationsFlag: t.NumericLiteral,\n  maybePrivateBrandName: t.PrivateName | null,\n  setClassName: t.Identifier | t.StringLiteral | undefined,\n  superClass: null | t.Expression,\n  state: PluginPass,\n  version: DecoratorVersionKind,\n) {\n  let lhs, rhs;\n  const args: t.Expression[] = [\n    setClassName\n      ? createSetFunctionNameCall(state, setClassName)\n      : t.thisExpression(),\n    classDecorations,\n    elementDecorations,\n  ];\n\n  if (!process.env.BABEL_8_BREAKING) {\n    if (version !== \"2023-11\") {\n      args.splice(1, 2, elementDecorations, classDecorations);\n    }\n    if (\n      version === \"2021-12\" ||\n      (version === \"2022-03\" && !state.availableHelper(\"applyDecs2203R\"))\n    ) {\n      lhs = t.arrayPattern([...elementLocals, ...classLocals]);\n      rhs = t.callExpression(\n        state.addHelper(version === \"2021-12\" ? \"applyDecs\" : \"applyDecs2203\"),\n        args,\n      );\n      return t.assignmentExpression(\"=\", lhs, rhs);\n    } else if (version === \"2022-03\") {\n      rhs = t.callExpression(state.addHelper(\"applyDecs2203R\"), args);\n    } else if (version === \"2023-01\") {\n      if (maybePrivateBrandName) {\n        args.push(createPrivateBrandCheckClosure(maybePrivateBrandName));\n      }\n      rhs = t.callExpression(state.addHelper(\"applyDecs2301\"), args);\n    } else if (version === \"2023-05\") {\n      if (\n        maybePrivateBrandName ||\n        superClass ||\n        classDecorationsFlag.value !== 0\n      ) {\n        args.push(classDecorationsFlag);\n      }\n      if (maybePrivateBrandName) {\n        args.push(createPrivateBrandCheckClosure(maybePrivateBrandName));\n      } else if (superClass) {\n        args.push(t.unaryExpression(\"void\", t.numericLiteral(0)));\n      }\n      if (superClass) args.push(superClass);\n      rhs = t.callExpression(state.addHelper(\"applyDecs2305\"), args);\n    }\n  }\n  if (process.env.BABEL_8_BREAKING || version === \"2023-11\") {\n    if (\n      maybePrivateBrandName ||\n      superClass ||\n      classDecorationsFlag.value !== 0\n    ) {\n      args.push(classDecorationsFlag);\n    }\n    if (maybePrivateBrandName) {\n      args.push(createPrivateBrandCheckClosure(maybePrivateBrandName));\n    } else if (superClass) {\n      args.push(t.unaryExpression(\"void\", t.numericLiteral(0)));\n    }\n    if (superClass) args.push(superClass);\n    rhs = t.callExpression(state.addHelper(\"applyDecs2311\"), args);\n  }\n\n  // optimize `{ c: [classLocals] } = applyDecsHelper(...)` to\n  // `[classLocals] = applyDecsHelper(...).c`\n  if (elementLocals.length > 0) {\n    if (classLocals.length > 0) {\n      lhs = t.objectPattern([\n        t.objectProperty(t.identifier(\"e\"), t.arrayPattern(elementLocals)),\n        t.objectProperty(t.identifier(\"c\"), t.arrayPattern(classLocals)),\n      ]);\n    } else {\n      lhs = t.arrayPattern(elementLocals);\n      // @ts-ignore(Babel 7 vs Babel 8) optional removed in Babel 8\n      rhs = t.memberExpression(rhs, t.identifier(\"e\"), false, false);\n    }\n  } else {\n    // invariant: classLocals.length > 0\n    lhs = t.arrayPattern(classLocals);\n    // @ts-ignore(Babel 7 vs Babel 8) optional removed in Babel 8\n    rhs = t.memberExpression(rhs, t.identifier(\"c\"), false, false);\n  }\n\n  return t.assignmentExpression(\"=\", lhs, rhs);\n}\n\nfunction isProtoKey(\n  node: t.Identifier | t.StringLiteral | t.BigIntLiteral | t.NumericLiteral,\n) {\n  return node.type === \"Identifier\"\n    ? node.name === \"__proto__\"\n    : node.value === \"__proto__\";\n}\n\nfunction isDecorated(node: t.Class | ClassDecoratableElement) {\n  return node.decorators && node.decorators.length > 0;\n}\n\nfunction shouldTransformElement(node: ClassElement) {\n  switch (node.type) {\n    case \"ClassAccessorProperty\":\n      return true;\n    case \"ClassMethod\":\n    case \"ClassProperty\":\n    case \"ClassPrivateMethod\":\n    case \"ClassPrivateProperty\":\n      return isDecorated(node);\n    default:\n      return false;\n  }\n}\n\nfunction shouldTransformClass(node: t.Class) {\n  return isDecorated(node) || node.body.body.some(shouldTransformElement);\n}\n\nexport function buildNamedEvaluationVisitor(\n  needsName: (path: NodePath) => boolean,\n  visitor: (\n    path: NodePath,\n    state: PluginPass,\n    name:\n      | string\n      | t.Identifier\n      | t.StringLiteral\n      | t.NumericLiteral\n      | t.BigIntLiteral,\n  ) => void,\n) {\n  function handleComputedProperty(\n    propertyPath: NodePath<\n      t.ObjectProperty | t.ClassProperty | t.ClassAccessorProperty\n    >,\n    key: t.Expression,\n    state: PluginPass,\n  ): t.StringLiteral | t.Identifier {\n    switch (key.type) {\n      case \"StringLiteral\":\n        return t.stringLiteral(key.value);\n      case \"NumericLiteral\":\n      case \"BigIntLiteral\": {\n        const keyValue = key.value + \"\";\n        propertyPath.get(\"key\").replaceWith(t.stringLiteral(keyValue));\n        return t.stringLiteral(keyValue);\n      }\n      default: {\n        const ref = propertyPath.scope.maybeGenerateMemoised(key);\n        propertyPath\n          .get(\"key\")\n          .replaceWith(\n            t.assignmentExpression(\n              \"=\",\n              ref,\n              createToPropertyKeyCall(state, key),\n            ),\n          );\n        return t.cloneNode(ref);\n      }\n    }\n  }\n  return {\n    VariableDeclarator(path, state) {\n      const id = path.node.id;\n      if (id.type === \"Identifier\") {\n        const initializer = skipTransparentExprWrappers(path.get(\"init\"));\n        if (needsName(initializer)) {\n          const name = id.name;\n          visitor(initializer, state, name);\n        }\n      }\n    },\n    AssignmentExpression(path, state) {\n      const id = path.node.left;\n      if (id.type === \"Identifier\") {\n        const initializer = skipTransparentExprWrappers(path.get(\"right\"));\n        if (needsName(initializer)) {\n          switch (path.node.operator) {\n            case \"=\":\n            case \"&&=\":\n            case \"||=\":\n            case \"??=\":\n              visitor(initializer, state, id.name);\n          }\n        }\n      }\n    },\n    AssignmentPattern(path, state) {\n      const id = path.node.left;\n      if (id.type === \"Identifier\") {\n        const initializer = skipTransparentExprWrappers(path.get(\"right\"));\n        if (needsName(initializer)) {\n          const name = id.name;\n          visitor(initializer, state, name);\n        }\n      }\n    },\n    // We listen on ObjectExpression so that we don't have to visit\n    // the object properties under object patterns\n    ObjectExpression(path, state) {\n      for (const propertyPath of path.get(\"properties\")) {\n        if (!propertyPath.isObjectProperty()) continue;\n        const { node } = propertyPath;\n        const id = node.key;\n        const initializer = skipTransparentExprWrappers(\n          propertyPath.get(\"value\") as NodePath<t.Expression>,\n        );\n        if (needsName(initializer)) {\n          if (!node.computed) {\n            // 13.2.5.5 RS: PropertyDefinitionEvaluation\n            if (!isProtoKey(id as t.StringLiteral | t.Identifier)) {\n              if (id.type === \"Identifier\") {\n                visitor(initializer, state, id.name);\n              } else {\n                const className = t.stringLiteral(\n                  (id as t.StringLiteral | t.NumericLiteral | t.BigIntLiteral)\n                    .value + \"\",\n                );\n                visitor(initializer, state, className);\n              }\n            }\n          } else {\n            const ref = handleComputedProperty(\n              propertyPath,\n              // The key of a computed object property must not be a private name\n              id as t.Expression,\n              state,\n            );\n            visitor(initializer, state, ref);\n          }\n        }\n      }\n    },\n    ClassPrivateProperty(path, state) {\n      const { node } = path;\n      const initializer = skipTransparentExprWrappers(path.get(\"value\"));\n      if (needsName(initializer)) {\n        const className = t.stringLiteral(\"#\" + node.key.id.name);\n        visitor(initializer, state, className);\n      }\n    },\n    ClassAccessorProperty(path, state) {\n      const { node } = path;\n      const id = node.key;\n      const initializer = skipTransparentExprWrappers(path.get(\"value\"));\n      if (needsName(initializer)) {\n        if (!node.computed) {\n          if (id.type === \"Identifier\") {\n            visitor(initializer, state, id.name);\n          } else if (id.type === \"PrivateName\") {\n            const className = t.stringLiteral(\"#\" + id.id.name);\n            visitor(initializer, state, className);\n          } else {\n            const className = t.stringLiteral(\n              (id as t.StringLiteral | t.NumericLiteral | t.BigIntLiteral)\n                .value + \"\",\n            );\n            visitor(initializer, state, className);\n          }\n        } else {\n          const ref = handleComputedProperty(\n            path,\n            // The key of a computed accessor property must not be a private name\n            id as t.Expression,\n            state,\n          );\n          visitor(initializer, state, ref);\n        }\n      }\n    },\n    ClassProperty(path, state) {\n      const { node } = path;\n      const id = node.key;\n      const initializer = skipTransparentExprWrappers(path.get(\"value\"));\n      if (needsName(initializer)) {\n        if (!node.computed) {\n          if (id.type === \"Identifier\") {\n            visitor(initializer, state, id.name);\n          } else {\n            const className = t.stringLiteral(\n              (id as t.StringLiteral | t.NumericLiteral | t.BigIntLiteral)\n                .value + \"\",\n            );\n            visitor(initializer, state, className);\n          }\n        } else {\n          const ref = handleComputedProperty(path, id, state);\n          visitor(initializer, state, ref);\n        }\n      }\n    },\n  } satisfies Visitor<PluginPass>;\n}\n\nfunction isDecoratedAnonymousClassExpression(path: NodePath) {\n  return (\n    path.isClassExpression({ id: null }) && shouldTransformClass(path.node)\n  );\n}\n\nfunction generateLetUidIdentifier(scope: Scope, name: string) {\n  const id = scope.generateUidIdentifier(name);\n  scope.push({ id, kind: \"let\" });\n  return t.cloneNode(id);\n}\n\nexport default function (\n  { assertVersion, assumption }: PluginAPI,\n  { loose }: Options,\n  version: DecoratorVersionKind,\n  inherits: PluginObject[\"inherits\"],\n): PluginObject {\n  if (process.env.BABEL_8_BREAKING) {\n    assertVersion(REQUIRED_VERSION(\"^7.21.0\"));\n  } else {\n    if (\n      version === \"2023-11\" ||\n      version === \"2023-05\" ||\n      version === \"2023-01\"\n    ) {\n      assertVersion(REQUIRED_VERSION(\"^7.21.0\"));\n    } else if (version === \"2021-12\") {\n      assertVersion(REQUIRED_VERSION(\"^7.16.0\"));\n    } else {\n      assertVersion(REQUIRED_VERSION(\"^7.19.0\"));\n    }\n  }\n\n  const VISITED = new WeakSet<NodePath>();\n  const constantSuper = assumption(\"constantSuper\") ?? loose;\n  const ignoreFunctionLength = assumption(\"ignoreFunctionLength\") ?? loose;\n\n  const namedEvaluationVisitor: Visitor<PluginPass> =\n    buildNamedEvaluationVisitor(\n      isDecoratedAnonymousClassExpression,\n      visitClass,\n    );\n\n  function visitClass(\n    path: NodePath<t.Class>,\n    state: PluginPass,\n    className: string | t.Identifier | t.StringLiteral | undefined,\n  ) {\n    if (VISITED.has(path)) return;\n    const { node } = path;\n    className ??= node.id?.name;\n    const newPath = transformClass(\n      path,\n      state,\n      constantSuper,\n      ignoreFunctionLength,\n      className,\n      namedEvaluationVisitor,\n      version,\n    );\n    if (newPath) {\n      VISITED.add(newPath);\n      return;\n    }\n    VISITED.add(path);\n  }\n\n  return {\n    name: \"proposal-decorators\",\n    inherits: inherits,\n\n    visitor: {\n      ExportDefaultDeclaration(path, state) {\n        const { declaration } = path.node;\n        if (\n          declaration?.type === \"ClassDeclaration\" &&\n          // When compiling class decorators we need to replace the class\n          // binding, so we must split it in two separate declarations.\n          isDecorated(declaration)\n        ) {\n          const isAnonymous = !declaration.id;\n          if (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n            // polyfill when being run by an older Babel version\n            path.splitExportDeclaration ??=\n              // eslint-disable-next-line no-restricted-globals\n              require(\"@babel/traverse\").NodePath.prototype.splitExportDeclaration;\n          }\n          const updatedVarDeclarationPath =\n            path.splitExportDeclaration() as NodePath<t.ClassDeclaration>;\n          if (isAnonymous) {\n            visitClass(\n              updatedVarDeclarationPath,\n              state,\n              t.stringLiteral(\"default\"),\n            );\n          }\n        }\n      },\n      ExportNamedDeclaration(path) {\n        const { declaration } = path.node;\n        if (\n          declaration?.type === \"ClassDeclaration\" &&\n          // When compiling class decorators we need to replace the class\n          // binding, so we must split it in two separate declarations.\n          isDecorated(declaration)\n        ) {\n          if (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n            // polyfill when being run by an older Babel version\n            path.splitExportDeclaration ??=\n              // eslint-disable-next-line no-restricted-globals\n              require(\"@babel/traverse\").NodePath.prototype.splitExportDeclaration;\n          }\n          path.splitExportDeclaration();\n        }\n      },\n\n      Class(path, state) {\n        visitClass(path, state, undefined);\n      },\n\n      ...namedEvaluationVisitor,\n    },\n  };\n}\n"],"mappings":"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","ignoreList":[]}
Index: frontend/node_modules/@babel/helper-create-class-features-plugin/lib/features.js
===================================================================
--- frontend/node_modules/@babel/helper-create-class-features-plugin/lib/features.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@babel/helper-create-class-features-plugin/lib/features.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,137 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.FEATURES = void 0;
+exports.enableFeature = enableFeature;
+exports.isLoose = isLoose;
+exports.shouldTransform = shouldTransform;
+var _decorators = require("./decorators.js");
+const FEATURES = exports.FEATURES = Object.freeze({
+  fields: 1 << 1,
+  privateMethods: 1 << 2,
+  decorators: 1 << 3,
+  privateIn: 1 << 4,
+  staticBlocks: 1 << 5
+});
+const featuresSameLoose = new Map([[FEATURES.fields, "@babel/plugin-transform-class-properties"], [FEATURES.privateMethods, "@babel/plugin-transform-private-methods"], [FEATURES.privateIn, "@babel/plugin-transform-private-property-in-object"]]);
+const featuresKey = "@babel/plugin-class-features/featuresKey";
+const looseKey = "@babel/plugin-class-features/looseKey";
+var looseLowPriorityKey = "@babel/plugin-class-features/looseLowPriorityKey/#__internal__@babel/preset-env__please-overwrite-loose-instead-of-throwing";
+var canIgnoreLoose = function (file, feature) {
+  return !!(file.get(looseLowPriorityKey) & feature);
+};
+function enableFeature(file, feature, loose) {
+  if (!hasFeature(file, feature) || canIgnoreLoose(file, feature)) {
+    file.set(featuresKey, file.get(featuresKey) | feature);
+    if (loose === "#__internal__@babel/preset-env__prefer-true-but-false-is-ok-if-it-prevents-an-error") {
+      setLoose(file, feature, true);
+      file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) | feature);
+    } else if (loose === "#__internal__@babel/preset-env__prefer-false-but-true-is-ok-if-it-prevents-an-error") {
+      setLoose(file, feature, false);
+      file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) | feature);
+    } else {
+      setLoose(file, feature, loose);
+    }
+  }
+  let resolvedLoose;
+  for (const [mask, name] of featuresSameLoose) {
+    if (!hasFeature(file, mask)) continue;
+    if (canIgnoreLoose(file, mask)) continue;
+    const loose = isLoose(file, mask);
+    if (resolvedLoose === !loose) {
+      throw new Error("'loose' mode configuration must be the same for @babel/plugin-transform-class-properties, " + "@babel/plugin-transform-private-methods and " + "@babel/plugin-transform-private-property-in-object (when they are enabled)." + "\n\n" + getBabelShowConfigForHint(file));
+    } else {
+      resolvedLoose = loose;
+      var higherPriorityPluginName = name;
+    }
+  }
+  if (resolvedLoose !== undefined) {
+    for (const [mask, name] of featuresSameLoose) {
+      if (hasFeature(file, mask) && isLoose(file, mask) !== resolvedLoose) {
+        setLoose(file, mask, resolvedLoose);
+        console.warn(`Though the "loose" option was set to "${!resolvedLoose}" in your @babel/preset-env ` + `config, it will not be used for ${name} since the "loose" mode option was set to ` + `"${resolvedLoose}" for ${higherPriorityPluginName}.\nThe "loose" option must be the ` + `same for @babel/plugin-transform-class-properties, @babel/plugin-transform-private-methods ` + `and @babel/plugin-transform-private-property-in-object (when they are enabled): you can ` + `silence this warning by explicitly adding\n` + `\t["${name}", { "loose": ${resolvedLoose} }]\n` + `to the "plugins" section of your Babel config.` + "\n\n" + getBabelShowConfigForHint(file));
+      }
+    }
+  }
+}
+function getBabelShowConfigForHint(file) {
+  let {
+    filename
+  } = file.opts;
+  if (!filename || filename === "unknown") {
+    filename = "[name of the input file]";
+  }
+  return `\
+If you already set the same 'loose' mode for these plugins in your config, it's possible that they \
+are enabled multiple times with different options.
+You can re-run Babel with the BABEL_SHOW_CONFIG_FOR environment variable to show the loaded \
+configuration:
+\tnpx cross-env BABEL_SHOW_CONFIG_FOR=${filename} <your build command>
+See https://babeljs.io/docs/configuration#print-effective-configs for more info.`;
+}
+function hasFeature(file, feature) {
+  return !!(file.get(featuresKey) & feature);
+}
+function isLoose(file, feature) {
+  return !!(file.get(looseKey) & feature);
+}
+function setLoose(file, feature, loose) {
+  if (loose) file.set(looseKey, file.get(looseKey) | feature);else file.set(looseKey, file.get(looseKey) & ~feature);
+  file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) & ~feature);
+}
+function shouldTransform(path, file) {
+  let decoratorPath = null;
+  let publicFieldPath = null;
+  let privateFieldPath = null;
+  let privateMethodPath = null;
+  let staticBlockPath = null;
+  if ((0, _decorators.hasOwnDecorators)(path.node)) {
+    decoratorPath = path.get("decorators.0");
+  }
+  for (const el of path.get("body.body")) {
+    if (!decoratorPath && (0, _decorators.hasOwnDecorators)(el.node)) {
+      decoratorPath = el.get("decorators.0");
+    }
+    if (!publicFieldPath && el.isClassProperty()) {
+      publicFieldPath = el;
+    }
+    if (!privateFieldPath && el.isClassPrivateProperty()) {
+      privateFieldPath = el;
+    }
+    if (!privateMethodPath && el.isClassPrivateMethod != null && el.isClassPrivateMethod()) {
+      privateMethodPath = el;
+    }
+    if (!staticBlockPath && el.isStaticBlock != null && el.isStaticBlock()) {
+      staticBlockPath = el;
+    }
+  }
+  if (decoratorPath && privateFieldPath) {
+    throw privateFieldPath.buildCodeFrameError("Private fields in decorated classes are not supported yet.");
+  }
+  if (decoratorPath && privateMethodPath) {
+    throw privateMethodPath.buildCodeFrameError("Private methods in decorated classes are not supported yet.");
+  }
+  if (decoratorPath && !hasFeature(file, FEATURES.decorators)) {
+    throw path.buildCodeFrameError("Decorators are not enabled." + "\nIf you are using " + '["@babel/plugin-proposal-decorators", { "version": "legacy" }], ' + 'make sure it comes *before* "@babel/plugin-transform-class-properties" ' + "and enable loose mode, like so:\n" + '\t["@babel/plugin-proposal-decorators", { "version": "legacy" }]\n' + '\t["@babel/plugin-transform-class-properties", { "loose": true }]');
+  }
+  if (privateMethodPath && !hasFeature(file, FEATURES.privateMethods)) {
+    throw privateMethodPath.buildCodeFrameError("Class private methods are not enabled. " + "Please add `@babel/plugin-transform-private-methods` to your configuration.");
+  }
+  if ((publicFieldPath || privateFieldPath) && !hasFeature(file, FEATURES.fields) && !hasFeature(file, FEATURES.privateMethods)) {
+    throw path.buildCodeFrameError("Class fields are not enabled. " + "Please add `@babel/plugin-transform-class-properties` to your configuration.");
+  }
+  if (staticBlockPath && !hasFeature(file, FEATURES.staticBlocks)) {
+    throw path.buildCodeFrameError("Static class blocks are not enabled. " + "Please add `@babel/plugin-transform-class-static-block` to your configuration.");
+  }
+  if (decoratorPath || privateMethodPath || staticBlockPath) {
+    return true;
+  }
+  if ((publicFieldPath || privateFieldPath) && hasFeature(file, FEATURES.fields)) {
+    return true;
+  }
+  return false;
+}
+
+//# sourceMappingURL=features.js.map
Index: frontend/node_modules/@babel/helper-create-class-features-plugin/lib/features.js.map
===================================================================
--- frontend/node_modules/@babel/helper-create-class-features-plugin/lib/features.js.map	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@babel/helper-create-class-features-plugin/lib/features.js.map	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_decorators","require","FEATURES","exports","Object","freeze","fields","privateMethods","decorators","privateIn","staticBlocks","featuresSameLoose","Map","featuresKey","looseKey","looseLowPriorityKey","canIgnoreLoose","file","feature","get","enableFeature","loose","hasFeature","set","setLoose","resolvedLoose","mask","name","isLoose","Error","getBabelShowConfigForHint","higherPriorityPluginName","undefined","console","warn","filename","opts","shouldTransform","path","decoratorPath","publicFieldPath","privateFieldPath","privateMethodPath","staticBlockPath","hasOwnDecorators","node","el","isClassProperty","isClassPrivateProperty","isClassPrivateMethod","isStaticBlock","buildCodeFrameError"],"sources":["../src/features.ts"],"sourcesContent":["import type { File, types as t } from \"@babel/core\";\nimport type { NodePath } from \"@babel/core\";\nimport { hasOwnDecorators } from \"./decorators.ts\";\n\nexport const FEATURES = Object.freeze({\n  //classes: 1 << 0,\n  fields: 1 << 1,\n  privateMethods: 1 << 2,\n  decorators: 1 << 3,\n  privateIn: 1 << 4,\n  staticBlocks: 1 << 5,\n});\n\nconst featuresSameLoose = new Map([\n  [FEATURES.fields, \"@babel/plugin-transform-class-properties\"],\n  [FEATURES.privateMethods, \"@babel/plugin-transform-private-methods\"],\n  [FEATURES.privateIn, \"@babel/plugin-transform-private-property-in-object\"],\n]);\n\n// We can't use a symbol because this needs to always be the same, even if\n// this package isn't deduped by npm. e.g.\n//  - node_modules/\n//    - @babel/plugin-class-features\n//    - @babel/plugin-proposal-decorators\n//      - node_modules\n//        - @babel-plugin-class-features\nconst featuresKey = \"@babel/plugin-class-features/featuresKey\";\nconst looseKey = \"@babel/plugin-class-features/looseKey\";\n\nif (!process.env.BABEL_8_BREAKING) {\n  // See https://github.com/babel/babel/issues/11622.\n  // Since preset-env sets loose for the fields and private methods plugins, it can\n  // cause conflicts with the loose mode set by an explicit plugin in the config.\n  // To solve this problem, we ignore preset-env's loose mode if another plugin\n  // explicitly sets it\n  // The code to handle this logic doesn't check that \"low priority loose\" is always\n  // the same. However, it is only set by the preset and not directly by users:\n  // unless someone _wants_ to break it, it shouldn't be a problem.\n  // eslint-disable-next-line no-var\n  var looseLowPriorityKey =\n    \"@babel/plugin-class-features/looseLowPriorityKey/#__internal__@babel/preset-env__please-overwrite-loose-instead-of-throwing\";\n}\n\nif (!process.env.BABEL_8_BREAKING) {\n  // eslint-disable-next-line no-var\n  var canIgnoreLoose = function (file: File, feature: number) {\n    return !!(file.get(looseLowPriorityKey) & feature);\n  };\n}\n\nexport function enableFeature(file: File, feature: number, loose: boolean) {\n  // We can't blindly enable the feature because, if it was already set,\n  // \"loose\" can't be changed, so that\n  //   @babel/plugin-class-properties { loose: true }\n  //   @babel/plugin-class-properties { loose: false }\n  // is transformed in loose mode.\n  // We only enabled the feature if it was previously disabled.\n  if (process.env.BABEL_8_BREAKING) {\n    if (!hasFeature(file, feature)) {\n      file.set(featuresKey, file.get(featuresKey) | feature);\n      setLoose(file, feature, loose);\n    }\n  } else if (!hasFeature(file, feature) || canIgnoreLoose(file, feature)) {\n    file.set(featuresKey, file.get(featuresKey) | feature);\n    if (\n      // @ts-expect-error comparing loose with internal private magic string\n      loose ===\n      \"#__internal__@babel/preset-env__prefer-true-but-false-is-ok-if-it-prevents-an-error\"\n    ) {\n      setLoose(file, feature, true);\n      file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) | feature);\n    } else if (\n      // @ts-expect-error comparing loose with internal private magic string\n      loose ===\n      \"#__internal__@babel/preset-env__prefer-false-but-true-is-ok-if-it-prevents-an-error\"\n    ) {\n      setLoose(file, feature, false);\n      file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) | feature);\n    } else {\n      setLoose(file, feature, loose);\n    }\n  }\n\n  let resolvedLoose: boolean | undefined;\n  for (const [mask, name] of featuresSameLoose) {\n    if (!hasFeature(file, mask)) continue;\n    if (!process.env.BABEL_8_BREAKING) {\n      if (canIgnoreLoose(file, mask)) continue;\n    }\n\n    const loose = isLoose(file, mask);\n\n    if (resolvedLoose === !loose) {\n      throw new Error(\n        \"'loose' mode configuration must be the same for @babel/plugin-transform-class-properties, \" +\n          \"@babel/plugin-transform-private-methods and \" +\n          \"@babel/plugin-transform-private-property-in-object (when they are enabled).\" +\n          \"\\n\\n\" +\n          getBabelShowConfigForHint(file),\n      );\n    } else {\n      resolvedLoose = loose;\n\n      if (!process.env.BABEL_8_BREAKING) {\n        // eslint-disable-next-line no-var\n        var higherPriorityPluginName = name;\n      }\n    }\n  }\n\n  if (!process.env.BABEL_8_BREAKING && resolvedLoose !== undefined) {\n    for (const [mask, name] of featuresSameLoose) {\n      if (hasFeature(file, mask) && isLoose(file, mask) !== resolvedLoose) {\n        setLoose(file, mask, resolvedLoose);\n        console.warn(\n          `Though the \"loose\" option was set to \"${!resolvedLoose}\" in your @babel/preset-env ` +\n            `config, it will not be used for ${name} since the \"loose\" mode option was set to ` +\n            `\"${resolvedLoose}\" for ${higherPriorityPluginName}.\\nThe \"loose\" option must be the ` +\n            `same for @babel/plugin-transform-class-properties, @babel/plugin-transform-private-methods ` +\n            `and @babel/plugin-transform-private-property-in-object (when they are enabled): you can ` +\n            `silence this warning by explicitly adding\\n` +\n            `\\t[\"${name}\", { \"loose\": ${resolvedLoose} }]\\n` +\n            `to the \"plugins\" section of your Babel config.` +\n            \"\\n\\n\" +\n            getBabelShowConfigForHint(file),\n        );\n      }\n    }\n  }\n}\n\nfunction getBabelShowConfigForHint(file: File) {\n  let { filename } = file.opts;\n  if (!filename || filename === \"unknown\") {\n    filename = \"[name of the input file]\";\n  }\n  return `\\\nIf you already set the same 'loose' mode for these plugins in your config, it's possible that they \\\nare enabled multiple times with different options.\nYou can re-run Babel with the BABEL_SHOW_CONFIG_FOR environment variable to show the loaded \\\nconfiguration:\n\\tnpx cross-env BABEL_SHOW_CONFIG_FOR=${filename} <your build command>\nSee https://babeljs.io/docs/configuration#print-effective-configs for more info.`;\n}\n\nfunction hasFeature(file: File, feature: number) {\n  return !!(file.get(featuresKey) & feature);\n}\n\nexport function isLoose(file: File, feature: number) {\n  return !!(file.get(looseKey) & feature);\n}\n\nfunction setLoose(file: File, feature: number, loose: boolean) {\n  if (loose) file.set(looseKey, file.get(looseKey) | feature);\n  else file.set(looseKey, file.get(looseKey) & ~feature);\n\n  if (!process.env.BABEL_8_BREAKING) {\n    file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) & ~feature);\n  }\n}\n\nexport function shouldTransform(path: NodePath<t.Class>, file: File): boolean {\n  let decoratorPath: NodePath<t.Decorator> | null = null;\n  let publicFieldPath: NodePath<t.ClassProperty> | null = null;\n  let privateFieldPath: NodePath<t.ClassPrivateProperty> | null = null;\n  let privateMethodPath: NodePath<t.ClassPrivateMethod> | null = null;\n  let staticBlockPath: NodePath<t.StaticBlock> | null = null;\n\n  if (hasOwnDecorators(path.node)) {\n    decoratorPath = path.get(\"decorators.0\");\n  }\n  for (const el of path.get(\"body.body\")) {\n    if (!decoratorPath && hasOwnDecorators(el.node)) {\n      decoratorPath = el.get(\"decorators.0\");\n    }\n    if (!publicFieldPath && el.isClassProperty()) {\n      publicFieldPath = el;\n    }\n    if (!privateFieldPath && el.isClassPrivateProperty()) {\n      privateFieldPath = el;\n    }\n    // NOTE: path.isClassPrivateMethod() it isn't supported in <7.2.0\n    if (!privateMethodPath && el.isClassPrivateMethod?.()) {\n      privateMethodPath = el;\n    }\n    if (!staticBlockPath && el.isStaticBlock?.()) {\n      staticBlockPath = el;\n    }\n  }\n\n  if (decoratorPath && privateFieldPath) {\n    throw privateFieldPath.buildCodeFrameError(\n      \"Private fields in decorated classes are not supported yet.\",\n    );\n  }\n  if (decoratorPath && privateMethodPath) {\n    throw privateMethodPath.buildCodeFrameError(\n      \"Private methods in decorated classes are not supported yet.\",\n    );\n  }\n\n  if (decoratorPath && !hasFeature(file, FEATURES.decorators)) {\n    throw path.buildCodeFrameError(\n      \"Decorators are not enabled.\" +\n        \"\\nIf you are using \" +\n        '[\"@babel/plugin-proposal-decorators\", { \"version\": \"legacy\" }], ' +\n        'make sure it comes *before* \"@babel/plugin-transform-class-properties\" ' +\n        \"and enable loose mode, like so:\\n\" +\n        '\\t[\"@babel/plugin-proposal-decorators\", { \"version\": \"legacy\" }]\\n' +\n        '\\t[\"@babel/plugin-transform-class-properties\", { \"loose\": true }]',\n    );\n  }\n\n  if (privateMethodPath && !hasFeature(file, FEATURES.privateMethods)) {\n    throw privateMethodPath.buildCodeFrameError(\n      \"Class private methods are not enabled. \" +\n        \"Please add `@babel/plugin-transform-private-methods` to your configuration.\",\n    );\n  }\n\n  if (\n    (publicFieldPath || privateFieldPath) &&\n    !hasFeature(file, FEATURES.fields) &&\n    // We want to allow enabling the private-methods plugin even without enabling\n    // the class-properties plugin. Class fields will still be compiled in classes\n    // that contain private methods.\n    // This is already allowed with the other various class features plugins, but\n    // it's because they can fallback to a transform separated from this helper.\n    !hasFeature(file, FEATURES.privateMethods)\n  ) {\n    throw path.buildCodeFrameError(\n      \"Class fields are not enabled. \" +\n        \"Please add `@babel/plugin-transform-class-properties` to your configuration.\",\n    );\n  }\n\n  if (staticBlockPath && !hasFeature(file, FEATURES.staticBlocks)) {\n    throw path.buildCodeFrameError(\n      \"Static class blocks are not enabled. \" +\n        \"Please add `@babel/plugin-transform-class-static-block` to your configuration.\",\n    );\n  }\n\n  if (decoratorPath || privateMethodPath || staticBlockPath) {\n    // If one of those feature is used we know that its transform is\n    // enabled, otherwise the previous checks throw.\n    return true;\n  }\n  if (\n    (publicFieldPath || privateFieldPath) &&\n    hasFeature(file, FEATURES.fields)\n  ) {\n    return true;\n  }\n\n  return false;\n}\n"],"mappings":"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","ignoreList":[]}
Index: frontend/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js
===================================================================
--- frontend/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1041 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.buildCheckInRHS = buildCheckInRHS;
+exports.buildFieldsInitNodes = buildFieldsInitNodes;
+exports.buildPrivateNamesMap = buildPrivateNamesMap;
+exports.buildPrivateNamesNodes = buildPrivateNamesNodes;
+exports.privateNameVisitorFactory = privateNameVisitorFactory;
+exports.transformPrivateNamesUsage = transformPrivateNamesUsage;
+var _core = require("@babel/core");
+var _traverse = require("@babel/traverse");
+var _helperReplaceSupers = require("@babel/helper-replace-supers");
+var _helperMemberExpressionToFunctions = require("@babel/helper-member-expression-to-functions");
+var _helperOptimiseCallExpression = require("@babel/helper-optimise-call-expression");
+var _helperAnnotateAsPure = require("@babel/helper-annotate-as-pure");
+var _helperSkipTransparentExpressionWrappers = require("@babel/helper-skip-transparent-expression-wrappers");
+var ts = require("./typescript.js");
+var newHelpers = file => {
+  return file.availableHelper("classPrivateFieldGet2");
+};
+function buildPrivateNamesMap(className, privateFieldsAsSymbolsOrProperties, props, file) {
+  const privateNamesMap = new Map();
+  let classBrandId;
+  for (const prop of props) {
+    if (prop.isPrivate()) {
+      const {
+        name
+      } = prop.node.key.id;
+      let update = privateNamesMap.get(name);
+      if (!update) {
+        const isMethod = !prop.isProperty();
+        const isStatic = prop.node.static;
+        let initAdded = false;
+        let id;
+        if (!privateFieldsAsSymbolsOrProperties && newHelpers(file) && isMethod && !isStatic) {
+          initAdded = !!classBrandId;
+          classBrandId != null ? classBrandId : classBrandId = prop.scope.generateUidIdentifier(`${className}_brand`);
+          id = classBrandId;
+        } else {
+          id = prop.scope.generateUidIdentifier(name);
+        }
+        update = {
+          id,
+          static: isStatic,
+          method: isMethod,
+          initAdded
+        };
+        privateNamesMap.set(name, update);
+      }
+      if (prop.isClassPrivateMethod()) {
+        if (prop.node.kind === "get") {
+          const {
+            body
+          } = prop.node.body;
+          let $;
+          if (body.length === 1 && _core.types.isReturnStatement($ = body[0]) && _core.types.isCallExpression($ = $.argument) && $.arguments.length === 1 && _core.types.isThisExpression($.arguments[0]) && _core.types.isIdentifier($ = $.callee)) {
+            update.getId = _core.types.cloneNode($);
+            update.getterDeclared = true;
+          } else {
+            update.getId = prop.scope.generateUidIdentifier(`get_${name}`);
+          }
+        } else if (prop.node.kind === "set") {
+          const {
+            params
+          } = prop.node;
+          const {
+            body
+          } = prop.node.body;
+          let $;
+          if (body.length === 1 && _core.types.isExpressionStatement($ = body[0]) && _core.types.isCallExpression($ = $.expression) && $.arguments.length === 2 && _core.types.isThisExpression($.arguments[0]) && _core.types.isIdentifier($.arguments[1], {
+            name: params[0].name
+          }) && _core.types.isIdentifier($ = $.callee)) {
+            update.setId = _core.types.cloneNode($);
+            update.setterDeclared = true;
+          } else {
+            update.setId = prop.scope.generateUidIdentifier(`set_${name}`);
+          }
+        } else if (prop.node.kind === "method") {
+          update.methodId = prop.scope.generateUidIdentifier(name);
+        }
+      }
+      privateNamesMap.set(name, update);
+    }
+  }
+  return privateNamesMap;
+}
+function buildPrivateNamesNodes(privateNamesMap, privateFieldsAsProperties, privateFieldsAsSymbols, state) {
+  const initNodes = [];
+  const injectedIds = new Set();
+  for (const [name, value] of privateNamesMap) {
+    const {
+      static: isStatic,
+      method: isMethod,
+      getId,
+      setId
+    } = value;
+    const isGetterOrSetter = getId || setId;
+    const id = _core.types.cloneNode(value.id);
+    let init;
+    if (privateFieldsAsProperties) {
+      init = _core.types.callExpression(state.addHelper("classPrivateFieldLooseKey"), [_core.types.stringLiteral(name)]);
+    } else if (privateFieldsAsSymbols) {
+      init = _core.types.callExpression(_core.types.identifier("Symbol"), [_core.types.stringLiteral(name)]);
+    } else if (!isStatic) {
+      if (injectedIds.has(id.name)) continue;
+      injectedIds.add(id.name);
+      init = _core.types.newExpression(_core.types.identifier(isMethod && (!isGetterOrSetter || newHelpers(state)) ? "WeakSet" : "WeakMap"), []);
+    }
+    if (init) {
+      if (!privateFieldsAsSymbols) {
+        (0, _helperAnnotateAsPure.default)(init);
+      }
+      initNodes.push(_core.template.statement.ast`var ${id} = ${init}`);
+    }
+  }
+  return initNodes;
+}
+function privateNameVisitorFactory(visitor) {
+  const nestedVisitor = _traverse.visitors.environmentVisitor(Object.assign({}, visitor));
+  const privateNameVisitor = Object.assign({}, visitor, {
+    Class(path) {
+      const {
+        privateNamesMap
+      } = this;
+      const body = path.get("body.body");
+      const visiblePrivateNames = new Map(privateNamesMap);
+      const redeclared = [];
+      for (const prop of body) {
+        if (!prop.isPrivate()) continue;
+        const {
+          name
+        } = prop.node.key.id;
+        visiblePrivateNames.delete(name);
+        redeclared.push(name);
+      }
+      if (!redeclared.length) {
+        return;
+      }
+      path.get("body").traverse(nestedVisitor, Object.assign({}, this, {
+        redeclared
+      }));
+      path.traverse(privateNameVisitor, Object.assign({}, this, {
+        privateNamesMap: visiblePrivateNames
+      }));
+      path.skipKey("body");
+    }
+  });
+  return privateNameVisitor;
+}
+const privateNameVisitor = privateNameVisitorFactory({
+  PrivateName(path, {
+    noDocumentAll
+  }) {
+    const {
+      privateNamesMap,
+      redeclared
+    } = this;
+    const {
+      node,
+      parentPath
+    } = path;
+    if (!parentPath.isMemberExpression({
+      property: node
+    }) && !parentPath.isOptionalMemberExpression({
+      property: node
+    })) {
+      return;
+    }
+    const {
+      name
+    } = node.id;
+    if (!privateNamesMap.has(name)) return;
+    if (redeclared != null && redeclared.includes(name)) return;
+    this.handle(parentPath, noDocumentAll);
+  }
+});
+function unshadow(name, scope, innerBinding) {
+  while ((_scope = scope) != null && _scope.hasBinding(name) && !scope.bindingIdentifierEquals(name, innerBinding)) {
+    var _scope;
+    scope.rename(name);
+    scope = scope.parent;
+  }
+}
+function buildCheckInRHS(rhs, file, inRHSIsObject) {
+  if (inRHSIsObject || !(file.availableHelper != null && file.availableHelper("checkInRHS"))) return rhs;
+  return _core.types.callExpression(file.addHelper("checkInRHS"), [rhs]);
+}
+const privateInVisitor = privateNameVisitorFactory({
+  BinaryExpression(path, {
+    file
+  }) {
+    const {
+      operator,
+      left,
+      right
+    } = path.node;
+    if (operator !== "in") return;
+    if (!_core.types.isPrivateName(left)) return;
+    const {
+      privateFieldsAsProperties,
+      privateNamesMap,
+      redeclared
+    } = this;
+    const {
+      name
+    } = left.id;
+    if (!privateNamesMap.has(name)) return;
+    if (redeclared != null && redeclared.includes(name)) return;
+    unshadow(this.classRef.name, path.scope, this.innerBinding);
+    if (privateFieldsAsProperties) {
+      const {
+        id
+      } = privateNamesMap.get(name);
+      path.replaceWith(_core.template.expression.ast`
+        Object.prototype.hasOwnProperty.call(${buildCheckInRHS(right, file)}, ${_core.types.cloneNode(id)})
+      `);
+      return;
+    }
+    const {
+      id,
+      static: isStatic
+    } = privateNamesMap.get(name);
+    if (isStatic) {
+      path.replaceWith(_core.template.expression.ast`${buildCheckInRHS(right, file)} === ${_core.types.cloneNode(this.classRef)}`);
+      return;
+    }
+    path.replaceWith(_core.template.expression.ast`${_core.types.cloneNode(id)}.has(${buildCheckInRHS(right, file)})`);
+  }
+});
+function readOnlyError(file, name) {
+  return _core.types.callExpression(file.addHelper("readOnlyError"), [_core.types.stringLiteral(`#${name}`)]);
+}
+function writeOnlyError(file, name) {
+  if (!file.availableHelper("writeOnlyError")) {
+    console.warn(`@babel/helpers is outdated, update it to silence this warning.`);
+    return _core.types.buildUndefinedNode();
+  }
+  return _core.types.callExpression(file.addHelper("writeOnlyError"), [_core.types.stringLiteral(`#${name}`)]);
+}
+function buildStaticPrivateFieldAccess(expr, noUninitializedPrivateFieldAccess) {
+  if (noUninitializedPrivateFieldAccess) return expr;
+  return _core.types.memberExpression(expr, _core.types.identifier("_"));
+}
+function autoInherits(fn) {
+  return function (member) {
+    return _core.types.inherits(fn.apply(this, arguments), member.node);
+  };
+}
+const privateNameHandlerSpec = {
+  memoise(member, count) {
+    const {
+      scope
+    } = member;
+    const {
+      object
+    } = member.node;
+    const memo = scope.maybeGenerateMemoised(object);
+    if (!memo) {
+      return;
+    }
+    this.memoiser.set(object, memo, count);
+  },
+  receiver(member) {
+    const {
+      object
+    } = member.node;
+    if (this.memoiser.has(object)) {
+      return _core.types.cloneNode(this.memoiser.get(object));
+    }
+    return _core.types.cloneNode(object);
+  },
+  get: autoInherits(function (member) {
+    const {
+      classRef,
+      privateNamesMap,
+      file,
+      innerBinding,
+      noUninitializedPrivateFieldAccess
+    } = this;
+    const privateName = member.node.property;
+    const {
+      name
+    } = privateName.id;
+    const {
+      id,
+      static: isStatic,
+      method: isMethod,
+      methodId,
+      getId,
+      setId
+    } = privateNamesMap.get(name);
+    const isGetterOrSetter = getId || setId;
+    const cloneId = id => _core.types.inherits(_core.types.cloneNode(id), privateName);
+    if (isStatic) {
+      unshadow(classRef.name, member.scope, innerBinding);
+      if (!newHelpers(file)) {
+        const helperName = isMethod && !isGetterOrSetter ? "classStaticPrivateMethodGet" : "classStaticPrivateFieldSpecGet";
+        return _core.types.callExpression(file.addHelper(helperName), [this.receiver(member), _core.types.cloneNode(classRef), cloneId(id)]);
+      }
+      const receiver = this.receiver(member);
+      const skipCheck = _core.types.isIdentifier(receiver) && receiver.name === classRef.name;
+      if (!isMethod) {
+        if (skipCheck) {
+          return buildStaticPrivateFieldAccess(cloneId(id), noUninitializedPrivateFieldAccess);
+        }
+        return buildStaticPrivateFieldAccess(_core.types.callExpression(file.addHelper("assertClassBrand"), [_core.types.cloneNode(classRef), receiver, cloneId(id)]), noUninitializedPrivateFieldAccess);
+      }
+      if (getId) {
+        if (skipCheck) {
+          return _core.types.callExpression(cloneId(getId), [receiver]);
+        }
+        return _core.types.callExpression(file.addHelper("classPrivateGetter"), [_core.types.cloneNode(classRef), receiver, cloneId(getId)]);
+      }
+      if (setId) {
+        const err = _core.types.buildUndefinedNode();
+        if (skipCheck) return err;
+        return _core.types.sequenceExpression([_core.types.callExpression(file.addHelper("assertClassBrand"), [_core.types.cloneNode(classRef), receiver]), err]);
+      }
+      if (skipCheck) return cloneId(id);
+      return _core.types.callExpression(file.addHelper("assertClassBrand"), [_core.types.cloneNode(classRef), receiver, cloneId(id)]);
+    }
+    if (isMethod) {
+      if (isGetterOrSetter) {
+        if (!getId) {
+          return _core.types.sequenceExpression([this.receiver(member), writeOnlyError(file, name)]);
+        }
+        if (!newHelpers(file)) {
+          return _core.types.callExpression(file.addHelper("classPrivateFieldGet"), [this.receiver(member), cloneId(id)]);
+        }
+        return _core.types.callExpression(file.addHelper("classPrivateGetter"), [_core.types.cloneNode(id), this.receiver(member), cloneId(getId)]);
+      }
+      if (!newHelpers(file)) {
+        return _core.types.callExpression(file.addHelper("classPrivateMethodGet"), [this.receiver(member), _core.types.cloneNode(id), cloneId(methodId)]);
+      }
+      return _core.types.callExpression(file.addHelper("assertClassBrand"), [_core.types.cloneNode(id), this.receiver(member), cloneId(methodId)]);
+    }
+    if (newHelpers(file)) {
+      return _core.types.callExpression(file.addHelper("classPrivateFieldGet2"), [cloneId(id), this.receiver(member)]);
+    }
+    return _core.types.callExpression(file.addHelper("classPrivateFieldGet"), [this.receiver(member), cloneId(id)]);
+  }),
+  boundGet(member) {
+    this.memoise(member, 1);
+    return _core.types.callExpression(_core.types.memberExpression(this.get(member), _core.types.identifier("bind")), [this.receiver(member)]);
+  },
+  set: autoInherits(function (member, value) {
+    const {
+      classRef,
+      privateNamesMap,
+      file,
+      noUninitializedPrivateFieldAccess
+    } = this;
+    const privateName = member.node.property;
+    const {
+      name
+    } = privateName.id;
+    const {
+      id,
+      static: isStatic,
+      method: isMethod,
+      setId,
+      getId
+    } = privateNamesMap.get(name);
+    const isGetterOrSetter = getId || setId;
+    const cloneId = id => _core.types.inherits(_core.types.cloneNode(id), privateName);
+    if (isStatic) {
+      if (!newHelpers(file)) {
+        const helperName = isMethod && !isGetterOrSetter ? "classStaticPrivateMethodSet" : "classStaticPrivateFieldSpecSet";
+        return _core.types.callExpression(file.addHelper(helperName), [this.receiver(member), _core.types.cloneNode(classRef), cloneId(id), value]);
+      }
+      const receiver = this.receiver(member);
+      const skipCheck = _core.types.isIdentifier(receiver) && receiver.name === classRef.name;
+      if (isMethod && !setId) {
+        const err = readOnlyError(file, name);
+        if (skipCheck) return _core.types.sequenceExpression([value, err]);
+        return _core.types.sequenceExpression([value, _core.types.callExpression(file.addHelper("assertClassBrand"), [_core.types.cloneNode(classRef), receiver]), readOnlyError(file, name)]);
+      }
+      if (setId) {
+        if (skipCheck) {
+          return _core.types.callExpression(_core.types.cloneNode(setId), [receiver, value]);
+        }
+        return _core.types.callExpression(file.addHelper("classPrivateSetter"), [_core.types.cloneNode(classRef), cloneId(setId), receiver, value]);
+      }
+      return _core.types.assignmentExpression("=", buildStaticPrivateFieldAccess(cloneId(id), noUninitializedPrivateFieldAccess), skipCheck ? value : _core.types.callExpression(file.addHelper("assertClassBrand"), [_core.types.cloneNode(classRef), receiver, value]));
+    }
+    if (isMethod) {
+      if (setId) {
+        if (!newHelpers(file)) {
+          return _core.types.callExpression(file.addHelper("classPrivateFieldSet"), [this.receiver(member), cloneId(id), value]);
+        }
+        return _core.types.callExpression(file.addHelper("classPrivateSetter"), [_core.types.cloneNode(id), cloneId(setId), this.receiver(member), value]);
+      }
+      return _core.types.sequenceExpression([this.receiver(member), value, readOnlyError(file, name)]);
+    }
+    if (newHelpers(file)) {
+      return _core.types.callExpression(file.addHelper("classPrivateFieldSet2"), [cloneId(id), this.receiver(member), value]);
+    }
+    return _core.types.callExpression(file.addHelper("classPrivateFieldSet"), [this.receiver(member), cloneId(id), value]);
+  }),
+  destructureSet(member) {
+    const {
+      classRef,
+      privateNamesMap,
+      file,
+      noUninitializedPrivateFieldAccess
+    } = this;
+    const privateName = member.node.property;
+    const {
+      name
+    } = privateName.id;
+    const {
+      id,
+      static: isStatic,
+      method: isMethod,
+      setId
+    } = privateNamesMap.get(name);
+    const cloneId = id => _core.types.inherits(_core.types.cloneNode(id), privateName);
+    if (!newHelpers(file)) {
+      if (isStatic) {
+        try {
+          var helper = file.addHelper("classStaticPrivateFieldDestructureSet");
+        } catch (_unused) {
+          throw new Error("Babel can not transpile `[C.#p] = [0]` with @babel/helpers < 7.13.10, \n" + "please update @babel/helpers to the latest version.");
+        }
+        return _core.types.memberExpression(_core.types.callExpression(helper, [this.receiver(member), _core.types.cloneNode(classRef), cloneId(id)]), _core.types.identifier("value"));
+      }
+      return _core.types.memberExpression(_core.types.callExpression(file.addHelper("classPrivateFieldDestructureSet"), [this.receiver(member), cloneId(id)]), _core.types.identifier("value"));
+    }
+    if (isMethod && !setId) {
+      return _core.types.memberExpression(_core.types.sequenceExpression([member.node.object, readOnlyError(file, name)]), _core.types.identifier("_"));
+    }
+    if (isStatic && !isMethod) {
+      const getCall = this.get(member);
+      if (!noUninitializedPrivateFieldAccess || !_core.types.isCallExpression(getCall)) {
+        return getCall;
+      }
+      const ref = getCall.arguments.pop();
+      getCall.arguments.push(_core.template.expression.ast`(_) => ${ref} = _`);
+      return _core.types.memberExpression(_core.types.callExpression(file.addHelper("toSetter"), [getCall]), _core.types.identifier("_"));
+    }
+    const setCall = this.set(member, _core.types.identifier("_"));
+    if (!_core.types.isCallExpression(setCall) || !_core.types.isIdentifier(setCall.arguments[setCall.arguments.length - 1], {
+      name: "_"
+    })) {
+      throw member.buildCodeFrameError("Internal Babel error while compiling this code. This is a Babel bug. " + "Please report it at https://github.com/babel/babel/issues.");
+    }
+    let args;
+    if (_core.types.isMemberExpression(setCall.callee, {
+      computed: false
+    }) && _core.types.isIdentifier(setCall.callee.property) && setCall.callee.property.name === "call") {
+      args = [setCall.callee.object, _core.types.arrayExpression(setCall.arguments.slice(1, -1)), setCall.arguments[0]];
+    } else {
+      args = [setCall.callee, _core.types.arrayExpression(setCall.arguments.slice(0, -1))];
+    }
+    return _core.types.memberExpression(_core.types.callExpression(file.addHelper("toSetter"), args), _core.types.identifier("_"));
+  },
+  call(member, args) {
+    this.memoise(member, 1);
+    return (0, _helperOptimiseCallExpression.default)(this.get(member), this.receiver(member), args, false);
+  },
+  optionalCall(member, args) {
+    this.memoise(member, 1);
+    return (0, _helperOptimiseCallExpression.default)(this.get(member), this.receiver(member), args, true);
+  },
+  delete() {
+    throw new Error("Internal Babel error: deleting private elements is a parsing error.");
+  }
+};
+const privateNameHandlerLoose = {
+  get(member) {
+    const {
+      privateNamesMap,
+      file
+    } = this;
+    const {
+      object
+    } = member.node;
+    const {
+      name
+    } = member.node.property.id;
+    return _core.template.expression`BASE(REF, PROP)[PROP]`({
+      BASE: file.addHelper("classPrivateFieldLooseBase"),
+      REF: _core.types.cloneNode(object),
+      PROP: _core.types.cloneNode(privateNamesMap.get(name).id)
+    });
+  },
+  set() {
+    throw new Error("private name handler with loose = true don't need set()");
+  },
+  boundGet(member) {
+    return _core.types.callExpression(_core.types.memberExpression(this.get(member), _core.types.identifier("bind")), [_core.types.cloneNode(member.node.object)]);
+  },
+  simpleSet(member) {
+    return this.get(member);
+  },
+  destructureSet(member) {
+    return this.get(member);
+  },
+  call(member, args) {
+    return _core.types.callExpression(this.get(member), args);
+  },
+  optionalCall(member, args) {
+    return _core.types.optionalCallExpression(this.get(member), args, true);
+  },
+  delete() {
+    throw new Error("Internal Babel error: deleting private elements is a parsing error.");
+  }
+};
+function transformPrivateNamesUsage(ref, path, privateNamesMap, {
+  privateFieldsAsProperties,
+  noUninitializedPrivateFieldAccess,
+  noDocumentAll,
+  innerBinding
+}, state) {
+  if (!privateNamesMap.size) return;
+  const body = path.get("body");
+  const handler = privateFieldsAsProperties ? privateNameHandlerLoose : privateNameHandlerSpec;
+  (0, _helperMemberExpressionToFunctions.default)(body, privateNameVisitor, Object.assign({
+    privateNamesMap,
+    classRef: ref,
+    file: state
+  }, handler, {
+    noDocumentAll,
+    noUninitializedPrivateFieldAccess,
+    innerBinding
+  }));
+  body.traverse(privateInVisitor, {
+    privateNamesMap,
+    classRef: ref,
+    file: state,
+    privateFieldsAsProperties,
+    innerBinding
+  });
+}
+function buildPrivateFieldInitLoose(ref, prop, privateNamesMap) {
+  const {
+    id
+  } = privateNamesMap.get(prop.node.key.id.name);
+  const value = prop.node.value || prop.scope.buildUndefinedNode();
+  return inheritPropComments(_core.template.statement.ast`
+      Object.defineProperty(${ref}, ${_core.types.cloneNode(id)}, {
+        // configurable is false by default
+        // enumerable is false by default
+        writable: true,
+        value: ${value}
+      });
+    `, prop);
+}
+function buildPrivateInstanceFieldInitSpec(ref, prop, privateNamesMap, state) {
+  const {
+    id
+  } = privateNamesMap.get(prop.node.key.id.name);
+  const value = prop.node.value || prop.scope.buildUndefinedNode();
+  if (!state.availableHelper("classPrivateFieldInitSpec")) {
+    return inheritPropComments(_core.template.statement.ast`${_core.types.cloneNode(id)}.set(${ref}, {
+          // configurable is always false for private elements
+          // enumerable is always false for private elements
+          writable: true,
+          value: ${value},
+        })`, prop);
+  }
+  const helper = state.addHelper("classPrivateFieldInitSpec");
+  return inheritLoc(inheritPropComments(_core.types.expressionStatement(_core.types.callExpression(helper, [_core.types.thisExpression(), inheritLoc(_core.types.cloneNode(id), prop.node.key), newHelpers(state) ? value : _core.template.expression.ast`{ writable: true, value: ${value} }`])), prop), prop.node);
+}
+function buildPrivateStaticFieldInitSpec(prop, privateNamesMap, noUninitializedPrivateFieldAccess) {
+  const privateName = privateNamesMap.get(prop.node.key.id.name);
+  const value = noUninitializedPrivateFieldAccess ? prop.node.value : _core.template.expression.ast`{
+        _: ${prop.node.value || _core.types.buildUndefinedNode()}
+      }`;
+  return inheritPropComments(_core.types.variableDeclaration("var", [_core.types.variableDeclarator(_core.types.cloneNode(privateName.id), value)]), prop);
+}
+var buildPrivateStaticFieldInitSpecOld = function (prop, privateNamesMap) {
+  const privateName = privateNamesMap.get(prop.node.key.id.name);
+  const {
+    id,
+    getId,
+    setId,
+    initAdded
+  } = privateName;
+  const isGetterOrSetter = getId || setId;
+  if (!prop.isProperty() && (initAdded || !isGetterOrSetter)) return;
+  if (isGetterOrSetter) {
+    privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
+      initAdded: true
+    }));
+    return inheritPropComments(_core.template.statement.ast`
+          var ${_core.types.cloneNode(id)} = {
+            // configurable is false by default
+            // enumerable is false by default
+            // writable is false by default
+            get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},
+            set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}
+          }
+        `, prop);
+  }
+  const value = prop.node.value || prop.scope.buildUndefinedNode();
+  return inheritPropComments(_core.template.statement.ast`
+        var ${_core.types.cloneNode(id)} = {
+          // configurable is false by default
+          // enumerable is false by default
+          writable: true,
+          value: ${value}
+        };
+      `, prop);
+};
+function buildPrivateMethodInitLoose(ref, prop, privateNamesMap) {
+  const privateName = privateNamesMap.get(prop.node.key.id.name);
+  const {
+    methodId,
+    id,
+    getId,
+    setId,
+    initAdded
+  } = privateName;
+  if (initAdded) return;
+  if (methodId) {
+    return inheritPropComments(_core.template.statement.ast`
+        Object.defineProperty(${ref}, ${id}, {
+          // configurable is false by default
+          // enumerable is false by default
+          // writable is false by default
+          value: ${methodId.name}
+        });
+      `, prop);
+  }
+  const isGetterOrSetter = getId || setId;
+  if (isGetterOrSetter) {
+    privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
+      initAdded: true
+    }));
+    return inheritPropComments(_core.template.statement.ast`
+        Object.defineProperty(${ref}, ${id}, {
+          // configurable is false by default
+          // enumerable is false by default
+          // writable is false by default
+          get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},
+          set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}
+        });
+      `, prop);
+  }
+}
+function buildPrivateInstanceMethodInitSpec(ref, prop, privateNamesMap, state) {
+  const privateName = privateNamesMap.get(prop.node.key.id.name);
+  if (privateName.initAdded) return;
+  if (!newHelpers(state)) {
+    const isGetterOrSetter = privateName.getId || privateName.setId;
+    if (isGetterOrSetter) {
+      return buildPrivateAccessorInitialization(ref, prop, privateNamesMap, state);
+    }
+  }
+  return buildPrivateInstanceMethodInitialization(ref, prop, privateNamesMap, state);
+}
+function buildPrivateAccessorInitialization(ref, prop, privateNamesMap, state) {
+  const privateName = privateNamesMap.get(prop.node.key.id.name);
+  const {
+    id,
+    getId,
+    setId
+  } = privateName;
+  privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
+    initAdded: true
+  }));
+  if (!state.availableHelper("classPrivateFieldInitSpec")) {
+    return inheritPropComments(_core.template.statement.ast`
+          ${id}.set(${ref}, {
+            get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},
+            set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}
+          });
+        `, prop);
+  }
+  const helper = state.addHelper("classPrivateFieldInitSpec");
+  return inheritLoc(inheritPropComments(_core.template.statement.ast`${helper}(
+      ${_core.types.thisExpression()},
+      ${_core.types.cloneNode(id)},
+      {
+        get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},
+        set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}
+      },
+    )`, prop), prop.node);
+}
+function buildPrivateInstanceMethodInitialization(ref, prop, privateNamesMap, state) {
+  const privateName = privateNamesMap.get(prop.node.key.id.name);
+  const {
+    id
+  } = privateName;
+  if (!state.availableHelper("classPrivateMethodInitSpec")) {
+    return inheritPropComments(_core.template.statement.ast`${id}.add(${ref})`, prop);
+  }
+  const helper = state.addHelper("classPrivateMethodInitSpec");
+  return inheritPropComments(_core.template.statement.ast`${helper}(
+      ${_core.types.thisExpression()},
+      ${_core.types.cloneNode(id)}
+    )`, prop);
+}
+function buildPublicFieldInitLoose(ref, prop) {
+  const {
+    key,
+    computed
+  } = prop.node;
+  const value = prop.node.value || prop.scope.buildUndefinedNode();
+  return inheritPropComments(_core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.memberExpression(ref, key, computed || _core.types.isLiteral(key)), value)), prop);
+}
+function buildPublicFieldInitSpec(ref, prop, state) {
+  const {
+    key,
+    computed
+  } = prop.node;
+  const value = prop.node.value || prop.scope.buildUndefinedNode();
+  return inheritPropComments(_core.types.expressionStatement(_core.types.callExpression(state.addHelper("defineProperty"), [ref, computed || _core.types.isLiteral(key) ? key : _core.types.stringLiteral(key.name), value])), prop);
+}
+function buildPrivateStaticMethodInitLoose(ref, prop, state, privateNamesMap) {
+  const privateName = privateNamesMap.get(prop.node.key.id.name);
+  const {
+    id,
+    methodId,
+    getId,
+    setId,
+    initAdded
+  } = privateName;
+  if (initAdded) return;
+  const isGetterOrSetter = getId || setId;
+  if (isGetterOrSetter) {
+    privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
+      initAdded: true
+    }));
+    return inheritPropComments(_core.template.statement.ast`
+        Object.defineProperty(${ref}, ${id}, {
+          // configurable is false by default
+          // enumerable is false by default
+          // writable is false by default
+          get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},
+          set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}
+        })
+      `, prop);
+  }
+  return inheritPropComments(_core.template.statement.ast`
+      Object.defineProperty(${ref}, ${id}, {
+        // configurable is false by default
+        // enumerable is false by default
+        // writable is false by default
+        value: ${methodId.name}
+      });
+    `, prop);
+}
+function buildPrivateMethodDeclaration(file, prop, privateNamesMap, privateFieldsAsSymbolsOrProperties = false) {
+  const privateName = privateNamesMap.get(prop.node.key.id.name);
+  const {
+    id,
+    methodId,
+    getId,
+    setId,
+    getterDeclared,
+    setterDeclared,
+    static: isStatic
+  } = privateName;
+  const {
+    params,
+    body,
+    generator,
+    async
+  } = prop.node;
+  const isGetter = getId && params.length === 0;
+  const isSetter = setId && params.length > 0;
+  if (isGetter && getterDeclared || isSetter && setterDeclared) {
+    privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
+      initAdded: true
+    }));
+    return null;
+  }
+  if (newHelpers(file) && (isGetter || isSetter) && !privateFieldsAsSymbolsOrProperties) {
+    const scope = prop.get("body").scope;
+    const thisArg = scope.generateUidIdentifier("this");
+    const state = {
+      thisRef: thisArg,
+      argumentsPath: []
+    };
+    prop.traverse(thisContextVisitor, state);
+    if (state.argumentsPath.length) {
+      const argumentsId = scope.generateUidIdentifier("arguments");
+      scope.push({
+        id: argumentsId,
+        init: _core.template.expression.ast`[].slice.call(arguments, 1)`
+      });
+      for (const path of state.argumentsPath) {
+        path.replaceWith(_core.types.cloneNode(argumentsId));
+      }
+    }
+    params.unshift(_core.types.cloneNode(thisArg));
+  }
+  let declId = methodId;
+  if (isGetter) {
+    privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
+      getterDeclared: true,
+      initAdded: true
+    }));
+    declId = getId;
+  } else if (isSetter) {
+    privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
+      setterDeclared: true,
+      initAdded: true
+    }));
+    declId = setId;
+  } else if (isStatic && !privateFieldsAsSymbolsOrProperties) {
+    declId = id;
+  }
+  return inheritPropComments(_core.types.functionDeclaration(_core.types.cloneNode(declId), params, body, generator, async), prop);
+}
+const thisContextVisitor = _traverse.visitors.environmentVisitor({
+  Identifier(path, state) {
+    if (state.argumentsPath && path.node.name === "arguments") {
+      state.argumentsPath.push(path);
+    }
+  },
+  UnaryExpression(path) {
+    const {
+      node
+    } = path;
+    if (node.operator === "delete") {
+      const argument = (0, _helperSkipTransparentExpressionWrappers.skipTransparentExprWrapperNodes)(node.argument);
+      if (_core.types.isThisExpression(argument)) {
+        path.replaceWith(_core.types.booleanLiteral(true));
+      }
+    }
+  },
+  ThisExpression(path, state) {
+    state.needsClassRef = true;
+    path.replaceWith(_core.types.cloneNode(state.thisRef));
+  },
+  MetaProperty(path) {
+    const {
+      node,
+      scope
+    } = path;
+    if (node.meta.name === "new" && node.property.name === "target") {
+      path.replaceWith(scope.buildUndefinedNode());
+    }
+  }
+});
+const innerReferencesVisitor = {
+  ReferencedIdentifier(path, state) {
+    if (path.scope.bindingIdentifierEquals(path.node.name, state.innerBinding)) {
+      state.needsClassRef = true;
+      path.node.name = state.thisRef.name;
+    }
+  }
+};
+function replaceThisContext(path, ref, innerBindingRef) {
+  var _state$thisRef;
+  const state = {
+    thisRef: ref,
+    needsClassRef: false,
+    innerBinding: innerBindingRef
+  };
+  if (!path.isMethod()) {
+    path.traverse(thisContextVisitor, state);
+  }
+  if (innerBindingRef != null && (_state$thisRef = state.thisRef) != null && _state$thisRef.name && state.thisRef.name !== innerBindingRef.name) {
+    path.traverse(innerReferencesVisitor, state);
+  }
+  return state.needsClassRef;
+}
+function isNameOrLength({
+  key,
+  computed
+}) {
+  if (key.type === "Identifier") {
+    return !computed && (key.name === "name" || key.name === "length");
+  }
+  if (key.type === "StringLiteral") {
+    return key.value === "name" || key.value === "length";
+  }
+  return false;
+}
+function inheritPropComments(node, prop) {
+  _core.types.inheritLeadingComments(node, prop.node);
+  _core.types.inheritInnerComments(node, prop.node);
+  return node;
+}
+function inheritLoc(node, original) {
+  node.start = original.start;
+  node.end = original.end;
+  node.loc = original.loc;
+  return node;
+}
+function buildFieldsInitNodes(ref, superRef, props, privateNamesMap, file, setPublicClassFields, privateFieldsAsSymbolsOrProperties, noUninitializedPrivateFieldAccess, constantSuper, innerBindingRef) {
+  let classRefFlags = 0;
+  let injectSuperRef;
+  const staticNodes = [];
+  const instanceNodes = [];
+  let lastInstanceNodeReturnsThis = false;
+  const pureStaticNodes = [];
+  let classBindingNode = null;
+  const getSuperRef = _core.types.isIdentifier(superRef) ? () => superRef : () => {
+    injectSuperRef != null ? injectSuperRef : injectSuperRef = props[0].scope.generateUidIdentifierBasedOnNode(superRef);
+    return injectSuperRef;
+  };
+  const classRefForInnerBinding = ref != null ? ref : props[0].scope.generateUidIdentifier((innerBindingRef == null ? void 0 : innerBindingRef.name) || "Class");
+  ref != null ? ref : ref = _core.types.cloneNode(innerBindingRef);
+  for (const prop of props) {
+    if (prop.isClassProperty()) {
+      ts.assertFieldTransformed(prop);
+    }
+    const isStatic = !(_core.types.isStaticBlock != null && _core.types.isStaticBlock(prop.node)) && prop.node.static;
+    const isInstance = !isStatic;
+    const isPrivate = prop.isPrivate();
+    const isPublic = !isPrivate;
+    const isField = prop.isProperty();
+    const isMethod = !isField;
+    const isStaticBlock = prop.isStaticBlock == null ? void 0 : prop.isStaticBlock();
+    if (isStatic) classRefFlags |= 1;
+    if (isStatic || isMethod && isPrivate || isStaticBlock) {
+      new _helperReplaceSupers.default({
+        methodPath: prop,
+        constantSuper,
+        file: file,
+        refToPreserve: innerBindingRef,
+        getSuperRef,
+        getObjectRef() {
+          classRefFlags |= 2;
+          if (isStatic || isStaticBlock) {
+            return classRefForInnerBinding;
+          } else {
+            return _core.types.memberExpression(classRefForInnerBinding, _core.types.identifier("prototype"));
+          }
+        }
+      }).replace();
+      const replaced = replaceThisContext(prop, classRefForInnerBinding, innerBindingRef);
+      if (replaced) {
+        classRefFlags |= 2;
+      }
+    }
+    lastInstanceNodeReturnsThis = false;
+    switch (true) {
+      case isStaticBlock:
+        {
+          const blockBody = prop.node.body;
+          if (blockBody.length === 1 && _core.types.isExpressionStatement(blockBody[0])) {
+            staticNodes.push(inheritPropComments(blockBody[0], prop));
+          } else {
+            staticNodes.push(_core.types.inheritsComments(_core.template.statement.ast`(() => { ${blockBody} })()`, prop.node));
+          }
+          break;
+        }
+      case isStatic && isPrivate && isField && privateFieldsAsSymbolsOrProperties:
+        staticNodes.push(buildPrivateFieldInitLoose(_core.types.cloneNode(ref), prop, privateNamesMap));
+        break;
+      case isStatic && isPrivate && isField && !privateFieldsAsSymbolsOrProperties:
+        if (!newHelpers(file)) {
+          staticNodes.push(buildPrivateStaticFieldInitSpecOld(prop, privateNamesMap));
+        } else {
+          staticNodes.push(buildPrivateStaticFieldInitSpec(prop, privateNamesMap, noUninitializedPrivateFieldAccess));
+        }
+        break;
+      case isStatic && isPublic && isField && setPublicClassFields:
+        if (!isNameOrLength(prop.node)) {
+          staticNodes.push(buildPublicFieldInitLoose(_core.types.cloneNode(ref), prop));
+          break;
+        }
+      case isStatic && isPublic && isField && !setPublicClassFields:
+        staticNodes.push(buildPublicFieldInitSpec(_core.types.cloneNode(ref), prop, file));
+        break;
+      case isInstance && isPrivate && isField && privateFieldsAsSymbolsOrProperties:
+        instanceNodes.push(buildPrivateFieldInitLoose(_core.types.thisExpression(), prop, privateNamesMap));
+        break;
+      case isInstance && isPrivate && isField && !privateFieldsAsSymbolsOrProperties:
+        instanceNodes.push(buildPrivateInstanceFieldInitSpec(_core.types.thisExpression(), prop, privateNamesMap, file));
+        break;
+      case isInstance && isPrivate && isMethod && privateFieldsAsSymbolsOrProperties:
+        instanceNodes.unshift(buildPrivateMethodInitLoose(_core.types.thisExpression(), prop, privateNamesMap));
+        pureStaticNodes.push(buildPrivateMethodDeclaration(file, prop, privateNamesMap, privateFieldsAsSymbolsOrProperties));
+        break;
+      case isInstance && isPrivate && isMethod && !privateFieldsAsSymbolsOrProperties:
+        instanceNodes.unshift(buildPrivateInstanceMethodInitSpec(_core.types.thisExpression(), prop, privateNamesMap, file));
+        pureStaticNodes.push(buildPrivateMethodDeclaration(file, prop, privateNamesMap, privateFieldsAsSymbolsOrProperties));
+        break;
+      case isStatic && isPrivate && isMethod && !privateFieldsAsSymbolsOrProperties:
+        if (!newHelpers(file)) {
+          staticNodes.unshift(buildPrivateStaticFieldInitSpecOld(prop, privateNamesMap));
+        }
+        pureStaticNodes.push(buildPrivateMethodDeclaration(file, prop, privateNamesMap, privateFieldsAsSymbolsOrProperties));
+        break;
+      case isStatic && isPrivate && isMethod && privateFieldsAsSymbolsOrProperties:
+        staticNodes.unshift(buildPrivateStaticMethodInitLoose(_core.types.cloneNode(ref), prop, file, privateNamesMap));
+        pureStaticNodes.push(buildPrivateMethodDeclaration(file, prop, privateNamesMap, privateFieldsAsSymbolsOrProperties));
+        break;
+      case isInstance && isPublic && isField && setPublicClassFields:
+        instanceNodes.push(buildPublicFieldInitLoose(_core.types.thisExpression(), prop));
+        break;
+      case isInstance && isPublic && isField && !setPublicClassFields:
+        lastInstanceNodeReturnsThis = true;
+        instanceNodes.push(buildPublicFieldInitSpec(_core.types.thisExpression(), prop, file));
+        break;
+      default:
+        throw new Error("Unreachable.");
+    }
+  }
+  if (classRefFlags & 2 && innerBindingRef != null) {
+    classBindingNode = _core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.cloneNode(classRefForInnerBinding), _core.types.cloneNode(innerBindingRef)));
+  }
+  return {
+    staticNodes: staticNodes.filter(Boolean),
+    instanceNodes: instanceNodes.filter(Boolean),
+    lastInstanceNodeReturnsThis,
+    pureStaticNodes: pureStaticNodes.filter(Boolean),
+    classBindingNode,
+    wrapClass(path) {
+      for (const prop of props) {
+        prop.node.leadingComments = null;
+        prop.remove();
+      }
+      if (injectSuperRef) {
+        path.scope.push({
+          id: _core.types.cloneNode(injectSuperRef)
+        });
+        path.set("superClass", _core.types.assignmentExpression("=", injectSuperRef, path.node.superClass));
+      }
+      if (classRefFlags !== 0) {
+        if (path.isClassExpression()) {
+          path.scope.push({
+            id: ref
+          });
+          path.replaceWith(_core.types.assignmentExpression("=", _core.types.cloneNode(ref), path.node));
+        } else {
+          if (innerBindingRef == null) {
+            path.node.id = ref;
+          }
+          if (classBindingNode != null) {
+            path.scope.push({
+              id: classRefForInnerBinding
+            });
+          }
+        }
+      }
+      return path;
+    }
+  };
+}
+
+//# sourceMappingURL=fields.js.map
Index: frontend/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js.map
===================================================================
--- frontend/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js.map	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js.map	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_core","require","_traverse","_helperReplaceSupers","_helperMemberExpressionToFunctions","_helperOptimiseCallExpression","_helperAnnotateAsPure","_helperSkipTransparentExpressionWrappers","ts","newHelpers","file","availableHelper","buildPrivateNamesMap","className","privateFieldsAsSymbolsOrProperties","props","privateNamesMap","Map","classBrandId","prop","isPrivate","name","node","key","id","update","get","isMethod","isProperty","isStatic","static","initAdded","scope","generateUidIdentifier","method","set","isClassPrivateMethod","kind","body","$","length","t","isReturnStatement","isCallExpression","argument","arguments","isThisExpression","isIdentifier","callee","getId","cloneNode","getterDeclared","params","isExpressionStatement","expression","setId","setterDeclared","methodId","buildPrivateNamesNodes","privateFieldsAsProperties","privateFieldsAsSymbols","state","initNodes","injectedIds","Set","value","isGetterOrSetter","init","callExpression","addHelper","stringLiteral","identifier","has","add","newExpression","annotateAsPure","push","template","statement","ast","privateNameVisitorFactory","visitor","nestedVisitor","visitors","environmentVisitor","Object","assign","privateNameVisitor","Class","path","visiblePrivateNames","redeclared","delete","traverse","skipKey","PrivateName","noDocumentAll","parentPath","isMemberExpression","property","isOptionalMemberExpression","includes","handle","unshadow","innerBinding","_scope","hasBinding","bindingIdentifierEquals","rename","parent","buildCheckInRHS","rhs","inRHSIsObject","privateInVisitor","BinaryExpression","operator","left","right","isPrivateName","classRef","replaceWith","readOnlyError","writeOnlyError","console","warn","buildUndefinedNode","buildStaticPrivateFieldAccess","expr","noUninitializedPrivateFieldAccess","memberExpression","autoInherits","fn","member","inherits","apply","privateNameHandlerSpec","memoise","count","object","memo","maybeGenerateMemoised","memoiser","receiver","privateName","cloneId","helperName","skipCheck","err","sequenceExpression","boundGet","assignmentExpression","destructureSet","helper","_unused","Error","getCall","ref","pop","setCall","buildCodeFrameError","args","computed","arrayExpression","slice","call","optimiseCall","optionalCall","privateNameHandlerLoose","BASE","REF","PROP","simpleSet","optionalCallExpression","transformPrivateNamesUsage","size","handler","memberExpressionToFunctions","buildPrivateFieldInitLoose","inheritPropComments","buildPrivateInstanceFieldInitSpec","inheritLoc","expressionStatement","thisExpression","buildPrivateStaticFieldInitSpec","variableDeclaration","variableDeclarator","buildPrivateStaticFieldInitSpecOld","buildPrivateMethodInitLoose","buildPrivateInstanceMethodInitSpec","buildPrivateAccessorInitialization","buildPrivateInstanceMethodInitialization","buildPublicFieldInitLoose","isLiteral","buildPublicFieldInitSpec","buildPrivateStaticMethodInitLoose","buildPrivateMethodDeclaration","generator","async","isGetter","isSetter","thisArg","thisRef","argumentsPath","thisContextVisitor","argumentsId","unshift","declId","functionDeclaration","Identifier","UnaryExpression","skipTransparentExprWrapperNodes","booleanLiteral","ThisExpression","needsClassRef","MetaProperty","meta","innerReferencesVisitor","ReferencedIdentifier","replaceThisContext","innerBindingRef","_state$thisRef","isNameOrLength","type","inheritLeadingComments","inheritInnerComments","original","start","end","loc","buildFieldsInitNodes","superRef","setPublicClassFields","constantSuper","classRefFlags","injectSuperRef","staticNodes","instanceNodes","lastInstanceNodeReturnsThis","pureStaticNodes","classBindingNode","getSuperRef","generateUidIdentifierBasedOnNode","classRefForInnerBinding","isClassProperty","assertFieldTransformed","isStaticBlock","isInstance","isPublic","isField","ReplaceSupers","methodPath","refToPreserve","getObjectRef","replace","replaced","blockBody","inheritsComments","filter","Boolean","wrapClass","leadingComments","remove","superClass","isClassExpression"],"sources":["../src/fields.ts"],"sourcesContent":["import { template, types as t } from \"@babel/core\";\nimport type { File, NodePath, Visitor, Scope } from \"@babel/core\";\nimport { visitors } from \"@babel/traverse\";\nimport ReplaceSupers from \"@babel/helper-replace-supers\";\nimport memberExpressionToFunctions from \"@babel/helper-member-expression-to-functions\";\nimport type {\n  Handler,\n  HandlerState,\n} from \"@babel/helper-member-expression-to-functions\";\nimport optimiseCall from \"@babel/helper-optimise-call-expression\";\nimport annotateAsPure from \"@babel/helper-annotate-as-pure\";\nimport { skipTransparentExprWrapperNodes } from \"@babel/helper-skip-transparent-expression-wrappers\";\n\nimport * as ts from \"./typescript.ts\";\n\ninterface PrivateNameMetadata {\n  id: t.Identifier;\n  static: boolean;\n  method: boolean;\n  getId?: t.Identifier;\n  setId?: t.Identifier;\n  methodId?: t.Identifier;\n  initAdded?: boolean;\n  getterDeclared?: boolean;\n  setterDeclared?: boolean;\n}\n\ntype PrivateNamesMapGeneric<V> = Map<string, V>;\n\ntype PrivateNamesMap = PrivateNamesMapGeneric<PrivateNameMetadata>;\n\nif (!process.env.BABEL_8_BREAKING) {\n  // eslint-disable-next-line no-var\n  var newHelpers = (file: File) => {\n    if (!process.env.IS_PUBLISH) {\n      const { comments } = file.ast;\n      // This is needed for the test in\n      // babel-plugin-transform-class-properties/test/fixtures/regression/old-helpers\n      if (comments?.some(c => c.value.includes(\"@force-old-private-helpers\"))) {\n        return false;\n      }\n    }\n    return file.availableHelper(\"classPrivateFieldGet2\");\n  };\n}\n\nexport function buildPrivateNamesMap(\n  className: string,\n  privateFieldsAsSymbolsOrProperties: boolean,\n  props: PropPath[],\n  file: File,\n) {\n  const privateNamesMap: PrivateNamesMap = new Map();\n  let classBrandId: t.Identifier;\n  for (const prop of props) {\n    if (prop.isPrivate()) {\n      const { name } = prop.node.key.id;\n      let update: PrivateNameMetadata = privateNamesMap.get(name);\n      if (!update) {\n        const isMethod = !prop.isProperty();\n        const isStatic = prop.node.static;\n        let initAdded = false;\n        let id: t.Identifier;\n        if (\n          !privateFieldsAsSymbolsOrProperties &&\n          (process.env.BABEL_8_BREAKING || newHelpers(file)) &&\n          isMethod &&\n          !isStatic\n        ) {\n          initAdded = !!classBrandId;\n          classBrandId ??= prop.scope.generateUidIdentifier(\n            `${className}_brand`,\n          );\n          id = classBrandId;\n        } else {\n          id = prop.scope.generateUidIdentifier(name);\n        }\n        update = { id, static: isStatic, method: isMethod, initAdded };\n        privateNamesMap.set(name, update);\n      }\n      if (prop.isClassPrivateMethod()) {\n        if (prop.node.kind === \"get\") {\n          const { body } = prop.node.body;\n          let $: t.Node;\n          if (\n            // If we have\n            //   get #foo() { return _some_fn(this); }\n            // we can use _some_fn directly.\n            body.length === 1 &&\n            t.isReturnStatement(($ = body[0])) &&\n            t.isCallExpression(($ = $.argument)) &&\n            $.arguments.length === 1 &&\n            t.isThisExpression($.arguments[0]) &&\n            t.isIdentifier(($ = $.callee))\n          ) {\n            update.getId = t.cloneNode($);\n            update.getterDeclared = true;\n          } else {\n            update.getId = prop.scope.generateUidIdentifier(`get_${name}`);\n          }\n        } else if (prop.node.kind === \"set\") {\n          const { params } = prop.node;\n          const { body } = prop.node.body;\n          let $: t.Node;\n          if (\n            // If we have\n            //   set #foo(val) { _some_fn(this, val); }\n            // we can use _some_fn directly.\n            body.length === 1 &&\n            t.isExpressionStatement(($ = body[0])) &&\n            t.isCallExpression(($ = $.expression)) &&\n            $.arguments.length === 2 &&\n            t.isThisExpression($.arguments[0]) &&\n            t.isIdentifier($.arguments[1], {\n              name: (params[0] as t.Identifier).name,\n            }) &&\n            t.isIdentifier(($ = $.callee))\n          ) {\n            update.setId = t.cloneNode($);\n            update.setterDeclared = true;\n          } else {\n            update.setId = prop.scope.generateUidIdentifier(`set_${name}`);\n          }\n        } else if (prop.node.kind === \"method\") {\n          update.methodId = prop.scope.generateUidIdentifier(name);\n        }\n      }\n      privateNamesMap.set(name, update);\n    }\n  }\n  return privateNamesMap;\n}\n\nexport function buildPrivateNamesNodes(\n  privateNamesMap: PrivateNamesMap,\n  privateFieldsAsProperties: boolean,\n  privateFieldsAsSymbols: boolean,\n  state: File,\n) {\n  const initNodes: t.Statement[] = [];\n\n  const injectedIds = new Set<string>();\n\n  for (const [name, value] of privateNamesMap) {\n    // - When the privateFieldsAsProperties assumption is enabled,\n    //   both static and instance fields are transpiled using a\n    //   secret non-enumerable property. Hence, we also need to generate that\n    //   key (using the classPrivateFieldLooseKey helper).\n    // - When the privateFieldsAsSymbols assumption is enabled,\n    //   both static and instance fields are transpiled using a\n    //   unique Symbol to define a non-enumerable property.\n    // - In spec mode, only instance fields need a \"private name\" initializer\n    //   because static fields are directly assigned to a variable in the\n    //   buildPrivateStaticFieldInitSpec function.\n    const { static: isStatic, method: isMethod, getId, setId } = value;\n    const isGetterOrSetter = getId || setId;\n    const id = t.cloneNode(value.id);\n\n    let init: t.Expression;\n\n    if (privateFieldsAsProperties) {\n      init = t.callExpression(state.addHelper(\"classPrivateFieldLooseKey\"), [\n        t.stringLiteral(name),\n      ]);\n    } else if (privateFieldsAsSymbols) {\n      init = t.callExpression(t.identifier(\"Symbol\"), [t.stringLiteral(name)]);\n    } else if (!isStatic) {\n      if (injectedIds.has(id.name)) continue;\n      injectedIds.add(id.name);\n\n      init = t.newExpression(\n        t.identifier(\n          isMethod &&\n            (process.env.BABEL_8_BREAKING ||\n              !isGetterOrSetter ||\n              newHelpers(state))\n            ? \"WeakSet\"\n            : \"WeakMap\",\n        ),\n        [],\n      );\n    }\n\n    if (init) {\n      if (!privateFieldsAsSymbols) {\n        annotateAsPure(init);\n      }\n      initNodes.push(template.statement.ast`var ${id} = ${init}`);\n    }\n  }\n\n  return initNodes;\n}\n\nexport interface PrivateNameVisitorState<V> {\n  privateNamesMap: PrivateNamesMapGeneric<V>;\n  redeclared?: string[];\n}\n\n// Traverses the class scope, handling private name references. If an inner\n// class redeclares the same private name, it will hand off traversal to the\n// restricted visitor (which doesn't traverse the inner class's inner scope).\nexport function privateNameVisitorFactory<S, V>(\n  visitor: Visitor<PrivateNameVisitorState<V & PrivateNameMetadata> & S>,\n) {\n  // Traverses the outer portion of a class, without touching the class's inner\n  // scope, for private names.\n  const nestedVisitor = visitors.environmentVisitor({ ...visitor });\n\n  const privateNameVisitor: Visitor<\n    PrivateNameVisitorState<V & PrivateNameMetadata> & S\n  > = {\n    ...visitor,\n\n    Class(path) {\n      const { privateNamesMap } = this;\n      const body = path.get(\"body.body\");\n\n      const visiblePrivateNames = new Map(privateNamesMap);\n      const redeclared = [];\n      for (const prop of body) {\n        if (!prop.isPrivate()) continue;\n        const { name } = prop.node.key.id;\n        visiblePrivateNames.delete(name);\n        redeclared.push(name);\n      }\n\n      // If the class doesn't redeclare any private fields, we can continue with\n      // our overall traversal.\n      if (!redeclared.length) {\n        return;\n      }\n\n      // This class redeclares some private field. We need to process the outer\n      // environment with access to all the outer privates, then we can process\n      // the inner environment with only the still-visible outer privates.\n      path.get(\"body\").traverse(nestedVisitor, {\n        ...this,\n        redeclared,\n      });\n      path.traverse(privateNameVisitor, {\n        ...this,\n        privateNamesMap: visiblePrivateNames,\n      });\n\n      // We'll eventually hit this class node again with the overall Class\n      // Features visitor, which'll process the redeclared privates.\n      path.skipKey(\"body\");\n    },\n  };\n\n  return privateNameVisitor;\n}\n\ninterface PrivateNameState {\n  privateNamesMap: PrivateNamesMap;\n  classRef: t.Identifier;\n  file: File;\n  noDocumentAll: boolean;\n  noUninitializedPrivateFieldAccess: boolean;\n  innerBinding?: t.Identifier;\n}\n\nconst privateNameVisitor = privateNameVisitorFactory<\n  HandlerState<PrivateNameState> & PrivateNameState,\n  PrivateNameMetadata\n>({\n  PrivateName(path, { noDocumentAll }) {\n    const { privateNamesMap, redeclared } = this;\n    const { node, parentPath } = path;\n\n    if (\n      !parentPath.isMemberExpression({ property: node }) &&\n      !parentPath.isOptionalMemberExpression({ property: node })\n    ) {\n      return;\n    }\n    const { name } = node.id;\n    if (!privateNamesMap.has(name)) return;\n    if (redeclared?.includes(name)) return;\n\n    this.handle(parentPath, noDocumentAll);\n  },\n});\n\n// rename all bindings that shadows innerBinding\nfunction unshadow(\n  name: string,\n  scope: Scope,\n  innerBinding: t.Identifier | undefined,\n) {\n  // in some cases, scope.getBinding(name) === undefined\n  // so we check hasBinding to avoid keeping looping\n  // see: https://github.com/babel/babel/pull/13656#discussion_r686030715\n  while (\n    scope?.hasBinding(name) &&\n    !scope.bindingIdentifierEquals(name, innerBinding)\n  ) {\n    scope.rename(name);\n    scope = scope.parent;\n  }\n}\n\nexport function buildCheckInRHS(\n  rhs: t.Expression,\n  file: File,\n  inRHSIsObject?: boolean,\n) {\n  if (inRHSIsObject || !file.availableHelper?.(\"checkInRHS\")) return rhs;\n  return t.callExpression(file.addHelper(\"checkInRHS\"), [rhs]);\n}\n\nconst privateInVisitor = privateNameVisitorFactory<\n  {\n    classRef: t.Identifier;\n    file: File;\n    innerBinding?: t.Identifier;\n    privateFieldsAsProperties: boolean;\n  },\n  PrivateNameMetadata\n>({\n  BinaryExpression(path, { file }) {\n    const { operator, left, right } = path.node;\n    if (operator !== \"in\") return;\n    if (!t.isPrivateName(left)) return;\n\n    const { privateFieldsAsProperties, privateNamesMap, redeclared } = this;\n\n    const { name } = left.id;\n\n    if (!privateNamesMap.has(name)) return;\n    if (redeclared?.includes(name)) return;\n\n    // if there are any local variable shadowing classRef, unshadow it\n    // see #12960\n    unshadow(this.classRef.name, path.scope, this.innerBinding);\n\n    if (privateFieldsAsProperties) {\n      const { id } = privateNamesMap.get(name);\n      path.replaceWith(template.expression.ast`\n        Object.prototype.hasOwnProperty.call(${buildCheckInRHS(\n          right,\n          file,\n        )}, ${t.cloneNode(id)})\n      `);\n      return;\n    }\n\n    const { id, static: isStatic } = privateNamesMap.get(name);\n\n    if (isStatic) {\n      path.replaceWith(\n        template.expression.ast`${buildCheckInRHS(\n          right,\n          file,\n        )} === ${t.cloneNode(this.classRef)}`,\n      );\n      return;\n    }\n\n    path.replaceWith(\n      template.expression.ast`${t.cloneNode(id)}.has(${buildCheckInRHS(\n        right,\n        file,\n      )})`,\n    );\n  },\n});\n\ninterface Receiver {\n  receiver(\n    this: HandlerState<PrivateNameState> & PrivateNameState,\n    member: NodePath<t.MemberExpression | t.OptionalMemberExpression>,\n  ): t.Expression;\n}\n\nfunction readOnlyError(file: File, name: string) {\n  return t.callExpression(file.addHelper(\"readOnlyError\"), [\n    t.stringLiteral(`#${name}`),\n  ]);\n}\n\nfunction writeOnlyError(file: File, name: string) {\n  if (\n    !process.env.BABEL_8_BREAKING &&\n    !file.availableHelper(\"writeOnlyError\")\n  ) {\n    console.warn(\n      `@babel/helpers is outdated, update it to silence this warning.`,\n    );\n    return t.buildUndefinedNode();\n  }\n  return t.callExpression(file.addHelper(\"writeOnlyError\"), [\n    t.stringLiteral(`#${name}`),\n  ]);\n}\n\nfunction buildStaticPrivateFieldAccess<N extends t.Expression>(\n  expr: N,\n  noUninitializedPrivateFieldAccess: boolean,\n) {\n  if (noUninitializedPrivateFieldAccess) return expr;\n  return t.memberExpression(expr, t.identifier(\"_\"));\n}\n\nfunction autoInherits<\n  Member extends { node: t.Node },\n  Result extends t.Node,\n  Fn extends (member: Member, ...args: unknown[]) => Result,\n>(fn: Fn): Fn {\n  return function (this: ThisParameterType<Fn>, member) {\n    return t.inherits(fn.apply(this, arguments as any), member.node);\n  } as Fn;\n}\n\nconst privateNameHandlerSpec: Handler<PrivateNameState & Receiver> & Receiver =\n  {\n    memoise(member, count) {\n      const { scope } = member;\n      const { object } = member.node as { object: t.Expression };\n\n      const memo = scope.maybeGenerateMemoised(object);\n      if (!memo) {\n        return;\n      }\n\n      this.memoiser.set(object, memo, count);\n    },\n\n    receiver(member) {\n      const { object } = member.node as { object: t.Expression };\n\n      if (this.memoiser.has(object)) {\n        return t.cloneNode(this.memoiser.get(object));\n      }\n\n      return t.cloneNode(object);\n    },\n\n    get: autoInherits(function (member) {\n      const {\n        classRef,\n        privateNamesMap,\n        file,\n        innerBinding,\n        noUninitializedPrivateFieldAccess,\n      } = this;\n      const privateName = member.node.property as t.PrivateName;\n      const { name } = privateName.id;\n      const {\n        id,\n        static: isStatic,\n        method: isMethod,\n        methodId,\n        getId,\n        setId,\n      } = privateNamesMap.get(name);\n      const isGetterOrSetter = getId || setId;\n\n      const cloneId = (id: t.Identifier) =>\n        t.inherits(t.cloneNode(id), privateName);\n\n      if (isStatic) {\n        // if there are any local variable shadowing classRef, unshadow it\n        // see #12960\n        unshadow(classRef.name, member.scope, innerBinding);\n\n        if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n          // NOTE: This package has a peerDependency on @babel/core@^7.0.0, but these\n          // helpers have been introduced in @babel/helpers@7.1.0.\n          const helperName =\n            isMethod && !isGetterOrSetter\n              ? \"classStaticPrivateMethodGet\"\n              : \"classStaticPrivateFieldSpecGet\";\n\n          return t.callExpression(file.addHelper(helperName), [\n            this.receiver(member),\n            t.cloneNode(classRef),\n            cloneId(id),\n          ]);\n        }\n\n        const receiver = this.receiver(member);\n        const skipCheck =\n          t.isIdentifier(receiver) && receiver.name === classRef.name;\n\n        if (!isMethod) {\n          if (skipCheck) {\n            return buildStaticPrivateFieldAccess(\n              cloneId(id),\n              noUninitializedPrivateFieldAccess,\n            );\n          }\n\n          return buildStaticPrivateFieldAccess(\n            t.callExpression(file.addHelper(\"assertClassBrand\"), [\n              t.cloneNode(classRef),\n              receiver,\n              cloneId(id),\n            ]),\n            noUninitializedPrivateFieldAccess,\n          );\n        }\n\n        if (getId) {\n          if (skipCheck) {\n            return t.callExpression(cloneId(getId), [receiver]);\n          }\n          return t.callExpression(file.addHelper(\"classPrivateGetter\"), [\n            t.cloneNode(classRef),\n            receiver,\n            cloneId(getId),\n          ]);\n        }\n\n        if (setId) {\n          const err = t.buildUndefinedNode(); // TODO: writeOnlyError(file, name)\n          if (skipCheck) return err;\n          return t.sequenceExpression([\n            t.callExpression(file.addHelper(\"assertClassBrand\"), [\n              t.cloneNode(classRef),\n              receiver,\n            ]),\n            err,\n          ]);\n        }\n\n        if (skipCheck) return cloneId(id);\n        return t.callExpression(file.addHelper(\"assertClassBrand\"), [\n          t.cloneNode(classRef),\n          receiver,\n          cloneId(id),\n        ]);\n      }\n\n      if (isMethod) {\n        if (isGetterOrSetter) {\n          if (!getId) {\n            return t.sequenceExpression([\n              this.receiver(member),\n              writeOnlyError(file, name),\n            ]);\n          }\n          if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n            return t.callExpression(file.addHelper(\"classPrivateFieldGet\"), [\n              this.receiver(member),\n              cloneId(id),\n            ]);\n          }\n          return t.callExpression(file.addHelper(\"classPrivateGetter\"), [\n            t.cloneNode(id),\n            this.receiver(member),\n            cloneId(getId),\n          ]);\n        }\n        if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n          return t.callExpression(file.addHelper(\"classPrivateMethodGet\"), [\n            this.receiver(member),\n            t.cloneNode(id),\n            cloneId(methodId),\n          ]);\n        }\n        return t.callExpression(file.addHelper(\"assertClassBrand\"), [\n          t.cloneNode(id),\n          this.receiver(member),\n          cloneId(methodId),\n        ]);\n      }\n      if (process.env.BABEL_8_BREAKING || newHelpers(file)) {\n        return t.callExpression(file.addHelper(\"classPrivateFieldGet2\"), [\n          cloneId(id),\n          this.receiver(member),\n        ]);\n      }\n\n      return t.callExpression(file.addHelper(\"classPrivateFieldGet\"), [\n        this.receiver(member),\n        cloneId(id),\n      ]);\n    }),\n\n    boundGet(member) {\n      this.memoise(member, 1);\n\n      return t.callExpression(\n        t.memberExpression(this.get(member), t.identifier(\"bind\")),\n        [this.receiver(member)],\n      );\n    },\n\n    set: autoInherits(function (member, value) {\n      const {\n        classRef,\n        privateNamesMap,\n        file,\n        noUninitializedPrivateFieldAccess,\n      } = this;\n      const privateName = member.node.property as t.PrivateName;\n      const { name } = privateName.id;\n      const {\n        id,\n        static: isStatic,\n        method: isMethod,\n        setId,\n        getId,\n      } = privateNamesMap.get(name);\n      const isGetterOrSetter = getId || setId;\n\n      const cloneId = (id: t.Identifier) =>\n        t.inherits(t.cloneNode(id), privateName);\n\n      if (isStatic) {\n        if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n          const helperName =\n            isMethod && !isGetterOrSetter\n              ? \"classStaticPrivateMethodSet\"\n              : \"classStaticPrivateFieldSpecSet\";\n\n          return t.callExpression(file.addHelper(helperName), [\n            this.receiver(member),\n            t.cloneNode(classRef),\n            cloneId(id),\n            value,\n          ]);\n        }\n\n        const receiver = this.receiver(member);\n        const skipCheck =\n          t.isIdentifier(receiver) && receiver.name === classRef.name;\n\n        if (isMethod && !setId) {\n          const err = readOnlyError(file, name);\n          if (skipCheck) return t.sequenceExpression([value, err]);\n          return t.sequenceExpression([\n            value,\n            t.callExpression(file.addHelper(\"assertClassBrand\"), [\n              t.cloneNode(classRef),\n              receiver,\n            ]),\n            readOnlyError(file, name),\n          ]);\n        }\n\n        if (setId) {\n          if (skipCheck) {\n            return t.callExpression(t.cloneNode(setId), [receiver, value]);\n          }\n          return t.callExpression(file.addHelper(\"classPrivateSetter\"), [\n            t.cloneNode(classRef),\n            cloneId(setId),\n            receiver,\n            value,\n          ]);\n        }\n        return t.assignmentExpression(\n          \"=\",\n          buildStaticPrivateFieldAccess(\n            cloneId(id),\n            noUninitializedPrivateFieldAccess,\n          ),\n          skipCheck\n            ? value\n            : t.callExpression(file.addHelper(\"assertClassBrand\"), [\n                t.cloneNode(classRef),\n                receiver,\n                value,\n              ]),\n        );\n      }\n      if (isMethod) {\n        if (setId) {\n          if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n            return t.callExpression(file.addHelper(\"classPrivateFieldSet\"), [\n              this.receiver(member),\n              cloneId(id),\n              value,\n            ]);\n          }\n          return t.callExpression(file.addHelper(\"classPrivateSetter\"), [\n            t.cloneNode(id),\n            cloneId(setId),\n            this.receiver(member),\n            value,\n          ]);\n        }\n        return t.sequenceExpression([\n          this.receiver(member),\n          value,\n          readOnlyError(file, name),\n        ]);\n      }\n\n      if (process.env.BABEL_8_BREAKING || newHelpers(file)) {\n        return t.callExpression(file.addHelper(\"classPrivateFieldSet2\"), [\n          cloneId(id),\n          this.receiver(member),\n          value,\n        ]);\n      }\n\n      return t.callExpression(file.addHelper(\"classPrivateFieldSet\"), [\n        this.receiver(member),\n        cloneId(id),\n        value,\n      ]);\n    }),\n\n    destructureSet(member) {\n      const {\n        classRef,\n        privateNamesMap,\n        file,\n        noUninitializedPrivateFieldAccess,\n      } = this;\n      const privateName = member.node.property as t.PrivateName;\n      const { name } = privateName.id;\n      const {\n        id,\n        static: isStatic,\n        method: isMethod,\n        setId,\n      } = privateNamesMap.get(name);\n\n      const cloneId = (id: t.Identifier) =>\n        t.inherits(t.cloneNode(id), privateName);\n\n      if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n        if (isStatic) {\n          try {\n            // classStaticPrivateFieldDestructureSet was introduced in 7.13.10\n            // eslint-disable-next-line no-var\n            var helper = file.addHelper(\n              \"classStaticPrivateFieldDestructureSet\",\n            );\n          } catch {\n            throw new Error(\n              \"Babel can not transpile `[C.#p] = [0]` with @babel/helpers < 7.13.10, \\n\" +\n                \"please update @babel/helpers to the latest version.\",\n            );\n          }\n          return t.memberExpression(\n            t.callExpression(helper, [\n              this.receiver(member),\n              t.cloneNode(classRef),\n              cloneId(id),\n            ]),\n            t.identifier(\"value\"),\n          );\n        }\n\n        return t.memberExpression(\n          t.callExpression(file.addHelper(\"classPrivateFieldDestructureSet\"), [\n            this.receiver(member),\n            cloneId(id),\n          ]),\n          t.identifier(\"value\"),\n        );\n      }\n\n      if (isMethod && !setId) {\n        return t.memberExpression(\n          t.sequenceExpression([\n            // @ts-ignore(Babel 7 vs Babel 8) member.node.object is not t.Super\n            member.node.object,\n            readOnlyError(file, name),\n          ]),\n          t.identifier(\"_\"),\n        );\n      }\n\n      if (isStatic && !isMethod) {\n        const getCall = this.get(member);\n        if (\n          !noUninitializedPrivateFieldAccess ||\n          !t.isCallExpression(getCall)\n        ) {\n          return getCall;\n        }\n        const ref = getCall.arguments.pop();\n        getCall.arguments.push(template.expression.ast`(_) => ${ref} = _`);\n        return t.memberExpression(\n          t.callExpression(file.addHelper(\"toSetter\"), [getCall]),\n          t.identifier(\"_\"),\n        );\n      }\n\n      const setCall = this.set(member, t.identifier(\"_\"));\n      if (\n        !t.isCallExpression(setCall) ||\n        !t.isIdentifier(setCall.arguments[setCall.arguments.length - 1], {\n          name: \"_\",\n        })\n      ) {\n        throw member.buildCodeFrameError(\n          \"Internal Babel error while compiling this code. This is a Babel bug. \" +\n            \"Please report it at https://github.com/babel/babel/issues.\",\n        );\n      }\n\n      // someHelper(foo, bar, _) -> someHelper, [foo, bar]\n      // aFn.call(foo, bar, _) -> aFn, [bar], foo\n      let args: t.Expression[];\n      if (\n        t.isMemberExpression(setCall.callee, { computed: false }) &&\n        t.isIdentifier(setCall.callee.property) &&\n        setCall.callee.property.name === \"call\"\n      ) {\n        args = [\n          // @ts-ignore(Babel 7 vs Babel 8) member.node.object is not t.Super\n          setCall.callee.object,\n          t.arrayExpression(\n            // Remove '_'\n            (setCall.arguments as t.Expression[]).slice(1, -1),\n          ),\n          setCall.arguments[0] as t.Expression,\n        ];\n      } else {\n        args = [\n          setCall.callee as t.Expression,\n          t.arrayExpression(\n            // Remove '_'\n            (setCall.arguments as t.Expression[]).slice(0, -1),\n          ),\n        ];\n      }\n\n      return t.memberExpression(\n        t.callExpression(file.addHelper(\"toSetter\"), args),\n        t.identifier(\"_\"),\n      );\n    },\n\n    call(member, args: (t.Expression | t.SpreadElement)[]) {\n      // The first access (the get) should do the memo assignment.\n      this.memoise(member, 1);\n\n      return optimiseCall(this.get(member), this.receiver(member), args, false);\n    },\n\n    optionalCall(member, args: (t.Expression | t.SpreadElement)[]) {\n      this.memoise(member, 1);\n\n      return optimiseCall(this.get(member), this.receiver(member), args, true);\n    },\n\n    delete() {\n      throw new Error(\n        \"Internal Babel error: deleting private elements is a parsing error.\",\n      );\n    },\n  };\n\nconst privateNameHandlerLoose: Handler<PrivateNameState> = {\n  get(member) {\n    const { privateNamesMap, file } = this;\n    const { object } = member.node;\n    const { name } = (member.node.property as t.PrivateName).id;\n\n    return template.expression`BASE(REF, PROP)[PROP]`({\n      BASE: file.addHelper(\"classPrivateFieldLooseBase\"),\n      REF: t.cloneNode(object),\n      PROP: t.cloneNode(privateNamesMap.get(name).id),\n    });\n  },\n\n  set() {\n    // noop\n    throw new Error(\"private name handler with loose = true don't need set()\");\n  },\n\n  boundGet(member) {\n    return t.callExpression(\n      t.memberExpression(this.get(member), t.identifier(\"bind\")),\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n      [t.cloneNode(member.node.object as t.Expression)],\n    );\n  },\n\n  simpleSet(member) {\n    return this.get(member);\n  },\n\n  destructureSet(member) {\n    return this.get(member);\n  },\n\n  call(member, args) {\n    return t.callExpression(this.get(member), args);\n  },\n\n  optionalCall(member, args) {\n    return t.optionalCallExpression(this.get(member), args, true);\n  },\n\n  delete() {\n    throw new Error(\n      \"Internal Babel error: deleting private elements is a parsing error.\",\n    );\n  },\n};\n\nexport function transformPrivateNamesUsage(\n  ref: t.Identifier,\n  path: NodePath<t.Class>,\n  privateNamesMap: PrivateNamesMap,\n  {\n    privateFieldsAsProperties,\n    noUninitializedPrivateFieldAccess,\n    noDocumentAll,\n    innerBinding,\n  }: {\n    privateFieldsAsProperties: boolean;\n    noUninitializedPrivateFieldAccess: boolean;\n    noDocumentAll: boolean;\n    innerBinding: t.Identifier;\n  },\n  state: File,\n) {\n  if (!privateNamesMap.size) return;\n\n  const body = path.get(\"body\");\n  const handler = privateFieldsAsProperties\n    ? privateNameHandlerLoose\n    : privateNameHandlerSpec;\n\n  memberExpressionToFunctions<PrivateNameState>(body, privateNameVisitor, {\n    privateNamesMap,\n    classRef: ref,\n    file: state,\n    ...handler,\n    noDocumentAll,\n    noUninitializedPrivateFieldAccess,\n    innerBinding,\n  });\n  body.traverse(privateInVisitor, {\n    privateNamesMap,\n    classRef: ref,\n    file: state,\n    privateFieldsAsProperties,\n    innerBinding,\n  });\n}\n\nfunction buildPrivateFieldInitLoose(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateProperty>,\n  privateNamesMap: PrivateNamesMap,\n) {\n  const { id } = privateNamesMap.get(prop.node.key.id.name);\n  const value = prop.node.value || prop.scope.buildUndefinedNode();\n\n  return inheritPropComments(\n    template.statement.ast`\n      Object.defineProperty(${ref}, ${t.cloneNode(id)}, {\n        // configurable is false by default\n        // enumerable is false by default\n        writable: true,\n        value: ${value}\n      });\n    ` as t.ExpressionStatement,\n    prop,\n  );\n}\n\nfunction buildPrivateInstanceFieldInitSpec(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateProperty>,\n  privateNamesMap: PrivateNamesMap,\n  state: File,\n) {\n  const { id } = privateNamesMap.get(prop.node.key.id.name);\n  const value = prop.node.value || prop.scope.buildUndefinedNode();\n\n  if (!process.env.BABEL_8_BREAKING) {\n    if (!state.availableHelper(\"classPrivateFieldInitSpec\")) {\n      return inheritPropComments(\n        template.statement.ast`${t.cloneNode(id)}.set(${ref}, {\n          // configurable is always false for private elements\n          // enumerable is always false for private elements\n          writable: true,\n          value: ${value},\n        })` as t.ExpressionStatement,\n        prop,\n      );\n    }\n  }\n\n  const helper = state.addHelper(\"classPrivateFieldInitSpec\");\n  return inheritLoc(\n    inheritPropComments(\n      t.expressionStatement(\n        t.callExpression(helper, [\n          t.thisExpression(),\n          inheritLoc(t.cloneNode(id), prop.node.key),\n          process.env.BABEL_8_BREAKING || newHelpers(state)\n            ? value\n            : template.expression.ast`{ writable: true, value: ${value} }`,\n        ]),\n      ),\n      prop,\n    ),\n    prop.node,\n  );\n}\n\nfunction buildPrivateStaticFieldInitSpec(\n  prop: NodePath<t.ClassPrivateProperty>,\n  privateNamesMap: PrivateNamesMap,\n  noUninitializedPrivateFieldAccess: boolean,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n\n  const value = noUninitializedPrivateFieldAccess\n    ? prop.node.value\n    : template.expression.ast`{\n        _: ${prop.node.value || t.buildUndefinedNode()}\n      }`;\n\n  return inheritPropComments(\n    t.variableDeclaration(\"var\", [\n      t.variableDeclarator(t.cloneNode(privateName.id), value),\n    ]),\n    prop,\n  );\n}\n\nif (!process.env.BABEL_8_BREAKING) {\n  // eslint-disable-next-line no-var\n  var buildPrivateStaticFieldInitSpecOld = function (\n    prop: NodePath<t.ClassPrivateProperty>,\n    privateNamesMap: PrivateNamesMap,\n  ) {\n    const privateName = privateNamesMap.get(prop.node.key.id.name);\n    const { id, getId, setId, initAdded } = privateName;\n    const isGetterOrSetter = getId || setId;\n\n    if (!prop.isProperty() && (initAdded || !isGetterOrSetter)) return;\n\n    if (isGetterOrSetter) {\n      privateNamesMap.set(prop.node.key.id.name, {\n        ...privateName,\n        initAdded: true,\n      });\n\n      return inheritPropComments(\n        template.statement.ast`\n          var ${t.cloneNode(id)} = {\n            // configurable is false by default\n            // enumerable is false by default\n            // writable is false by default\n            get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n            set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n          }\n        `,\n        prop,\n      );\n    }\n\n    const value = prop.node.value || prop.scope.buildUndefinedNode();\n    return inheritPropComments(\n      template.statement.ast`\n        var ${t.cloneNode(id)} = {\n          // configurable is false by default\n          // enumerable is false by default\n          writable: true,\n          value: ${value}\n        };\n      `,\n      prop,\n    );\n  };\n}\n\nfunction buildPrivateMethodInitLoose(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateMethod>,\n  privateNamesMap: PrivateNamesMap,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n  const { methodId, id, getId, setId, initAdded } = privateName;\n  if (initAdded) return;\n\n  if (methodId) {\n    return inheritPropComments(\n      template.statement.ast`\n        Object.defineProperty(${ref}, ${id}, {\n          // configurable is false by default\n          // enumerable is false by default\n          // writable is false by default\n          value: ${methodId.name}\n        });\n      ` as t.ExpressionStatement,\n      prop,\n    );\n  }\n  const isGetterOrSetter = getId || setId;\n  if (isGetterOrSetter) {\n    privateNamesMap.set(prop.node.key.id.name, {\n      ...privateName,\n      initAdded: true,\n    });\n\n    return inheritPropComments(\n      template.statement.ast`\n        Object.defineProperty(${ref}, ${id}, {\n          // configurable is false by default\n          // enumerable is false by default\n          // writable is false by default\n          get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n          set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n        });\n      ` as t.ExpressionStatement,\n      prop,\n    );\n  }\n}\n\nfunction buildPrivateInstanceMethodInitSpec(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateMethod>,\n  privateNamesMap: PrivateNamesMap,\n  state: File,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n\n  if (privateName.initAdded) return;\n\n  if (!process.env.BABEL_8_BREAKING && !newHelpers(state)) {\n    const isGetterOrSetter = privateName.getId || privateName.setId;\n    if (isGetterOrSetter) {\n      return buildPrivateAccessorInitialization(\n        ref,\n        prop,\n        privateNamesMap,\n        state,\n      );\n    }\n  }\n\n  return buildPrivateInstanceMethodInitialization(\n    ref,\n    prop,\n    privateNamesMap,\n    state,\n  );\n}\n\nfunction buildPrivateAccessorInitialization(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateMethod>,\n  privateNamesMap: PrivateNamesMap,\n  state: File,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n  const { id, getId, setId } = privateName;\n\n  privateNamesMap.set(prop.node.key.id.name, {\n    ...privateName,\n    initAdded: true,\n  });\n\n  if (!process.env.BABEL_8_BREAKING) {\n    if (!state.availableHelper(\"classPrivateFieldInitSpec\")) {\n      return inheritPropComments(\n        template.statement.ast`\n          ${id}.set(${ref}, {\n            get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n            set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n          });\n        ` as t.ExpressionStatement,\n        prop,\n      );\n    }\n  }\n\n  const helper = state.addHelper(\"classPrivateFieldInitSpec\");\n  return inheritLoc(\n    inheritPropComments(\n      template.statement.ast`${helper}(\n      ${t.thisExpression()},\n      ${t.cloneNode(id)},\n      {\n        get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n        set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n      },\n    )` as t.ExpressionStatement,\n      prop,\n    ),\n    prop.node,\n  );\n}\n\nfunction buildPrivateInstanceMethodInitialization(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateMethod>,\n  privateNamesMap: PrivateNamesMap,\n  state: File,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n  const { id } = privateName;\n\n  if (!process.env.BABEL_8_BREAKING) {\n    if (!state.availableHelper(\"classPrivateMethodInitSpec\")) {\n      return inheritPropComments(\n        template.statement.ast`${id}.add(${ref})` as t.ExpressionStatement,\n        prop,\n      );\n    }\n  }\n\n  const helper = state.addHelper(\"classPrivateMethodInitSpec\");\n  return inheritPropComments(\n    template.statement.ast`${helper}(\n      ${t.thisExpression()},\n      ${t.cloneNode(id)}\n    )` as t.ExpressionStatement,\n    prop,\n  );\n}\n\nfunction buildPublicFieldInitLoose(\n  ref: t.Expression,\n  prop: NodePath<t.ClassProperty>,\n) {\n  const { key, computed } = prop.node;\n  const value = prop.node.value || prop.scope.buildUndefinedNode();\n\n  return inheritPropComments(\n    t.expressionStatement(\n      t.assignmentExpression(\n        \"=\",\n        t.memberExpression(ref, key, computed || t.isLiteral(key)),\n        value,\n      ),\n    ),\n    prop,\n  );\n}\n\nfunction buildPublicFieldInitSpec(\n  ref: t.Expression,\n  prop: NodePath<t.ClassProperty>,\n  state: File,\n) {\n  const { key, computed } = prop.node;\n  const value = prop.node.value || prop.scope.buildUndefinedNode();\n\n  return inheritPropComments(\n    t.expressionStatement(\n      t.callExpression(state.addHelper(\"defineProperty\"), [\n        ref,\n        computed || t.isLiteral(key)\n          ? key\n          : t.stringLiteral((key as t.Identifier).name),\n        value,\n      ]),\n    ),\n    prop,\n  );\n}\n\nfunction buildPrivateStaticMethodInitLoose(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateMethod>,\n  state: File,\n  privateNamesMap: PrivateNamesMap,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n  const { id, methodId, getId, setId, initAdded } = privateName;\n\n  if (initAdded) return;\n\n  const isGetterOrSetter = getId || setId;\n  if (isGetterOrSetter) {\n    privateNamesMap.set(prop.node.key.id.name, {\n      ...privateName,\n      initAdded: true,\n    });\n\n    return inheritPropComments(\n      template.statement.ast`\n        Object.defineProperty(${ref}, ${id}, {\n          // configurable is false by default\n          // enumerable is false by default\n          // writable is false by default\n          get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n          set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n        })\n      `,\n      prop,\n    );\n  }\n\n  return inheritPropComments(\n    template.statement.ast`\n      Object.defineProperty(${ref}, ${id}, {\n        // configurable is false by default\n        // enumerable is false by default\n        // writable is false by default\n        value: ${methodId.name}\n      });\n    `,\n    prop,\n  );\n}\n\nfunction buildPrivateMethodDeclaration(\n  file: File,\n  prop: NodePath<t.ClassPrivateMethod>,\n  privateNamesMap: PrivateNamesMap,\n  privateFieldsAsSymbolsOrProperties = false,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n  const {\n    id,\n    methodId,\n    getId,\n    setId,\n    getterDeclared,\n    setterDeclared,\n    static: isStatic,\n  } = privateName;\n  const { params, body, generator, async } = prop.node;\n  const isGetter = getId && params.length === 0;\n  const isSetter = setId && params.length > 0;\n\n  if ((isGetter && getterDeclared) || (isSetter && setterDeclared)) {\n    privateNamesMap.set(prop.node.key.id.name, {\n      ...privateName,\n      initAdded: true,\n    });\n    return null;\n  }\n\n  if (\n    (process.env.BABEL_8_BREAKING || newHelpers(file)) &&\n    (isGetter || isSetter) &&\n    !privateFieldsAsSymbolsOrProperties\n  ) {\n    const scope = prop.get(\"body\").scope;\n    const thisArg = scope.generateUidIdentifier(\"this\");\n    const state: ReplaceThisState = {\n      thisRef: thisArg,\n      argumentsPath: [],\n    };\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    prop.traverse(thisContextVisitor, state);\n    if (state.argumentsPath.length) {\n      const argumentsId = scope.generateUidIdentifier(\"arguments\");\n      scope.push({\n        id: argumentsId,\n        init: template.expression.ast`[].slice.call(arguments, 1)`,\n      });\n      for (const path of state.argumentsPath) {\n        path.replaceWith(t.cloneNode(argumentsId));\n      }\n    }\n\n    params.unshift(t.cloneNode(thisArg));\n  }\n\n  let declId = methodId;\n\n  if (isGetter) {\n    privateNamesMap.set(prop.node.key.id.name, {\n      ...privateName,\n      getterDeclared: true,\n      initAdded: true,\n    });\n    declId = getId;\n  } else if (isSetter) {\n    privateNamesMap.set(prop.node.key.id.name, {\n      ...privateName,\n      setterDeclared: true,\n      initAdded: true,\n    });\n    declId = setId;\n  } else if (isStatic && !privateFieldsAsSymbolsOrProperties) {\n    declId = id;\n  }\n\n  return inheritPropComments(\n    t.functionDeclaration(\n      t.cloneNode(declId),\n      // @ts-expect-error params for ClassMethod has TSParameterProperty\n      params,\n      body,\n      generator,\n      async,\n    ),\n    prop,\n  );\n}\n\ntype ReplaceThisState = {\n  thisRef: t.Identifier;\n  needsClassRef?: boolean;\n  innerBinding?: t.Identifier | null;\n  argumentsPath?: NodePath<t.Identifier>[];\n};\n\ntype ReplaceInnerBindingReferenceState = ReplaceThisState;\n\nconst thisContextVisitor = visitors.environmentVisitor<ReplaceThisState>({\n  Identifier(path, state) {\n    if (state.argumentsPath && path.node.name === \"arguments\") {\n      state.argumentsPath.push(path);\n    }\n  },\n  UnaryExpression(path) {\n    // Replace `delete this` with `true`\n    const { node } = path;\n    if (node.operator === \"delete\") {\n      const argument = skipTransparentExprWrapperNodes(node.argument);\n      if (t.isThisExpression(argument)) {\n        path.replaceWith(t.booleanLiteral(true));\n      }\n    }\n  },\n  ThisExpression(path, state) {\n    state.needsClassRef = true;\n    path.replaceWith(t.cloneNode(state.thisRef));\n  },\n  MetaProperty(path) {\n    const { node, scope } = path;\n    // if there are `new.target` in static field\n    // we should replace it with `undefined`\n    if (node.meta.name === \"new\" && node.property.name === \"target\") {\n      path.replaceWith(scope.buildUndefinedNode());\n    }\n  },\n});\n\nconst innerReferencesVisitor: Visitor<ReplaceInnerBindingReferenceState> = {\n  ReferencedIdentifier(path, state) {\n    if (\n      path.scope.bindingIdentifierEquals(path.node.name, state.innerBinding)\n    ) {\n      state.needsClassRef = true;\n      path.node.name = state.thisRef.name;\n    }\n  },\n};\n\nfunction replaceThisContext(\n  path: PropPath,\n  ref: t.Identifier,\n  innerBindingRef: t.Identifier | null,\n) {\n  const state: ReplaceThisState = {\n    thisRef: ref,\n    needsClassRef: false,\n    innerBinding: innerBindingRef,\n  };\n  if (!path.isMethod()) {\n    // replace `this` in property initializers and static blocks\n    path.traverse(thisContextVisitor, state);\n  }\n\n  // todo: use innerBinding.referencePaths to avoid full traversal\n  if (\n    innerBindingRef != null &&\n    state.thisRef?.name &&\n    state.thisRef.name !== innerBindingRef.name\n  ) {\n    path.traverse(innerReferencesVisitor, state);\n  }\n\n  return state.needsClassRef;\n}\n\nexport type PropNode =\n  | t.ClassProperty\n  | t.ClassPrivateMethod\n  | t.ClassPrivateProperty\n  | t.StaticBlock;\nexport type PropPath = NodePath<PropNode>;\n\nfunction isNameOrLength({ key, computed }: t.ClassProperty) {\n  if (key.type === \"Identifier\") {\n    return !computed && (key.name === \"name\" || key.name === \"length\");\n  }\n  if (key.type === \"StringLiteral\") {\n    return key.value === \"name\" || key.value === \"length\";\n  }\n  return false;\n}\n\n/**\n * Inherit comments from class members. This is a reduced version of\n * t.inheritsComments: the trailing comments are not inherited because\n * for most class members except the last one, their trailing comments are\n * the next sibling's leading comments.\n *\n * @template T transformed class member type\n * @param {T} node transformed class member\n * @param {PropPath} prop class member\n * @returns transformed class member type with comments inherited\n */\nfunction inheritPropComments<T extends t.Node>(node: T, prop: PropPath) {\n  t.inheritLeadingComments(node, prop.node);\n  t.inheritInnerComments(node, prop.node);\n  return node;\n}\n\nfunction inheritLoc<T extends t.Node>(node: T, original: t.Node) {\n  node.start = original.start;\n  node.end = original.end;\n  node.loc = original.loc;\n  return node;\n}\n\n/**\n * ClassRefFlag records the requirement of the class binding reference.\n *\n * @enum {number}\n */\nconst enum ClassRefFlag {\n  None,\n  /**\n   * When this flag is enabled, the binding reference can be the class id,\n   * if exists, or the uid identifier generated for class expression. The\n   * reference is safe to be consumed by [[Define]].\n   */\n  ForDefine = 1 << 0,\n  /**\n   * When this flag is enabled, the reference must be a uid, because the outer\n   * class binding can be mutated by user codes.\n   * E.g.\n   * class C { static p = C }; const oldC = C; C = null; oldC.p;\n   * we must memoize class `C` before defining the property `p`.\n   */\n  ForInnerBinding = 1 << 1,\n}\n\nexport function buildFieldsInitNodes(\n  ref: t.Identifier | null,\n  superRef: t.Expression | undefined,\n  props: PropPath[],\n  privateNamesMap: PrivateNamesMap,\n  file: File,\n  setPublicClassFields: boolean,\n  privateFieldsAsSymbolsOrProperties: boolean,\n  noUninitializedPrivateFieldAccess: boolean,\n  constantSuper: boolean,\n  innerBindingRef: t.Identifier | null,\n) {\n  let classRefFlags = ClassRefFlag.None;\n  let injectSuperRef: t.Identifier;\n  const staticNodes: t.Statement[] = [];\n  const instanceNodes: t.ExpressionStatement[] = [];\n  let lastInstanceNodeReturnsThis = false;\n  // These nodes are pure and can be moved to the closest statement position\n  const pureStaticNodes: t.FunctionDeclaration[] = [];\n  let classBindingNode: t.ExpressionStatement | null = null;\n\n  const getSuperRef = t.isIdentifier(superRef)\n    ? () => superRef\n    : () => {\n        injectSuperRef ??=\n          props[0].scope.generateUidIdentifierBasedOnNode(superRef);\n        return injectSuperRef;\n      };\n\n  const classRefForInnerBinding =\n    ref ??\n    props[0].scope.generateUidIdentifier(innerBindingRef?.name || \"Class\");\n  ref ??= t.cloneNode(innerBindingRef);\n\n  for (const prop of props) {\n    if (prop.isClassProperty()) {\n      ts.assertFieldTransformed(prop);\n    }\n\n    // @ts-expect-error: TS doesn't infer that prop.node is not a StaticBlock\n    const isStatic = !t.isStaticBlock?.(prop.node) && prop.node.static;\n    const isInstance = !isStatic;\n    const isPrivate = prop.isPrivate();\n    const isPublic = !isPrivate;\n    const isField = prop.isProperty();\n    const isMethod = !isField;\n    const isStaticBlock = prop.isStaticBlock?.();\n\n    if (isStatic) classRefFlags |= ClassRefFlag.ForDefine;\n\n    if (isStatic || (isMethod && isPrivate) || isStaticBlock) {\n      new ReplaceSupers({\n        methodPath: prop,\n        constantSuper,\n        file: file,\n        refToPreserve: innerBindingRef,\n        getSuperRef,\n        getObjectRef() {\n          classRefFlags |= ClassRefFlag.ForInnerBinding;\n          if (isStatic || isStaticBlock) {\n            return classRefForInnerBinding;\n          } else {\n            return t.memberExpression(\n              classRefForInnerBinding,\n              t.identifier(\"prototype\"),\n            );\n          }\n        },\n      }).replace();\n\n      const replaced = replaceThisContext(\n        prop,\n        classRefForInnerBinding,\n        innerBindingRef,\n      );\n      if (replaced) {\n        classRefFlags |= ClassRefFlag.ForInnerBinding;\n      }\n    }\n\n    lastInstanceNodeReturnsThis = false;\n\n    // TODO(ts): there are so many `ts-expect-error` inside cases since\n    // ts can not infer type from pre-computed values (or a case test)\n    // even change `isStaticBlock` to `t.isStaticBlock(prop)` will not make prop\n    // a `NodePath<t.StaticBlock>`\n    // this maybe a bug for ts\n    switch (true) {\n      case isStaticBlock: {\n        const blockBody = prop.node.body;\n        // We special-case the single expression case to avoid the iife, since\n        // it's common.\n        if (blockBody.length === 1 && t.isExpressionStatement(blockBody[0])) {\n          staticNodes.push(inheritPropComments(blockBody[0], prop));\n        } else {\n          staticNodes.push(\n            t.inheritsComments(\n              template.statement.ast`(() => { ${blockBody} })()`,\n              prop.node,\n            ),\n          );\n        }\n        break;\n      }\n      case isStatic &&\n        isPrivate &&\n        isField &&\n        privateFieldsAsSymbolsOrProperties:\n        staticNodes.push(\n          buildPrivateFieldInitLoose(t.cloneNode(ref), prop, privateNamesMap),\n        );\n        break;\n      case isStatic &&\n        isPrivate &&\n        isField &&\n        !privateFieldsAsSymbolsOrProperties:\n        if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n          staticNodes.push(\n            buildPrivateStaticFieldInitSpecOld(prop, privateNamesMap),\n          );\n        } else {\n          staticNodes.push(\n            buildPrivateStaticFieldInitSpec(\n              prop,\n              privateNamesMap,\n              noUninitializedPrivateFieldAccess,\n            ),\n          );\n        }\n        break;\n      case isStatic && isPublic && isField && setPublicClassFields:\n        // Functions always have non-writable .name and .length properties,\n        // so we must always use [[Define]] for them.\n        // It might still be possible to a computed static fields whose resulting\n        // key is \"name\" or \"length\", but the assumption is telling us that it's\n        // not going to happen.\n        if (!isNameOrLength(prop.node)) {\n          staticNodes.push(buildPublicFieldInitLoose(t.cloneNode(ref), prop));\n          break;\n        }\n      // falls through\n      case isStatic && isPublic && isField && !setPublicClassFields:\n        staticNodes.push(\n          buildPublicFieldInitSpec(t.cloneNode(ref), prop, file),\n        );\n        break;\n      case isInstance &&\n        isPrivate &&\n        isField &&\n        privateFieldsAsSymbolsOrProperties:\n        instanceNodes.push(\n          buildPrivateFieldInitLoose(t.thisExpression(), prop, privateNamesMap),\n        );\n        break;\n      case isInstance &&\n        isPrivate &&\n        isField &&\n        !privateFieldsAsSymbolsOrProperties:\n        instanceNodes.push(\n          buildPrivateInstanceFieldInitSpec(\n            t.thisExpression(),\n            prop,\n            privateNamesMap,\n            file,\n          ),\n        );\n        break;\n      case isInstance &&\n        isPrivate &&\n        isMethod &&\n        privateFieldsAsSymbolsOrProperties:\n        instanceNodes.unshift(\n          buildPrivateMethodInitLoose(\n            t.thisExpression(),\n            prop,\n            privateNamesMap,\n          ),\n        );\n        pureStaticNodes.push(\n          buildPrivateMethodDeclaration(\n            file,\n            prop,\n            privateNamesMap,\n            privateFieldsAsSymbolsOrProperties,\n          ),\n        );\n        break;\n      case isInstance &&\n        isPrivate &&\n        isMethod &&\n        !privateFieldsAsSymbolsOrProperties:\n        instanceNodes.unshift(\n          buildPrivateInstanceMethodInitSpec(\n            t.thisExpression(),\n            prop,\n            privateNamesMap,\n            file,\n          ),\n        );\n        pureStaticNodes.push(\n          buildPrivateMethodDeclaration(\n            file,\n            prop,\n            privateNamesMap,\n            privateFieldsAsSymbolsOrProperties,\n          ),\n        );\n        break;\n      case isStatic &&\n        isPrivate &&\n        isMethod &&\n        !privateFieldsAsSymbolsOrProperties:\n        if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n          staticNodes.unshift(\n            // @ts-expect-error checked in switch\n            buildPrivateStaticFieldInitSpecOld(prop, privateNamesMap),\n          );\n        }\n        pureStaticNodes.push(\n          buildPrivateMethodDeclaration(\n            file,\n            prop,\n            privateNamesMap,\n            privateFieldsAsSymbolsOrProperties,\n          ),\n        );\n        break;\n      case isStatic &&\n        isPrivate &&\n        isMethod &&\n        privateFieldsAsSymbolsOrProperties:\n        staticNodes.unshift(\n          buildPrivateStaticMethodInitLoose(\n            t.cloneNode(ref),\n            prop,\n            file,\n            privateNamesMap,\n          ),\n        );\n        pureStaticNodes.push(\n          buildPrivateMethodDeclaration(\n            file,\n            prop,\n            privateNamesMap,\n            privateFieldsAsSymbolsOrProperties,\n          ),\n        );\n        break;\n      case isInstance && isPublic && isField && setPublicClassFields:\n        instanceNodes.push(buildPublicFieldInitLoose(t.thisExpression(), prop));\n        break;\n      case isInstance && isPublic && isField && !setPublicClassFields:\n        lastInstanceNodeReturnsThis = true;\n        instanceNodes.push(\n          buildPublicFieldInitSpec(t.thisExpression(), prop, file),\n        );\n        break;\n      default:\n        throw new Error(\"Unreachable.\");\n    }\n  }\n\n  if (classRefFlags & ClassRefFlag.ForInnerBinding && innerBindingRef != null) {\n    classBindingNode = t.expressionStatement(\n      t.assignmentExpression(\n        \"=\",\n        t.cloneNode(classRefForInnerBinding),\n        t.cloneNode(innerBindingRef),\n      ),\n    );\n  }\n\n  return {\n    staticNodes: staticNodes.filter(Boolean),\n    instanceNodes: instanceNodes.filter(Boolean),\n    lastInstanceNodeReturnsThis,\n    pureStaticNodes: pureStaticNodes.filter(Boolean),\n    classBindingNode,\n    wrapClass(path: NodePath<t.Class>) {\n      for (const prop of props) {\n        // Delete leading comments so that they don't get attached as\n        // trailing comments of the previous sibling.\n        // When transforming props, we explicitly attach their leading\n        // comments to the transformed node with `inheritPropComments`\n        // above.\n        prop.node.leadingComments = null;\n        prop.remove();\n      }\n\n      if (injectSuperRef) {\n        path.scope.push({ id: t.cloneNode(injectSuperRef) });\n        path.set(\n          \"superClass\",\n          t.assignmentExpression(\"=\", injectSuperRef, path.node.superClass),\n        );\n      }\n\n      if (classRefFlags !== ClassRefFlag.None) {\n        if (path.isClassExpression()) {\n          path.scope.push({ id: ref });\n          path.replaceWith(\n            t.assignmentExpression(\"=\", t.cloneNode(ref), path.node),\n          );\n        } else {\n          if (innerBindingRef == null) {\n            // export anonymous class declaration\n            path.node.id = ref;\n          }\n          if (classBindingNode != null) {\n            path.scope.push({ id: classRefForInnerBinding });\n          }\n        }\n      }\n\n      return path;\n    },\n  };\n}\n"],"mappings":"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","ignoreList":[]}
Index: frontend/node_modules/@babel/helper-create-class-features-plugin/lib/index.js
===================================================================
--- frontend/node_modules/@babel/helper-create-class-features-plugin/lib/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@babel/helper-create-class-features-plugin/lib/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,237 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+Object.defineProperty(exports, "FEATURES", {
+  enumerable: true,
+  get: function () {
+    return _features.FEATURES;
+  }
+});
+Object.defineProperty(exports, "buildCheckInRHS", {
+  enumerable: true,
+  get: function () {
+    return _fields.buildCheckInRHS;
+  }
+});
+Object.defineProperty(exports, "buildNamedEvaluationVisitor", {
+  enumerable: true,
+  get: function () {
+    return _decorators.buildNamedEvaluationVisitor;
+  }
+});
+exports.createClassFeaturePlugin = createClassFeaturePlugin;
+Object.defineProperty(exports, "enableFeature", {
+  enumerable: true,
+  get: function () {
+    return _features.enableFeature;
+  }
+});
+Object.defineProperty(exports, "injectInitialization", {
+  enumerable: true,
+  get: function () {
+    return _misc.injectInitialization;
+  }
+});
+var _core = require("@babel/core");
+var _semver = require("semver");
+var _fields = require("./fields.js");
+var _decorators = require("./decorators.js");
+var _decorators2 = require("./decorators-2018-09.js");
+var _misc = require("./misc.js");
+var _features = require("./features.js");
+var _typescript = require("./typescript.js");
+const versionKey = "@babel/plugin-class-features/version";
+function createClassFeaturePlugin({
+  name,
+  feature,
+  loose,
+  manipulateOptions,
+  api,
+  inherits,
+  decoratorVersion
+}) {
+  var _api$assumption;
+  if (feature & _features.FEATURES.decorators) {
+    if (decoratorVersion === "2023-11" || decoratorVersion === "2023-05" || decoratorVersion === "2023-01" || decoratorVersion === "2022-03" || decoratorVersion === "2021-12") {
+      return (0, _decorators.default)(api, {
+        loose
+      }, decoratorVersion, inherits);
+    }
+  }
+  api != null ? api : api = {
+    assumption: () => void 0
+  };
+  const setPublicClassFields = api.assumption("setPublicClassFields");
+  const privateFieldsAsSymbols = api.assumption("privateFieldsAsSymbols");
+  const privateFieldsAsProperties = api.assumption("privateFieldsAsProperties");
+  const noUninitializedPrivateFieldAccess = (_api$assumption = api.assumption("noUninitializedPrivateFieldAccess")) != null ? _api$assumption : false;
+  const constantSuper = api.assumption("constantSuper");
+  const noDocumentAll = api.assumption("noDocumentAll");
+  if (privateFieldsAsProperties && privateFieldsAsSymbols) {
+    throw new Error(`Cannot enable both the "privateFieldsAsProperties" and ` + `"privateFieldsAsSymbols" assumptions as the same time.`);
+  }
+  const privateFieldsAsSymbolsOrProperties = privateFieldsAsProperties || privateFieldsAsSymbols;
+  if (loose === true) {
+    const explicit = [];
+    if (setPublicClassFields !== undefined) {
+      explicit.push(`"setPublicClassFields"`);
+    }
+    if (privateFieldsAsProperties !== undefined) {
+      explicit.push(`"privateFieldsAsProperties"`);
+    }
+    if (privateFieldsAsSymbols !== undefined) {
+      explicit.push(`"privateFieldsAsSymbols"`);
+    }
+    if (explicit.length !== 0) {
+      console.warn(`[${name}]: You are using the "loose: true" option and you are` + ` explicitly setting a value for the ${explicit.join(" and ")}` + ` assumption${explicit.length > 1 ? "s" : ""}. The "loose" option` + ` can cause incompatibilities with the other class features` + ` plugins, so it's recommended that you replace it with the` + ` following top-level option:\n` + `\t"assumptions": {\n` + `\t\t"setPublicClassFields": true,\n` + `\t\t"privateFieldsAsSymbols": true\n` + `\t}`);
+    }
+  }
+  return {
+    name,
+    manipulateOptions,
+    inherits,
+    pre(file) {
+      (0, _features.enableFeature)(file, feature, loose);
+      if (typeof file.get(versionKey) === "number") {
+        file.set(versionKey, "7.29.3");
+        return;
+      }
+      if (!file.get(versionKey) || _semver.lt(file.get(versionKey), "7.29.3")) {
+        file.set(versionKey, "7.29.3");
+      }
+    },
+    visitor: {
+      Class(path, {
+        file
+      }) {
+        if (file.get(versionKey) !== "7.29.3") return;
+        if (!(0, _features.shouldTransform)(path, file)) return;
+        const pathIsClassDeclaration = path.isClassDeclaration();
+        if (pathIsClassDeclaration) (0, _typescript.assertFieldTransformed)(path);
+        const loose = (0, _features.isLoose)(file, feature);
+        let constructor;
+        const isDecorated = (0, _decorators.hasDecorators)(path.node);
+        const props = [];
+        const elements = [];
+        const computedPaths = [];
+        const privateNames = new Set();
+        const body = path.get("body");
+        for (const path of body.get("body")) {
+          if ((path.isClassProperty() || path.isClassMethod()) && path.node.computed) {
+            computedPaths.push(path);
+          }
+          if (path.isPrivate()) {
+            const {
+              name
+            } = path.node.key.id;
+            const getName = `get ${name}`;
+            const setName = `set ${name}`;
+            if (path.isClassPrivateMethod()) {
+              if (path.node.kind === "get") {
+                if (privateNames.has(getName) || privateNames.has(name) && !privateNames.has(setName)) {
+                  throw path.buildCodeFrameError("Duplicate private field");
+                }
+                privateNames.add(getName).add(name);
+              } else if (path.node.kind === "set") {
+                if (privateNames.has(setName) || privateNames.has(name) && !privateNames.has(getName)) {
+                  throw path.buildCodeFrameError("Duplicate private field");
+                }
+                privateNames.add(setName).add(name);
+              }
+            } else {
+              if (privateNames.has(name) && !privateNames.has(getName) && !privateNames.has(setName) || privateNames.has(name) && (privateNames.has(getName) || privateNames.has(setName))) {
+                throw path.buildCodeFrameError("Duplicate private field");
+              }
+              privateNames.add(name);
+            }
+          }
+          if (path.isClassMethod({
+            kind: "constructor"
+          })) {
+            constructor = path;
+          } else {
+            elements.push(path);
+            if (path.isProperty() || path.isPrivate() || path.isStaticBlock != null && path.isStaticBlock()) {
+              props.push(path);
+            }
+          }
+        }
+        if (!props.length && !isDecorated) return;
+        const innerBinding = path.node.id;
+        let ref;
+        if (!innerBinding || !pathIsClassDeclaration) {
+          var _path$ensureFunctionN;
+          (_path$ensureFunctionN = path.ensureFunctionName) != null ? _path$ensureFunctionN : path.ensureFunctionName = require("@babel/traverse").NodePath.prototype.ensureFunctionName;
+          path.ensureFunctionName(false);
+          ref = path.scope.generateUidIdentifier((innerBinding == null ? void 0 : innerBinding.name) || "Class");
+        }
+        const classRefForDefine = ref != null ? ref : _core.types.cloneNode(innerBinding);
+        const privateNamesMap = (0, _fields.buildPrivateNamesMap)(classRefForDefine.name, privateFieldsAsSymbolsOrProperties != null ? privateFieldsAsSymbolsOrProperties : loose, props, file);
+        const privateNamesNodes = (0, _fields.buildPrivateNamesNodes)(privateNamesMap, privateFieldsAsProperties != null ? privateFieldsAsProperties : loose, privateFieldsAsSymbols != null ? privateFieldsAsSymbols : false, file);
+        (0, _fields.transformPrivateNamesUsage)(classRefForDefine, path, privateNamesMap, {
+          privateFieldsAsProperties: privateFieldsAsSymbolsOrProperties != null ? privateFieldsAsSymbolsOrProperties : loose,
+          noUninitializedPrivateFieldAccess,
+          noDocumentAll,
+          innerBinding
+        }, file);
+        let keysNodes, staticNodes, instanceNodes, lastInstanceNodeReturnsThis, pureStaticNodes, classBindingNode, wrapClass;
+        if (isDecorated) {
+          staticNodes = pureStaticNodes = keysNodes = [];
+          ({
+            instanceNodes,
+            wrapClass
+          } = (0, _decorators2.buildDecoratedClass)(classRefForDefine, path, elements, file));
+        } else {
+          keysNodes = (0, _misc.extractComputedKeys)(path, computedPaths, file);
+          ({
+            staticNodes,
+            pureStaticNodes,
+            instanceNodes,
+            lastInstanceNodeReturnsThis,
+            classBindingNode,
+            wrapClass
+          } = (0, _fields.buildFieldsInitNodes)(ref, path.node.superClass, props, privateNamesMap, file, setPublicClassFields != null ? setPublicClassFields : loose, privateFieldsAsSymbolsOrProperties != null ? privateFieldsAsSymbolsOrProperties : loose, noUninitializedPrivateFieldAccess, constantSuper != null ? constantSuper : loose, innerBinding));
+        }
+        if (instanceNodes.length > 0) {
+          (0, _misc.injectInitialization)(path, constructor, instanceNodes, (referenceVisitor, state) => {
+            if (isDecorated) return;
+            for (const prop of props) {
+              if (_core.types.isStaticBlock != null && _core.types.isStaticBlock(prop.node) || prop.node.static) continue;
+              prop.traverse(referenceVisitor, state);
+            }
+          }, lastInstanceNodeReturnsThis);
+        }
+        const wrappedPath = wrapClass(path);
+        wrappedPath.insertBefore([...privateNamesNodes, ...keysNodes]);
+        if (staticNodes.length > 0) {
+          wrappedPath.insertAfter(staticNodes);
+        }
+        if (pureStaticNodes.length > 0) {
+          wrappedPath.find(parent => parent.isStatement() || parent.isDeclaration()).insertAfter(pureStaticNodes);
+        }
+        if (classBindingNode != null && pathIsClassDeclaration) {
+          wrappedPath.insertAfter(classBindingNode);
+        }
+      },
+      ExportDefaultDeclaration(path, {
+        file
+      }) {
+        if (file.get(versionKey) !== "7.29.3") return;
+        const decl = path.get("declaration");
+        if (decl.isClassDeclaration() && (0, _decorators.hasDecorators)(decl.node)) {
+          if (decl.node.id) {
+            var _path$splitExportDecl;
+            (_path$splitExportDecl = path.splitExportDeclaration) != null ? _path$splitExportDecl : path.splitExportDeclaration = require("@babel/traverse").NodePath.prototype.splitExportDeclaration;
+            path.splitExportDeclaration();
+          } else {
+            decl.node.type = "ClassExpression";
+          }
+        }
+      }
+    }
+  };
+}
+
+//# sourceMappingURL=index.js.map
Index: frontend/node_modules/@babel/helper-create-class-features-plugin/lib/index.js.map
===================================================================
--- frontend/node_modules/@babel/helper-create-class-features-plugin/lib/index.js.map	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@babel/helper-create-class-features-plugin/lib/index.js.map	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_core","require","_semver","_fields","_decorators","_decorators2","_misc","_features","_typescript","versionKey","createClassFeaturePlugin","name","feature","loose","manipulateOptions","api","inherits","decoratorVersion","_api$assumption","FEATURES","decorators","createDecoratorTransform","assumption","setPublicClassFields","privateFieldsAsSymbols","privateFieldsAsProperties","noUninitializedPrivateFieldAccess","constantSuper","noDocumentAll","Error","privateFieldsAsSymbolsOrProperties","explicit","undefined","push","length","console","warn","join","pre","file","enableFeature","get","set","semver","lt","visitor","Class","path","shouldTransform","pathIsClassDeclaration","isClassDeclaration","assertFieldTransformed","isLoose","constructor","isDecorated","hasDecorators","node","props","elements","computedPaths","privateNames","Set","body","isClassProperty","isClassMethod","computed","isPrivate","key","id","getName","setName","isClassPrivateMethod","kind","has","buildCodeFrameError","add","isProperty","isStaticBlock","innerBinding","ref","_path$ensureFunctionN","ensureFunctionName","NodePath","prototype","scope","generateUidIdentifier","classRefForDefine","t","cloneNode","privateNamesMap","buildPrivateNamesMap","privateNamesNodes","buildPrivateNamesNodes","transformPrivateNamesUsage","keysNodes","staticNodes","instanceNodes","lastInstanceNodeReturnsThis","pureStaticNodes","classBindingNode","wrapClass","buildDecoratedClass","extractComputedKeys","buildFieldsInitNodes","superClass","injectInitialization","referenceVisitor","state","prop","static","traverse","wrappedPath","insertBefore","insertAfter","find","parent","isStatement","isDeclaration","ExportDefaultDeclaration","decl","_path$splitExportDecl","splitExportDeclaration","type"],"sources":["../src/index.ts"],"sourcesContent":["import { types as t } from \"@babel/core\";\nimport type { PluginAPI, PluginObject, NodePath } from \"@babel/core\";\n\nimport semver from \"semver\";\n\nimport {\n  buildPrivateNamesNodes,\n  buildPrivateNamesMap,\n  transformPrivateNamesUsage,\n  buildFieldsInitNodes,\n  buildCheckInRHS,\n} from \"./fields.ts\";\nimport type { PropPath } from \"./fields.ts\";\nimport createDecoratorTransform, {\n  hasDecorators,\n  buildNamedEvaluationVisitor,\n} from \"./decorators.ts\";\nimport type { DecoratorVersionKind } from \"./decorators.ts\";\nimport { buildDecoratedClass } from \"./decorators-2018-09.ts\" with { if: \"!process.env.BABEL_8_BREAKING\" };\nimport { injectInitialization, extractComputedKeys } from \"./misc.ts\";\nimport {\n  enableFeature,\n  FEATURES,\n  isLoose,\n  shouldTransform,\n} from \"./features.ts\";\nimport { assertFieldTransformed } from \"./typescript.ts\";\n\nexport {\n  FEATURES,\n  enableFeature,\n  injectInitialization,\n  buildCheckInRHS,\n  buildNamedEvaluationVisitor,\n};\n\nconst versionKey = \"@babel/plugin-class-features/version\";\n\ninterface Options {\n  name: string;\n  feature: number;\n  loose?: boolean;\n  inherits?: PluginObject[\"inherits\"];\n  manipulateOptions?: PluginObject[\"manipulateOptions\"];\n  api?: PluginAPI;\n  decoratorVersion?: DecoratorVersionKind | \"2018-09\";\n}\n\nexport function createClassFeaturePlugin({\n  name,\n  feature,\n  loose,\n  manipulateOptions,\n  api,\n  inherits,\n  decoratorVersion,\n}: Options): PluginObject {\n  if (feature & FEATURES.decorators) {\n    if (process.env.BABEL_8_BREAKING) {\n      return createDecoratorTransform(api, { loose }, \"2023-11\", inherits);\n    } else {\n      if (\n        decoratorVersion === \"2023-11\" ||\n        decoratorVersion === \"2023-05\" ||\n        decoratorVersion === \"2023-01\" ||\n        decoratorVersion === \"2022-03\" ||\n        decoratorVersion === \"2021-12\"\n      ) {\n        return createDecoratorTransform(\n          api,\n          { loose },\n          decoratorVersion,\n          inherits,\n        );\n      }\n    }\n  }\n  if (!process.env.BABEL_8_BREAKING) {\n    api ??= { assumption: () => void 0 as any } as any;\n  }\n  const setPublicClassFields = api.assumption(\"setPublicClassFields\");\n  const privateFieldsAsSymbols = api.assumption(\"privateFieldsAsSymbols\");\n  const privateFieldsAsProperties = api.assumption(\"privateFieldsAsProperties\");\n  const noUninitializedPrivateFieldAccess =\n    api.assumption(\"noUninitializedPrivateFieldAccess\") ?? false;\n  const constantSuper = api.assumption(\"constantSuper\");\n  const noDocumentAll = api.assumption(\"noDocumentAll\");\n\n  if (privateFieldsAsProperties && privateFieldsAsSymbols) {\n    throw new Error(\n      `Cannot enable both the \"privateFieldsAsProperties\" and ` +\n        `\"privateFieldsAsSymbols\" assumptions as the same time.`,\n    );\n  }\n  const privateFieldsAsSymbolsOrProperties =\n    privateFieldsAsProperties || privateFieldsAsSymbols;\n\n  if (loose === true) {\n    type AssumptionName = Parameters<PluginAPI[\"assumption\"]>[0];\n    const explicit: `\"${AssumptionName}\"`[] = [];\n\n    if (setPublicClassFields !== undefined) {\n      explicit.push(`\"setPublicClassFields\"`);\n    }\n    if (privateFieldsAsProperties !== undefined) {\n      explicit.push(`\"privateFieldsAsProperties\"`);\n    }\n    if (privateFieldsAsSymbols !== undefined) {\n      explicit.push(`\"privateFieldsAsSymbols\"`);\n    }\n    if (explicit.length !== 0) {\n      console.warn(\n        `[${name}]: You are using the \"loose: true\" option and you are` +\n          ` explicitly setting a value for the ${explicit.join(\" and \")}` +\n          ` assumption${explicit.length > 1 ? \"s\" : \"\"}. The \"loose\" option` +\n          ` can cause incompatibilities with the other class features` +\n          ` plugins, so it's recommended that you replace it with the` +\n          ` following top-level option:\\n` +\n          `\\t\"assumptions\": {\\n` +\n          `\\t\\t\"setPublicClassFields\": true,\\n` +\n          `\\t\\t\"privateFieldsAsSymbols\": true\\n` +\n          `\\t}`,\n      );\n    }\n  }\n\n  return {\n    name,\n    manipulateOptions,\n    inherits,\n\n    pre(file) {\n      enableFeature(file, feature, loose);\n\n      if (!process.env.BABEL_8_BREAKING) {\n        // Until 7.21.4, we used to encode the version as a number.\n        // If file.get(versionKey) is a number, it has thus been\n        // set by an older version of this plugin.\n        if (typeof file.get(versionKey) === \"number\") {\n          file.set(versionKey, PACKAGE_JSON.version);\n          return;\n        }\n      }\n      if (\n        !file.get(versionKey) ||\n        semver.lt(file.get(versionKey), PACKAGE_JSON.version)\n      ) {\n        file.set(versionKey, PACKAGE_JSON.version);\n      }\n    },\n\n    visitor: {\n      Class(path, { file }) {\n        if (file.get(versionKey) !== PACKAGE_JSON.version) return;\n\n        if (!shouldTransform(path, file)) return;\n\n        const pathIsClassDeclaration = path.isClassDeclaration();\n\n        if (pathIsClassDeclaration) assertFieldTransformed(path);\n\n        const loose = isLoose(file, feature);\n\n        let constructor: NodePath<t.ClassMethod>;\n        const isDecorated = hasDecorators(path.node);\n        const props: PropPath[] = [];\n        const elements = [];\n        const computedPaths: NodePath<t.ClassProperty | t.ClassMethod>[] = [];\n        const privateNames = new Set<string>();\n        const body = path.get(\"body\");\n\n        for (const path of body.get(\"body\")) {\n          if (\n            // check path.node.computed is enough, but ts will complain\n            (path.isClassProperty() || path.isClassMethod()) &&\n            path.node.computed\n          ) {\n            computedPaths.push(path);\n          }\n\n          if (path.isPrivate()) {\n            const { name } = path.node.key.id;\n            const getName = `get ${name}`;\n            const setName = `set ${name}`;\n\n            if (path.isClassPrivateMethod()) {\n              if (path.node.kind === \"get\") {\n                if (\n                  privateNames.has(getName) ||\n                  (privateNames.has(name) && !privateNames.has(setName))\n                ) {\n                  throw path.buildCodeFrameError(\"Duplicate private field\");\n                }\n                privateNames.add(getName).add(name);\n              } else if (path.node.kind === \"set\") {\n                if (\n                  privateNames.has(setName) ||\n                  (privateNames.has(name) && !privateNames.has(getName))\n                ) {\n                  throw path.buildCodeFrameError(\"Duplicate private field\");\n                }\n                privateNames.add(setName).add(name);\n              }\n            } else {\n              if (\n                (privateNames.has(name) &&\n                  !privateNames.has(getName) &&\n                  !privateNames.has(setName)) ||\n                (privateNames.has(name) &&\n                  (privateNames.has(getName) || privateNames.has(setName)))\n              ) {\n                throw path.buildCodeFrameError(\"Duplicate private field\");\n              }\n\n              privateNames.add(name);\n            }\n          }\n\n          if (path.isClassMethod({ kind: \"constructor\" })) {\n            constructor = path;\n          } else {\n            elements.push(path);\n            if (\n              path.isProperty() ||\n              path.isPrivate() ||\n              path.isStaticBlock?.()\n            ) {\n              props.push(path as PropPath);\n            }\n          }\n        }\n\n        if (process.env.BABEL_8_BREAKING) {\n          if (!props.length) return;\n        } else {\n          if (!props.length && !isDecorated) return;\n        }\n\n        const innerBinding = path.node.id;\n        let ref: t.Identifier | null;\n        if (!innerBinding || !pathIsClassDeclaration) {\n          if (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n            // polyfill when being run by an older Babel version\n            path.ensureFunctionName ??=\n              // eslint-disable-next-line no-restricted-globals\n              require(\"@babel/traverse\").NodePath.prototype.ensureFunctionName;\n          }\n          (path as NodePath<t.ClassExpression>).ensureFunctionName(false);\n          ref = path.scope.generateUidIdentifier(innerBinding?.name || \"Class\");\n        }\n        const classRefForDefine = ref ?? t.cloneNode(innerBinding);\n\n        const privateNamesMap = buildPrivateNamesMap(\n          classRefForDefine.name,\n          privateFieldsAsSymbolsOrProperties ?? loose,\n          props,\n          file,\n        );\n        const privateNamesNodes = buildPrivateNamesNodes(\n          privateNamesMap,\n          privateFieldsAsProperties ?? loose,\n          privateFieldsAsSymbols ?? false,\n          file,\n        );\n\n        transformPrivateNamesUsage(\n          classRefForDefine,\n          path,\n          privateNamesMap,\n          {\n            privateFieldsAsProperties:\n              privateFieldsAsSymbolsOrProperties ?? loose,\n            noUninitializedPrivateFieldAccess,\n            noDocumentAll,\n            innerBinding,\n          },\n          file,\n        );\n\n        let keysNodes: t.Statement[],\n          staticNodes: t.Statement[],\n          instanceNodes: t.ExpressionStatement[],\n          lastInstanceNodeReturnsThis: boolean,\n          pureStaticNodes: t.FunctionDeclaration[],\n          classBindingNode: t.Statement | null,\n          wrapClass: (path: NodePath<t.Class>) => NodePath;\n\n        if (!process.env.BABEL_8_BREAKING) {\n          if (isDecorated) {\n            staticNodes = pureStaticNodes = keysNodes = [];\n            ({ instanceNodes, wrapClass } = buildDecoratedClass(\n              classRefForDefine,\n              path,\n              elements,\n              file,\n            ));\n          } else {\n            keysNodes = extractComputedKeys(path, computedPaths, file);\n            ({\n              staticNodes,\n              pureStaticNodes,\n              instanceNodes,\n              lastInstanceNodeReturnsThis,\n              classBindingNode,\n              wrapClass,\n            } = buildFieldsInitNodes(\n              ref,\n              path.node.superClass,\n              props,\n              privateNamesMap,\n              file,\n              setPublicClassFields ?? loose,\n              privateFieldsAsSymbolsOrProperties ?? loose,\n              noUninitializedPrivateFieldAccess,\n              constantSuper ?? loose,\n              innerBinding,\n            ));\n          }\n        } else {\n          keysNodes = extractComputedKeys(path, computedPaths, file);\n          ({\n            staticNodes,\n            pureStaticNodes,\n            instanceNodes,\n            lastInstanceNodeReturnsThis,\n            classBindingNode,\n            wrapClass,\n          } = buildFieldsInitNodes(\n            ref,\n            path.node.superClass,\n            props,\n            privateNamesMap,\n            file,\n            setPublicClassFields ?? loose,\n            privateFieldsAsSymbolsOrProperties ?? loose,\n            noUninitializedPrivateFieldAccess,\n            constantSuper ?? loose,\n            innerBinding,\n          ));\n        }\n\n        if (instanceNodes.length > 0) {\n          injectInitialization(\n            path,\n            constructor,\n            instanceNodes,\n            (referenceVisitor, state) => {\n              if (!process.env.BABEL_8_BREAKING) {\n                if (isDecorated) return;\n              }\n              for (const prop of props) {\n                // @ts-expect-error: TS doesn't infer that prop.node is not a StaticBlock\n                if (t.isStaticBlock?.(prop.node) || prop.node.static) continue;\n                prop.traverse(referenceVisitor, state);\n              }\n            },\n            lastInstanceNodeReturnsThis,\n          );\n        }\n\n        // rename to make ts happy\n        const wrappedPath = wrapClass(path);\n        wrappedPath.insertBefore([...privateNamesNodes, ...keysNodes]);\n        if (staticNodes.length > 0) {\n          wrappedPath.insertAfter(staticNodes);\n        }\n        if (pureStaticNodes.length > 0) {\n          wrappedPath\n            .find(parent => parent.isStatement() || parent.isDeclaration())\n            .insertAfter(pureStaticNodes);\n        }\n        if (classBindingNode != null && pathIsClassDeclaration) {\n          wrappedPath.insertAfter(classBindingNode);\n        }\n      },\n\n      ExportDefaultDeclaration(path, { file }) {\n        if (!process.env.BABEL_8_BREAKING) {\n          if (file.get(versionKey) !== PACKAGE_JSON.version) return;\n\n          const decl = path.get(\"declaration\");\n\n          if (decl.isClassDeclaration() && hasDecorators(decl.node)) {\n            if (decl.node.id) {\n              // export default class Foo {}\n              //   -->\n              // class Foo {} export { Foo as default }\n              if (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n                // polyfill when being run by an older Babel version\n                path.splitExportDeclaration ??=\n                  // eslint-disable-next-line no-restricted-globals\n                  require(\"@babel/traverse\").NodePath.prototype.splitExportDeclaration;\n              }\n              path.splitExportDeclaration();\n            } else {\n              // @ts-expect-error Anonymous class declarations can be\n              // transformed as if they were expressions\n              decl.node.type = \"ClassExpression\";\n            }\n          }\n        }\n      },\n    },\n  };\n}\n"],"mappings":"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","ignoreList":[]}
Index: frontend/node_modules/@babel/helper-create-class-features-plugin/lib/misc.js
===================================================================
--- frontend/node_modules/@babel/helper-create-class-features-plugin/lib/misc.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@babel/helper-create-class-features-plugin/lib/misc.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,136 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.extractComputedKeys = extractComputedKeys;
+exports.injectInitialization = injectInitialization;
+exports.memoiseComputedKey = memoiseComputedKey;
+var _core = require("@babel/core");
+var _traverse = require("@babel/traverse");
+const findBareSupers = _traverse.visitors.environmentVisitor({
+  Super(path) {
+    const {
+      node,
+      parentPath
+    } = path;
+    if (parentPath.isCallExpression({
+      callee: node
+    })) {
+      this.push(parentPath);
+    }
+  }
+});
+const referenceVisitor = {
+  "TSTypeAnnotation|TypeAnnotation"(path) {
+    path.skip();
+  },
+  ReferencedIdentifier(path, {
+    scope
+  }) {
+    if (scope.hasOwnBinding(path.node.name)) {
+      scope.rename(path.node.name);
+      path.skip();
+    }
+  }
+};
+function handleClassTDZ(path, state) {
+  if (state.classBinding && state.classBinding === path.scope.getBinding(path.node.name)) {
+    const classNameTDZError = state.file.addHelper("classNameTDZError");
+    const throwNode = _core.types.callExpression(classNameTDZError, [_core.types.stringLiteral(path.node.name)]);
+    path.replaceWith(_core.types.sequenceExpression([throwNode, path.node]));
+    path.skip();
+  }
+}
+const classFieldDefinitionEvaluationTDZVisitor = {
+  ReferencedIdentifier: handleClassTDZ,
+  "TSTypeAnnotation|TypeAnnotation"(path) {
+    path.skip();
+  }
+};
+function injectInitialization(path, constructor, nodes, renamer, lastReturnsThis) {
+  if (!nodes.length) return;
+  const isDerived = !!path.node.superClass;
+  if (!constructor) {
+    const newConstructor = _core.types.classMethod("constructor", _core.types.identifier("constructor"), [], _core.types.blockStatement([]));
+    if (isDerived) {
+      newConstructor.params = [_core.types.restElement(_core.types.identifier("args"))];
+      newConstructor.body.body.push(_core.template.statement.ast`super(...args)`);
+    }
+    [constructor] = path.get("body").unshiftContainer("body", newConstructor);
+  }
+  if (renamer) {
+    renamer(referenceVisitor, {
+      scope: constructor.scope
+    });
+  }
+  if (isDerived) {
+    const bareSupers = [];
+    constructor.traverse(findBareSupers, bareSupers);
+    let isFirst = true;
+    for (const bareSuper of bareSupers) {
+      if (isFirst) {
+        isFirst = false;
+      } else {
+        nodes = nodes.map(n => _core.types.cloneNode(n));
+      }
+      if (!bareSuper.parentPath.isExpressionStatement()) {
+        const allNodes = [bareSuper.node, ...nodes.map(n => _core.types.toExpression(n))];
+        if (!lastReturnsThis) allNodes.push(_core.types.thisExpression());
+        bareSuper.replaceWith(_core.types.sequenceExpression(allNodes));
+      } else {
+        bareSuper.insertAfter(nodes);
+      }
+    }
+  } else {
+    constructor.get("body").unshiftContainer("body", nodes);
+  }
+}
+function memoiseComputedKey(keyNode, scope, hint) {
+  const isUidReference = _core.types.isIdentifier(keyNode) && scope.hasUid(keyNode.name);
+  if (isUidReference) {
+    return;
+  }
+  const isMemoiseAssignment = _core.types.isAssignmentExpression(keyNode, {
+    operator: "="
+  }) && _core.types.isIdentifier(keyNode.left) && scope.hasUid(keyNode.left.name);
+  if (isMemoiseAssignment) {
+    return _core.types.cloneNode(keyNode);
+  } else {
+    const ident = _core.types.identifier(hint);
+    scope.push({
+      id: ident,
+      kind: "let"
+    });
+    return _core.types.assignmentExpression("=", _core.types.cloneNode(ident), keyNode);
+  }
+}
+function extractComputedKeys(path, computedPaths, file) {
+  const {
+    scope
+  } = path;
+  const declarations = [];
+  const state = {
+    classBinding: path.node.id && scope.getBinding(path.node.id.name),
+    file
+  };
+  for (const computedPath of computedPaths) {
+    const computedKey = computedPath.get("key");
+    if (computedKey.isReferencedIdentifier()) {
+      handleClassTDZ(computedKey, state);
+    } else {
+      computedKey.traverse(classFieldDefinitionEvaluationTDZVisitor, state);
+    }
+    const computedNode = computedPath.node;
+    if (!computedKey.isConstantExpression()) {
+      const assignment = memoiseComputedKey(computedKey.node, scope, scope.generateUidBasedOnNode(computedKey.node));
+      if (assignment) {
+        declarations.push(_core.types.expressionStatement(assignment));
+        computedNode.key = _core.types.cloneNode(assignment.left);
+      }
+    }
+  }
+  return declarations;
+}
+
+//# sourceMappingURL=misc.js.map
Index: frontend/node_modules/@babel/helper-create-class-features-plugin/lib/misc.js.map
===================================================================
--- frontend/node_modules/@babel/helper-create-class-features-plugin/lib/misc.js.map	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@babel/helper-create-class-features-plugin/lib/misc.js.map	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_core","require","_traverse","findBareSupers","visitors","environmentVisitor","Super","path","node","parentPath","isCallExpression","callee","push","referenceVisitor","TSTypeAnnotation|TypeAnnotation","skip","ReferencedIdentifier","scope","hasOwnBinding","name","rename","handleClassTDZ","state","classBinding","getBinding","classNameTDZError","file","addHelper","throwNode","t","callExpression","stringLiteral","replaceWith","sequenceExpression","classFieldDefinitionEvaluationTDZVisitor","injectInitialization","constructor","nodes","renamer","lastReturnsThis","length","isDerived","superClass","newConstructor","classMethod","identifier","blockStatement","params","restElement","body","template","statement","ast","get","unshiftContainer","bareSupers","traverse","isFirst","bareSuper","map","n","cloneNode","isExpressionStatement","allNodes","toExpression","thisExpression","insertAfter","memoiseComputedKey","keyNode","hint","isUidReference","isIdentifier","hasUid","isMemoiseAssignment","isAssignmentExpression","operator","left","ident","id","kind","assignmentExpression","extractComputedKeys","computedPaths","declarations","computedPath","computedKey","isReferencedIdentifier","computedNode","isConstantExpression","assignment","generateUidBasedOnNode","expressionStatement","key"],"sources":["../src/misc.ts"],"sourcesContent":["import { template, types as t } from \"@babel/core\";\nimport type { File, NodePath, Scope, Visitor } from \"@babel/core\";\nimport { visitors } from \"@babel/traverse\";\n\nconst findBareSupers = visitors.environmentVisitor<\n  NodePath<t.CallExpression>[]\n>({\n  Super(path) {\n    const { node, parentPath } = path;\n    if (parentPath.isCallExpression({ callee: node })) {\n      this.push(parentPath);\n    }\n  },\n});\n\nconst referenceVisitor: Visitor<{ scope: Scope }> = {\n  \"TSTypeAnnotation|TypeAnnotation\"(\n    path: NodePath<t.TSTypeAnnotation | t.TypeAnnotation>,\n  ) {\n    path.skip();\n  },\n\n  ReferencedIdentifier(path: NodePath<t.Identifier>, { scope }) {\n    if (scope.hasOwnBinding(path.node.name)) {\n      scope.rename(path.node.name);\n      path.skip();\n    }\n  },\n};\n\ntype HandleClassTDZState = {\n  classBinding: Scope.Binding;\n  file: File;\n};\n\nfunction handleClassTDZ(\n  path: NodePath<t.Identifier>,\n  state: HandleClassTDZState,\n) {\n  if (\n    state.classBinding &&\n    state.classBinding === path.scope.getBinding(path.node.name)\n  ) {\n    const classNameTDZError = state.file.addHelper(\"classNameTDZError\");\n    const throwNode = t.callExpression(classNameTDZError, [\n      t.stringLiteral(path.node.name),\n    ]);\n\n    path.replaceWith(t.sequenceExpression([throwNode, path.node]));\n    path.skip();\n  }\n}\n\nconst classFieldDefinitionEvaluationTDZVisitor: Visitor<HandleClassTDZState> = {\n  ReferencedIdentifier: handleClassTDZ,\n  \"TSTypeAnnotation|TypeAnnotation\"(path) {\n    path.skip();\n  },\n};\n\ninterface RenamerState {\n  scope: Scope;\n}\n\nexport function injectInitialization(\n  path: NodePath<t.Class>,\n  constructor: NodePath<t.ClassMethod> | undefined,\n  nodes: t.ExpressionStatement[],\n  renamer?: (visitor: Visitor<RenamerState>, state: RenamerState) => void,\n  lastReturnsThis?: boolean,\n) {\n  if (!nodes.length) return;\n\n  const isDerived = !!path.node.superClass;\n\n  if (!constructor) {\n    const newConstructor = t.classMethod(\n      \"constructor\",\n      t.identifier(\"constructor\"),\n      [],\n      t.blockStatement([]),\n    );\n\n    if (isDerived) {\n      newConstructor.params = [t.restElement(t.identifier(\"args\"))];\n      newConstructor.body.body.push(template.statement.ast`super(...args)`);\n    }\n\n    [constructor] = path\n      .get(\"body\")\n      .unshiftContainer(\"body\", newConstructor) as NodePath<t.ClassMethod>[];\n  }\n\n  if (renamer) {\n    renamer(referenceVisitor, { scope: constructor.scope });\n  }\n\n  if (isDerived) {\n    const bareSupers: NodePath<t.CallExpression>[] = [];\n    constructor.traverse(findBareSupers, bareSupers);\n    let isFirst = true;\n    for (const bareSuper of bareSupers) {\n      if (isFirst) {\n        isFirst = false;\n      } else {\n        nodes = nodes.map(n => t.cloneNode(n));\n      }\n      if (!bareSuper.parentPath.isExpressionStatement()) {\n        const allNodes: t.Expression[] = [\n          bareSuper.node,\n          ...nodes.map(n => t.toExpression(n)),\n        ];\n        if (!lastReturnsThis) allNodes.push(t.thisExpression());\n        bareSuper.replaceWith(t.sequenceExpression(allNodes));\n      } else {\n        bareSuper.insertAfter(nodes);\n      }\n    }\n  } else {\n    constructor.get(\"body\").unshiftContainer(\"body\", nodes);\n  }\n}\n\ntype ComputedKeyAssignmentExpression = t.AssignmentExpression & {\n  left: t.Identifier;\n};\n\n/**\n * Try to memoise a computed key.\n * It returns undefined when the computed key is an uid reference, otherwise\n * an assignment expression `memoiserId = computed key`\n * @export\n * @param {t.Expression} keyNode Computed key\n * @param {Scope} scope The scope where memoiser id should be registered\n * @param {string} hint The memoiser id hint\n * @returns {(ComputedKeyAssignmentExpression | undefined)}\n */\nexport function memoiseComputedKey(\n  keyNode: t.Expression,\n  scope: Scope,\n  hint: string,\n): ComputedKeyAssignmentExpression | undefined {\n  const isUidReference = t.isIdentifier(keyNode) && scope.hasUid(keyNode.name);\n  if (isUidReference) {\n    return;\n  }\n  const isMemoiseAssignment =\n    t.isAssignmentExpression(keyNode, { operator: \"=\" }) &&\n    t.isIdentifier(keyNode.left) &&\n    scope.hasUid(keyNode.left.name);\n  if (isMemoiseAssignment) {\n    return t.cloneNode(keyNode as ComputedKeyAssignmentExpression);\n  } else {\n    const ident = t.identifier(hint);\n    // Declaring in the same block scope\n    // Ref: https://github.com/babel/babel/pull/10029/files#diff-fbbdd83e7a9c998721c1484529c2ce92\n    scope.push({\n      id: ident,\n      kind: \"let\",\n    });\n    return t.assignmentExpression(\n      \"=\",\n      t.cloneNode(ident),\n      keyNode,\n    ) as ComputedKeyAssignmentExpression;\n  }\n}\n\nexport function extractComputedKeys(\n  path: NodePath<t.Class>,\n  computedPaths: NodePath<t.ClassProperty | t.ClassMethod>[],\n  file: File,\n) {\n  const { scope } = path;\n  const declarations: t.ExpressionStatement[] = [];\n  const state = {\n    classBinding: path.node.id && scope.getBinding(path.node.id.name),\n    file,\n  };\n  for (const computedPath of computedPaths) {\n    const computedKey = computedPath.get(\"key\");\n    if (computedKey.isReferencedIdentifier()) {\n      handleClassTDZ(computedKey, state);\n    } else {\n      computedKey.traverse(classFieldDefinitionEvaluationTDZVisitor, state);\n    }\n\n    const computedNode = computedPath.node;\n    // Make sure computed property names are only evaluated once (upon class definition)\n    // and in the right order in combination with static properties\n    if (!computedKey.isConstantExpression()) {\n      const assignment = memoiseComputedKey(\n        computedKey.node,\n        scope,\n        scope.generateUidBasedOnNode(computedKey.node),\n      );\n      if (assignment) {\n        declarations.push(t.expressionStatement(assignment));\n        computedNode.key = t.cloneNode(assignment.left);\n      }\n    }\n  }\n\n  return declarations;\n}\n"],"mappings":"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","ignoreList":[]}
Index: frontend/node_modules/@babel/helper-create-class-features-plugin/lib/typescript.js
===================================================================
--- frontend/node_modules/@babel/helper-create-class-features-plugin/lib/typescript.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@babel/helper-create-class-features-plugin/lib/typescript.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,13 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.assertFieldTransformed = assertFieldTransformed;
+function assertFieldTransformed(path) {
+  if (path.node.declare || false) {
+    throw path.buildCodeFrameError(`TypeScript 'declare' fields must first be transformed by ` + `@babel/plugin-transform-typescript.\n` + `If you have already enabled that plugin (or '@babel/preset-typescript'), make sure ` + `that it runs before any plugin related to additional class features:\n` + ` - @babel/plugin-transform-class-properties\n` + ` - @babel/plugin-transform-private-methods\n` + ` - @babel/plugin-proposal-decorators`);
+  }
+}
+
+//# sourceMappingURL=typescript.js.map
Index: frontend/node_modules/@babel/helper-create-class-features-plugin/lib/typescript.js.map
===================================================================
--- frontend/node_modules/@babel/helper-create-class-features-plugin/lib/typescript.js.map	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@babel/helper-create-class-features-plugin/lib/typescript.js.map	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+{"version":3,"names":["assertFieldTransformed","path","node","declare","buildCodeFrameError"],"sources":["../src/typescript.ts"],"sourcesContent":["import type { NodePath, types as t } from \"@babel/core\";\n\nexport function assertFieldTransformed(\n  path: NodePath<t.ClassProperty | t.ClassDeclaration>,\n) {\n  if (\n    path.node.declare ||\n    (process.env.BABEL_8_BREAKING\n      ? path.isClassProperty({ definite: true })\n      : false)\n  ) {\n    throw path.buildCodeFrameError(\n      `TypeScript 'declare' fields must first be transformed by ` +\n        `@babel/plugin-transform-typescript.\\n` +\n        `If you have already enabled that plugin (or '@babel/preset-typescript'), make sure ` +\n        `that it runs before any plugin related to additional class features:\\n` +\n        ` - @babel/plugin-transform-class-properties\\n` +\n        ` - @babel/plugin-transform-private-methods\\n` +\n        ` - @babel/plugin-proposal-decorators`,\n    );\n  }\n}\n"],"mappings":";;;;;;AAEO,SAASA,sBAAsBA,CACpCC,IAAoD,EACpD;EACA,IACEA,IAAI,CAACC,IAAI,CAACC,OAAO,IAGb,KAAM,EACV;IACA,MAAMF,IAAI,CAACG,mBAAmB,CAC5B,2DAA2D,GACzD,uCAAuC,GACvC,qFAAqF,GACrF,wEAAwE,GACxE,+CAA+C,GAC/C,8CAA8C,GAC9C,sCACJ,CAAC;EACH;AACF","ignoreList":[]}
Index: frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/.bin/semver
===================================================================
--- frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/.bin/semver	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/.bin/semver	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,16 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+    *CYGWIN*|*MINGW*|*MSYS*)
+        if command -v cygpath > /dev/null 2>&1; then
+            basedir=`cygpath -w "$basedir"`
+        fi
+    ;;
+esac
+
+if [ -x "$basedir/node" ]; then
+  exec "$basedir/node"  "$basedir/../semver/bin/semver.js" "$@"
+else 
+  exec node  "$basedir/../semver/bin/semver.js" "$@"
+fi
Index: frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/.bin/semver.cmd
===================================================================
--- frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/.bin/semver.cmd	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/.bin/semver.cmd	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+  SET "_prog=%dp0%\node.exe"
+) ELSE (
+  SET "_prog=node"
+  SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\semver\bin\semver.js" %*
Index: frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/.bin/semver.ps1
===================================================================
--- frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/.bin/semver.ps1	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/.bin/semver.ps1	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+  # Fix case when both the Windows and Linux builds of Node
+  # are installed in the same directory
+  $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+  # Support pipeline input
+  if ($MyInvocation.ExpectingInput) {
+    $input | & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
+  } else {
+    & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
+  }
+  $ret=$LASTEXITCODE
+} else {
+  # Support pipeline input
+  if ($MyInvocation.ExpectingInput) {
+    $input | & "node$exe"  "$basedir/../semver/bin/semver.js" $args
+  } else {
+    & "node$exe"  "$basedir/../semver/bin/semver.js" $args
+  }
+  $ret=$LASTEXITCODE
+}
+exit $ret
Index: frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/semver/LICENSE
===================================================================
--- frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/semver/LICENSE	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/semver/LICENSE	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
Index: frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/semver/README.md
===================================================================
--- frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/semver/README.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/semver/README.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,443 @@
+semver(1) -- The semantic versioner for npm
+===========================================
+
+## Install
+
+```bash
+npm install semver
+````
+
+## Usage
+
+As a node module:
+
+```js
+const semver = require('semver')
+
+semver.valid('1.2.3') // '1.2.3'
+semver.valid('a.b.c') // null
+semver.clean('  =v1.2.3   ') // '1.2.3'
+semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
+semver.gt('1.2.3', '9.8.7') // false
+semver.lt('1.2.3', '9.8.7') // true
+semver.minVersion('>=1.0.0') // '1.0.0'
+semver.valid(semver.coerce('v2')) // '2.0.0'
+semver.valid(semver.coerce('42.6.7.9.3-alpha')) // '42.6.7'
+```
+
+As a command-line utility:
+
+```
+$ semver -h
+
+A JavaScript implementation of the https://semver.org/ specification
+Copyright Isaac Z. Schlueter
+
+Usage: semver [options] <version> [<version> [...]]
+Prints valid versions sorted by SemVer precedence
+
+Options:
+-r --range <range>
+        Print versions that match the specified range.
+
+-i --increment [<level>]
+        Increment a version by the specified level.  Level can
+        be one of: major, minor, patch, premajor, preminor,
+        prepatch, or prerelease.  Default level is 'patch'.
+        Only one version may be specified.
+
+--preid <identifier>
+        Identifier to be used to prefix premajor, preminor,
+        prepatch or prerelease version increments.
+
+-l --loose
+        Interpret versions and ranges loosely
+
+-p --include-prerelease
+        Always include prerelease versions in range matching
+
+-c --coerce
+        Coerce a string into SemVer if possible
+        (does not imply --loose)
+
+--rtl
+        Coerce version strings right to left
+
+--ltr
+        Coerce version strings left to right (default)
+
+Program exits successfully if any valid version satisfies
+all supplied ranges, and prints all satisfying versions.
+
+If no satisfying versions are found, then exits failure.
+
+Versions are printed in ascending order, so supplying
+multiple versions to the utility will just sort them.
+```
+
+## Versions
+
+A "version" is described by the `v2.0.0` specification found at
+<https://semver.org/>.
+
+A leading `"="` or `"v"` character is stripped off and ignored.
+
+## Ranges
+
+A `version range` is a set of `comparators` which specify versions
+that satisfy the range.
+
+A `comparator` is composed of an `operator` and a `version`.  The set
+of primitive `operators` is:
+
+* `<` Less than
+* `<=` Less than or equal to
+* `>` Greater than
+* `>=` Greater than or equal to
+* `=` Equal.  If no operator is specified, then equality is assumed,
+  so this operator is optional, but MAY be included.
+
+For example, the comparator `>=1.2.7` would match the versions
+`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6`
+or `1.1.0`.
+
+Comparators can be joined by whitespace to form a `comparator set`,
+which is satisfied by the **intersection** of all of the comparators
+it includes.
+
+A range is composed of one or more comparator sets, joined by `||`.  A
+version matches a range if and only if every comparator in at least
+one of the `||`-separated comparator sets is satisfied by the version.
+
+For example, the range `>=1.2.7 <1.3.0` would match the versions
+`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`,
+or `1.1.0`.
+
+The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`,
+`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`.
+
+### Prerelease Tags
+
+If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then
+it will only be allowed to satisfy comparator sets if at least one
+comparator with the same `[major, minor, patch]` tuple also has a
+prerelease tag.
+
+For example, the range `>1.2.3-alpha.3` would be allowed to match the
+version `1.2.3-alpha.7`, but it would *not* be satisfied by
+`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater
+than" `1.2.3-alpha.3` according to the SemVer sort rules.  The version
+range only accepts prerelease tags on the `1.2.3` version.  The
+version `3.4.5` *would* satisfy the range, because it does not have a
+prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`.
+
+The purpose for this behavior is twofold.  First, prerelease versions
+frequently are updated very quickly, and contain many breaking changes
+that are (by the author's design) not yet fit for public consumption.
+Therefore, by default, they are excluded from range matching
+semantics.
+
+Second, a user who has opted into using a prerelease version has
+clearly indicated the intent to use *that specific* set of
+alpha/beta/rc versions.  By including a prerelease tag in the range,
+the user is indicating that they are aware of the risk.  However, it
+is still not appropriate to assume that they have opted into taking a
+similar risk on the *next* set of prerelease versions.
+
+Note that this behavior can be suppressed (treating all prerelease
+versions as if they were normal versions, for the purpose of range
+matching) by setting the `includePrerelease` flag on the options
+object to any
+[functions](https://github.com/npm/node-semver#functions) that do
+range matching.
+
+#### Prerelease Identifiers
+
+The method `.inc` takes an additional `identifier` string argument that
+will append the value of the string as a prerelease identifier:
+
+```javascript
+semver.inc('1.2.3', 'prerelease', 'beta')
+// '1.2.4-beta.0'
+```
+
+command-line example:
+
+```bash
+$ semver 1.2.3 -i prerelease --preid beta
+1.2.4-beta.0
+```
+
+Which then can be used to increment further:
+
+```bash
+$ semver 1.2.4-beta.0 -i prerelease
+1.2.4-beta.1
+```
+
+### Advanced Range Syntax
+
+Advanced range syntax desugars to primitive comparators in
+deterministic ways.
+
+Advanced ranges may be combined in the same way as primitive
+comparators using white space or `||`.
+
+#### Hyphen Ranges `X.Y.Z - A.B.C`
+
+Specifies an inclusive set.
+
+* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4`
+
+If a partial version is provided as the first version in the inclusive
+range, then the missing pieces are replaced with zeroes.
+
+* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4`
+
+If a partial version is provided as the second version in the
+inclusive range, then all versions that start with the supplied parts
+of the tuple are accepted, but nothing that would be greater than the
+provided tuple parts.
+
+* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0`
+* `1.2.3 - 2` := `>=1.2.3 <3.0.0`
+
+#### X-Ranges `1.2.x` `1.X` `1.2.*` `*`
+
+Any of `X`, `x`, or `*` may be used to "stand in" for one of the
+numeric values in the `[major, minor, patch]` tuple.
+
+* `*` := `>=0.0.0` (Any version satisfies)
+* `1.x` := `>=1.0.0 <2.0.0` (Matching major version)
+* `1.2.x` := `>=1.2.0 <1.3.0` (Matching major and minor versions)
+
+A partial version range is treated as an X-Range, so the special
+character is in fact optional.
+
+* `""` (empty string) := `*` := `>=0.0.0`
+* `1` := `1.x.x` := `>=1.0.0 <2.0.0`
+* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0`
+
+#### Tilde Ranges `~1.2.3` `~1.2` `~1`
+
+Allows patch-level changes if a minor version is specified on the
+comparator.  Allows minor-level changes if not.
+
+* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0`
+* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0` (Same as `1.2.x`)
+* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0` (Same as `1.x`)
+* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0`
+* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0` (Same as `0.2.x`)
+* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0` (Same as `0.x`)
+* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0` Note that prereleases in
+  the `1.2.3` version will be allowed, if they are greater than or
+  equal to `beta.2`.  So, `1.2.3-beta.4` would be allowed, but
+  `1.2.4-beta.2` would not, because it is a prerelease of a
+  different `[major, minor, patch]` tuple.
+
+#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4`
+
+Allows changes that do not modify the left-most non-zero element in the
+`[major, minor, patch]` tuple.  In other words, this allows patch and
+minor updates for versions `1.0.0` and above, patch updates for
+versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`.
+
+Many authors treat a `0.x` version as if the `x` were the major
+"breaking-change" indicator.
+
+Caret ranges are ideal when an author may make breaking changes
+between `0.2.4` and `0.3.0` releases, which is a common practice.
+However, it presumes that there will *not* be breaking changes between
+`0.2.4` and `0.2.5`.  It allows for changes that are presumed to be
+additive (but non-breaking), according to commonly observed practices.
+
+* `^1.2.3` := `>=1.2.3 <2.0.0`
+* `^0.2.3` := `>=0.2.3 <0.3.0`
+* `^0.0.3` := `>=0.0.3 <0.0.4`
+* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0` Note that prereleases in
+  the `1.2.3` version will be allowed, if they are greater than or
+  equal to `beta.2`.  So, `1.2.3-beta.4` would be allowed, but
+  `1.2.4-beta.2` would not, because it is a prerelease of a
+  different `[major, minor, patch]` tuple.
+* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4`  Note that prereleases in the
+  `0.0.3` version *only* will be allowed, if they are greater than or
+  equal to `beta`.  So, `0.0.3-pr.2` would be allowed.
+
+When parsing caret ranges, a missing `patch` value desugars to the
+number `0`, but will allow flexibility within that value, even if the
+major and minor versions are both `0`.
+
+* `^1.2.x` := `>=1.2.0 <2.0.0`
+* `^0.0.x` := `>=0.0.0 <0.1.0`
+* `^0.0` := `>=0.0.0 <0.1.0`
+
+A missing `minor` and `patch` values will desugar to zero, but also
+allow flexibility within those values, even if the major version is
+zero.
+
+* `^1.x` := `>=1.0.0 <2.0.0`
+* `^0.x` := `>=0.0.0 <1.0.0`
+
+### Range Grammar
+
+Putting all this together, here is a Backus-Naur grammar for ranges,
+for the benefit of parser authors:
+
+```bnf
+range-set  ::= range ( logical-or range ) *
+logical-or ::= ( ' ' ) * '||' ( ' ' ) *
+range      ::= hyphen | simple ( ' ' simple ) * | ''
+hyphen     ::= partial ' - ' partial
+simple     ::= primitive | partial | tilde | caret
+primitive  ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
+partial    ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
+xr         ::= 'x' | 'X' | '*' | nr
+nr         ::= '0' | ['1'-'9'] ( ['0'-'9'] ) *
+tilde      ::= '~' partial
+caret      ::= '^' partial
+qualifier  ::= ( '-' pre )? ( '+' build )?
+pre        ::= parts
+build      ::= parts
+parts      ::= part ( '.' part ) *
+part       ::= nr | [-0-9A-Za-z]+
+```
+
+## Functions
+
+All methods and classes take a final `options` object argument.  All
+options in this object are `false` by default.  The options supported
+are:
+
+- `loose`  Be more forgiving about not-quite-valid semver strings.
+  (Any resulting output will always be 100% strict compliant, of
+  course.)  For backwards compatibility reasons, if the `options`
+  argument is a boolean value instead of an object, it is interpreted
+  to be the `loose` param.
+- `includePrerelease`  Set to suppress the [default
+  behavior](https://github.com/npm/node-semver#prerelease-tags) of
+  excluding prerelease tagged versions from ranges unless they are
+  explicitly opted into.
+
+Strict-mode Comparators and Ranges will be strict about the SemVer
+strings that they parse.
+
+* `valid(v)`: Return the parsed version, or null if it's not valid.
+* `inc(v, release)`: Return the version incremented by the release
+  type (`major`,   `premajor`, `minor`, `preminor`, `patch`,
+  `prepatch`, or `prerelease`), or null if it's not valid
+  * `premajor` in one call will bump the version up to the next major
+    version and down to a prerelease of that major version.
+    `preminor`, and `prepatch` work the same way.
+  * If called from a non-prerelease version, the `prerelease` will work the
+    same as `prepatch`. It increments the patch version, then makes a
+    prerelease. If the input version is already a prerelease it simply
+    increments it.
+* `prerelease(v)`: Returns an array of prerelease components, or null
+  if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]`
+* `major(v)`: Return the major version number.
+* `minor(v)`: Return the minor version number.
+* `patch(v)`: Return the patch version number.
+* `intersects(r1, r2, loose)`: Return true if the two supplied ranges
+  or comparators intersect.
+* `parse(v)`: Attempt to parse a string as a semantic version, returning either
+  a `SemVer` object or `null`.
+
+### Comparison
+
+* `gt(v1, v2)`: `v1 > v2`
+* `gte(v1, v2)`: `v1 >= v2`
+* `lt(v1, v2)`: `v1 < v2`
+* `lte(v1, v2)`: `v1 <= v2`
+* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent,
+  even if they're not the exact same string.  You already know how to
+  compare strings.
+* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`.
+* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call
+  the corresponding function above.  `"==="` and `"!=="` do simple
+  string comparison, but are included for completeness.  Throws if an
+  invalid comparison string is provided.
+* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if
+  `v2` is greater.  Sorts in ascending order if passed to `Array.sort()`.
+* `rcompare(v1, v2)`: The reverse of compare.  Sorts an array of versions
+  in descending order when passed to `Array.sort()`.
+* `compareBuild(v1, v2)`: The same as `compare` but considers `build` when two versions
+  are equal.  Sorts in ascending order if passed to `Array.sort()`.
+  `v2` is greater.  Sorts in ascending order if passed to `Array.sort()`.
+* `diff(v1, v2)`: Returns difference between two versions by the release type
+  (`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`),
+  or null if the versions are the same.
+
+### Comparators
+
+* `intersects(comparator)`: Return true if the comparators intersect
+
+### Ranges
+
+* `validRange(range)`: Return the valid range or null if it's not valid
+* `satisfies(version, range)`: Return true if the version satisfies the
+  range.
+* `maxSatisfying(versions, range)`: Return the highest version in the list
+  that satisfies the range, or `null` if none of them do.
+* `minSatisfying(versions, range)`: Return the lowest version in the list
+  that satisfies the range, or `null` if none of them do.
+* `minVersion(range)`: Return the lowest version that can possibly match
+  the given range.
+* `gtr(version, range)`: Return `true` if version is greater than all the
+  versions possible in the range.
+* `ltr(version, range)`: Return `true` if version is less than all the
+  versions possible in the range.
+* `outside(version, range, hilo)`: Return true if the version is outside
+  the bounds of the range in either the high or low direction.  The
+  `hilo` argument must be either the string `'>'` or `'<'`.  (This is
+  the function called by `gtr` and `ltr`.)
+* `intersects(range)`: Return true if any of the ranges comparators intersect
+
+Note that, since ranges may be non-contiguous, a version might not be
+greater than a range, less than a range, *or* satisfy a range!  For
+example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9`
+until `2.0.0`, so the version `1.2.10` would not be greater than the
+range (because `2.0.1` satisfies, which is higher), nor less than the
+range (since `1.2.8` satisfies, which is lower), and it also does not
+satisfy the range.
+
+If you want to know if a version satisfies or does not satisfy a
+range, use the `satisfies(version, range)` function.
+
+### Coercion
+
+* `coerce(version, options)`: Coerces a string to semver if possible
+
+This aims to provide a very forgiving translation of a non-semver string to
+semver. It looks for the first digit in a string, and consumes all
+remaining characters which satisfy at least a partial semver (e.g., `1`,
+`1.2`, `1.2.3`) up to the max permitted length (256 characters).  Longer
+versions are simply truncated (`4.6.3.9.2-alpha2` becomes `4.6.3`).  All
+surrounding text is simply ignored (`v3.4 replaces v3.3.1` becomes
+`3.4.0`).  Only text which lacks digits will fail coercion (`version one`
+is not valid).  The maximum  length for any semver component considered for
+coercion is 16 characters; longer components will be ignored
+(`10000000000000000.4.7.4` becomes `4.7.4`).  The maximum value for any
+semver component is `Integer.MAX_SAFE_INTEGER || (2**53 - 1)`; higher value
+components are invalid (`9999999999999999.4.7.4` is likely invalid).
+
+If the `options.rtl` flag is set, then `coerce` will return the right-most
+coercible tuple that does not share an ending index with a longer coercible
+tuple.  For example, `1.2.3.4` will return `2.3.4` in rtl mode, not
+`4.0.0`.  `1.2.3/4` will return `4.0.0`, because the `4` is not a part of
+any other overlapping SemVer tuple.
+
+### Clean
+
+* `clean(version)`: Clean a string to be a valid semver if possible
+
+This will return a cleaned and trimmed semver version. If the provided version is not valid a null will be returned. This does not work for ranges. 
+
+ex.
+* `s.clean(' = v 2.1.5foo')`: `null`
+* `s.clean(' = v 2.1.5foo', { loose: true })`: `'2.1.5-foo'`
+* `s.clean(' = v 2.1.5-foo')`: `null`
+* `s.clean(' = v 2.1.5-foo', { loose: true })`: `'2.1.5-foo'`
+* `s.clean('=v2.1.5')`: `'2.1.5'`
+* `s.clean('  =v2.1.5')`: `2.1.5`
+* `s.clean('      2.1.5   ')`: `'2.1.5'`
+* `s.clean('~1.0.0')`: `null`
Index: frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/semver/bin/semver.js
===================================================================
--- frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/semver/bin/semver.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/semver/bin/semver.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,174 @@
+#!/usr/bin/env node
+// Standalone semver comparison program.
+// Exits successfully and prints matching version(s) if
+// any supplied version is valid and passes all tests.
+
+var argv = process.argv.slice(2)
+
+var versions = []
+
+var range = []
+
+var inc = null
+
+var version = require('../package.json').version
+
+var loose = false
+
+var includePrerelease = false
+
+var coerce = false
+
+var rtl = false
+
+var identifier
+
+var semver = require('../semver')
+
+var reverse = false
+
+var options = {}
+
+main()
+
+function main () {
+  if (!argv.length) return help()
+  while (argv.length) {
+    var a = argv.shift()
+    var indexOfEqualSign = a.indexOf('=')
+    if (indexOfEqualSign !== -1) {
+      a = a.slice(0, indexOfEqualSign)
+      argv.unshift(a.slice(indexOfEqualSign + 1))
+    }
+    switch (a) {
+      case '-rv': case '-rev': case '--rev': case '--reverse':
+        reverse = true
+        break
+      case '-l': case '--loose':
+        loose = true
+        break
+      case '-p': case '--include-prerelease':
+        includePrerelease = true
+        break
+      case '-v': case '--version':
+        versions.push(argv.shift())
+        break
+      case '-i': case '--inc': case '--increment':
+        switch (argv[0]) {
+          case 'major': case 'minor': case 'patch': case 'prerelease':
+          case 'premajor': case 'preminor': case 'prepatch':
+            inc = argv.shift()
+            break
+          default:
+            inc = 'patch'
+            break
+        }
+        break
+      case '--preid':
+        identifier = argv.shift()
+        break
+      case '-r': case '--range':
+        range.push(argv.shift())
+        break
+      case '-c': case '--coerce':
+        coerce = true
+        break
+      case '--rtl':
+        rtl = true
+        break
+      case '--ltr':
+        rtl = false
+        break
+      case '-h': case '--help': case '-?':
+        return help()
+      default:
+        versions.push(a)
+        break
+    }
+  }
+
+  var options = { loose: loose, includePrerelease: includePrerelease, rtl: rtl }
+
+  versions = versions.map(function (v) {
+    return coerce ? (semver.coerce(v, options) || { version: v }).version : v
+  }).filter(function (v) {
+    return semver.valid(v)
+  })
+  if (!versions.length) return fail()
+  if (inc && (versions.length !== 1 || range.length)) { return failInc() }
+
+  for (var i = 0, l = range.length; i < l; i++) {
+    versions = versions.filter(function (v) {
+      return semver.satisfies(v, range[i], options)
+    })
+    if (!versions.length) return fail()
+  }
+  return success(versions)
+}
+
+function failInc () {
+  console.error('--inc can only be used on a single version with no range')
+  fail()
+}
+
+function fail () { process.exit(1) }
+
+function success () {
+  var compare = reverse ? 'rcompare' : 'compare'
+  versions.sort(function (a, b) {
+    return semver[compare](a, b, options)
+  }).map(function (v) {
+    return semver.clean(v, options)
+  }).map(function (v) {
+    return inc ? semver.inc(v, inc, options, identifier) : v
+  }).forEach(function (v, i, _) { console.log(v) })
+}
+
+function help () {
+  console.log(['SemVer ' + version,
+    '',
+    'A JavaScript implementation of the https://semver.org/ specification',
+    'Copyright Isaac Z. Schlueter',
+    '',
+    'Usage: semver [options] <version> [<version> [...]]',
+    'Prints valid versions sorted by SemVer precedence',
+    '',
+    'Options:',
+    '-r --range <range>',
+    '        Print versions that match the specified range.',
+    '',
+    '-i --increment [<level>]',
+    '        Increment a version by the specified level.  Level can',
+    '        be one of: major, minor, patch, premajor, preminor,',
+    "        prepatch, or prerelease.  Default level is 'patch'.",
+    '        Only one version may be specified.',
+    '',
+    '--preid <identifier>',
+    '        Identifier to be used to prefix premajor, preminor,',
+    '        prepatch or prerelease version increments.',
+    '',
+    '-l --loose',
+    '        Interpret versions and ranges loosely',
+    '',
+    '-p --include-prerelease',
+    '        Always include prerelease versions in range matching',
+    '',
+    '-c --coerce',
+    '        Coerce a string into SemVer if possible',
+    '        (does not imply --loose)',
+    '',
+    '--rtl',
+    '        Coerce version strings right to left',
+    '',
+    '--ltr',
+    '        Coerce version strings left to right (default)',
+    '',
+    'Program exits successfully if any valid version satisfies',
+    'all supplied ranges, and prints all satisfying versions.',
+    '',
+    'If no satisfying versions are found, then exits failure.',
+    '',
+    'Versions are printed in ascending order, so supplying',
+    'multiple versions to the utility will just sort them.'
+  ].join('\n'))
+}
Index: frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/semver/package.json
===================================================================
--- frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/semver/package.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/semver/package.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,38 @@
+{
+  "name": "semver",
+  "version": "6.3.1",
+  "description": "The semantic version parser used by npm.",
+  "main": "semver.js",
+  "scripts": {
+    "test": "tap test/ --100 --timeout=30",
+    "lint": "echo linting disabled",
+    "postlint": "template-oss-check",
+    "template-oss-apply": "template-oss-apply --force",
+    "lintfix": "npm run lint -- --fix",
+    "snap": "tap test/ --100 --timeout=30",
+    "posttest": "npm run lint"
+  },
+  "devDependencies": {
+    "@npmcli/template-oss": "4.17.0",
+    "tap": "^12.7.0"
+  },
+  "license": "ISC",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/npm/node-semver.git"
+  },
+  "bin": {
+    "semver": "./bin/semver.js"
+  },
+  "files": [
+    "bin",
+    "range.bnf",
+    "semver.js"
+  ],
+  "author": "GitHub Inc.",
+  "templateOSS": {
+    "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
+    "content": "./scripts/template-oss",
+    "version": "4.17.0"
+  }
+}
Index: frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/semver/range.bnf
===================================================================
--- frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/semver/range.bnf	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/semver/range.bnf	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,16 @@
+range-set  ::= range ( logical-or range ) *
+logical-or ::= ( ' ' ) * '||' ( ' ' ) *
+range      ::= hyphen | simple ( ' ' simple ) * | ''
+hyphen     ::= partial ' - ' partial
+simple     ::= primitive | partial | tilde | caret
+primitive  ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
+partial    ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
+xr         ::= 'x' | 'X' | '*' | nr
+nr         ::= '0' | [1-9] ( [0-9] ) *
+tilde      ::= '~' partial
+caret      ::= '^' partial
+qualifier  ::= ( '-' pre )? ( '+' build )?
+pre        ::= parts
+build      ::= parts
+parts      ::= part ( '.' part ) *
+part       ::= nr | [-0-9A-Za-z]+
Index: frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/semver/semver.js
===================================================================
--- frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/semver/semver.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@babel/helper-create-class-features-plugin/node_modules/semver/semver.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1643 @@
+exports = module.exports = SemVer
+
+var debug
+/* istanbul ignore next */
+if (typeof process === 'object' &&
+    process.env &&
+    process.env.NODE_DEBUG &&
+    /\bsemver\b/i.test(process.env.NODE_DEBUG)) {
+  debug = function () {
+    var args = Array.prototype.slice.call(arguments, 0)
+    args.unshift('SEMVER')
+    console.log.apply(console, args)
+  }
+} else {
+  debug = function () {}
+}
+
+// Note: this is the semver.org version of the spec that it implements
+// Not necessarily the package version of this code.
+exports.SEMVER_SPEC_VERSION = '2.0.0'
+
+var MAX_LENGTH = 256
+var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
+  /* istanbul ignore next */ 9007199254740991
+
+// Max safe segment length for coercion.
+var MAX_SAFE_COMPONENT_LENGTH = 16
+
+var MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6
+
+// The actual regexps go on exports.re
+var re = exports.re = []
+var safeRe = exports.safeRe = []
+var src = exports.src = []
+var t = exports.tokens = {}
+var R = 0
+
+function tok (n) {
+  t[n] = R++
+}
+
+var LETTERDASHNUMBER = '[a-zA-Z0-9-]'
+
+// Replace some greedy regex tokens to prevent regex dos issues. These regex are
+// used internally via the safeRe object since all inputs in this library get
+// normalized first to trim and collapse all extra whitespace. The original
+// regexes are exported for userland consumption and lower level usage. A
+// future breaking change could export the safer regex only with a note that
+// all input should have extra whitespace removed.
+var safeRegexReplacements = [
+  ['\\s', 1],
+  ['\\d', MAX_LENGTH],
+  [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],
+]
+
+function makeSafeRe (value) {
+  for (var i = 0; i < safeRegexReplacements.length; i++) {
+    var token = safeRegexReplacements[i][0]
+    var max = safeRegexReplacements[i][1]
+    value = value
+      .split(token + '*').join(token + '{0,' + max + '}')
+      .split(token + '+').join(token + '{1,' + max + '}')
+  }
+  return value
+}
+
+// The following Regular Expressions can be used for tokenizing,
+// validating, and parsing SemVer version strings.
+
+// ## Numeric Identifier
+// A single `0`, or a non-zero digit followed by zero or more digits.
+
+tok('NUMERICIDENTIFIER')
+src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*'
+tok('NUMERICIDENTIFIERLOOSE')
+src[t.NUMERICIDENTIFIERLOOSE] = '\\d+'
+
+// ## Non-numeric Identifier
+// Zero or more digits, followed by a letter or hyphen, and then zero or
+// more letters, digits, or hyphens.
+
+tok('NONNUMERICIDENTIFIER')
+src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-]' + LETTERDASHNUMBER + '*'
+
+// ## Main Version
+// Three dot-separated numeric identifiers.
+
+tok('MAINVERSION')
+src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' +
+                   '(' + src[t.NUMERICIDENTIFIER] + ')\\.' +
+                   '(' + src[t.NUMERICIDENTIFIER] + ')'
+
+tok('MAINVERSIONLOOSE')
+src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' +
+                        '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' +
+                        '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')'
+
+// ## Pre-release Version Identifier
+// A numeric identifier, or a non-numeric identifier.
+
+tok('PRERELEASEIDENTIFIER')
+src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] +
+                            '|' + src[t.NONNUMERICIDENTIFIER] + ')'
+
+tok('PRERELEASEIDENTIFIERLOOSE')
+src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] +
+                                 '|' + src[t.NONNUMERICIDENTIFIER] + ')'
+
+// ## Pre-release Version
+// Hyphen, followed by one or more dot-separated pre-release version
+// identifiers.
+
+tok('PRERELEASE')
+src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] +
+                  '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))'
+
+tok('PRERELEASELOOSE')
+src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] +
+                       '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))'
+
+// ## Build Metadata Identifier
+// Any combination of digits, letters, or hyphens.
+
+tok('BUILDIDENTIFIER')
+src[t.BUILDIDENTIFIER] = LETTERDASHNUMBER + '+'
+
+// ## Build Metadata
+// Plus sign, followed by one or more period-separated build metadata
+// identifiers.
+
+tok('BUILD')
+src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] +
+             '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))'
+
+// ## Full Version String
+// A main version, followed optionally by a pre-release version and
+// build metadata.
+
+// Note that the only major, minor, patch, and pre-release sections of
+// the version string are capturing groups.  The build metadata is not a
+// capturing group, because it should not ever be used in version
+// comparison.
+
+tok('FULL')
+tok('FULLPLAIN')
+src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] +
+                  src[t.PRERELEASE] + '?' +
+                  src[t.BUILD] + '?'
+
+src[t.FULL] = '^' + src[t.FULLPLAIN] + '$'
+
+// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
+// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
+// common in the npm registry.
+tok('LOOSEPLAIN')
+src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] +
+                  src[t.PRERELEASELOOSE] + '?' +
+                  src[t.BUILD] + '?'
+
+tok('LOOSE')
+src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$'
+
+tok('GTLT')
+src[t.GTLT] = '((?:<|>)?=?)'
+
+// Something like "2.*" or "1.2.x".
+// Note that "x.x" is a valid xRange identifer, meaning "any version"
+// Only the first item is strictly required.
+tok('XRANGEIDENTIFIERLOOSE')
+src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'
+tok('XRANGEIDENTIFIER')
+src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*'
+
+tok('XRANGEPLAIN')
+src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' +
+                   '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' +
+                   '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' +
+                   '(?:' + src[t.PRERELEASE] + ')?' +
+                   src[t.BUILD] + '?' +
+                   ')?)?'
+
+tok('XRANGEPLAINLOOSE')
+src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
+                        '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
+                        '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
+                        '(?:' + src[t.PRERELEASELOOSE] + ')?' +
+                        src[t.BUILD] + '?' +
+                        ')?)?'
+
+tok('XRANGE')
+src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$'
+tok('XRANGELOOSE')
+src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$'
+
+// Coercion.
+// Extract anything that could conceivably be a part of a valid semver
+tok('COERCE')
+src[t.COERCE] = '(^|[^\\d])' +
+              '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +
+              '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
+              '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
+              '(?:$|[^\\d])'
+tok('COERCERTL')
+re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g')
+safeRe[t.COERCERTL] = new RegExp(makeSafeRe(src[t.COERCE]), 'g')
+
+// Tilde ranges.
+// Meaning is "reasonably at or greater than"
+tok('LONETILDE')
+src[t.LONETILDE] = '(?:~>?)'
+
+tok('TILDETRIM')
+src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+'
+re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g')
+safeRe[t.TILDETRIM] = new RegExp(makeSafeRe(src[t.TILDETRIM]), 'g')
+var tildeTrimReplace = '$1~'
+
+tok('TILDE')
+src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$'
+tok('TILDELOOSE')
+src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$'
+
+// Caret ranges.
+// Meaning is "at least and backwards compatible with"
+tok('LONECARET')
+src[t.LONECARET] = '(?:\\^)'
+
+tok('CARETTRIM')
+src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+'
+re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g')
+safeRe[t.CARETTRIM] = new RegExp(makeSafeRe(src[t.CARETTRIM]), 'g')
+var caretTrimReplace = '$1^'
+
+tok('CARET')
+src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$'
+tok('CARETLOOSE')
+src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$'
+
+// A simple gt/lt/eq thing, or just "" to indicate "any version"
+tok('COMPARATORLOOSE')
+src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$'
+tok('COMPARATOR')
+src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$'
+
+// An expression to strip any whitespace between the gtlt and the thing
+// it modifies, so that `> 1.2.3` ==> `>1.2.3`
+tok('COMPARATORTRIM')
+src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] +
+                      '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')'
+
+// this one has to use the /g flag
+re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g')
+safeRe[t.COMPARATORTRIM] = new RegExp(makeSafeRe(src[t.COMPARATORTRIM]), 'g')
+var comparatorTrimReplace = '$1$2$3'
+
+// Something like `1.2.3 - 1.2.4`
+// Note that these all use the loose form, because they'll be
+// checked against either the strict or loose comparator form
+// later.
+tok('HYPHENRANGE')
+src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' +
+                   '\\s+-\\s+' +
+                   '(' + src[t.XRANGEPLAIN] + ')' +
+                   '\\s*$'
+
+tok('HYPHENRANGELOOSE')
+src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' +
+                        '\\s+-\\s+' +
+                        '(' + src[t.XRANGEPLAINLOOSE] + ')' +
+                        '\\s*$'
+
+// Star ranges basically just allow anything at all.
+tok('STAR')
+src[t.STAR] = '(<|>)?=?\\s*\\*'
+
+// Compile to actual regexp objects.
+// All are flag-free, unless they were created above with a flag.
+for (var i = 0; i < R; i++) {
+  debug(i, src[i])
+  if (!re[i]) {
+    re[i] = new RegExp(src[i])
+
+    // Replace all greedy whitespace to prevent regex dos issues. These regex are
+    // used internally via the safeRe object since all inputs in this library get
+    // normalized first to trim and collapse all extra whitespace. The original
+    // regexes are exported for userland consumption and lower level usage. A
+    // future breaking change could export the safer regex only with a note that
+    // all input should have extra whitespace removed.
+    safeRe[i] = new RegExp(makeSafeRe(src[i]))
+  }
+}
+
+exports.parse = parse
+function parse (version, options) {
+  if (!options || typeof options !== 'object') {
+    options = {
+      loose: !!options,
+      includePrerelease: false
+    }
+  }
+
+  if (version instanceof SemVer) {
+    return version
+  }
+
+  if (typeof version !== 'string') {
+    return null
+  }
+
+  if (version.length > MAX_LENGTH) {
+    return null
+  }
+
+  var r = options.loose ? safeRe[t.LOOSE] : safeRe[t.FULL]
+  if (!r.test(version)) {
+    return null
+  }
+
+  try {
+    return new SemVer(version, options)
+  } catch (er) {
+    return null
+  }
+}
+
+exports.valid = valid
+function valid (version, options) {
+  var v = parse(version, options)
+  return v ? v.version : null
+}
+
+exports.clean = clean
+function clean (version, options) {
+  var s = parse(version.trim().replace(/^[=v]+/, ''), options)
+  return s ? s.version : null
+}
+
+exports.SemVer = SemVer
+
+function SemVer (version, options) {
+  if (!options || typeof options !== 'object') {
+    options = {
+      loose: !!options,
+      includePrerelease: false
+    }
+  }
+  if (version instanceof SemVer) {
+    if (version.loose === options.loose) {
+      return version
+    } else {
+      version = version.version
+    }
+  } else if (typeof version !== 'string') {
+    throw new TypeError('Invalid Version: ' + version)
+  }
+
+  if (version.length > MAX_LENGTH) {
+    throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')
+  }
+
+  if (!(this instanceof SemVer)) {
+    return new SemVer(version, options)
+  }
+
+  debug('SemVer', version, options)
+  this.options = options
+  this.loose = !!options.loose
+
+  var m = version.trim().match(options.loose ? safeRe[t.LOOSE] : safeRe[t.FULL])
+
+  if (!m) {
+    throw new TypeError('Invalid Version: ' + version)
+  }
+
+  this.raw = version
+
+  // these are actually numbers
+  this.major = +m[1]
+  this.minor = +m[2]
+  this.patch = +m[3]
+
+  if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
+    throw new TypeError('Invalid major version')
+  }
+
+  if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
+    throw new TypeError('Invalid minor version')
+  }
+
+  if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
+    throw new TypeError('Invalid patch version')
+  }
+
+  // numberify any prerelease numeric ids
+  if (!m[4]) {
+    this.prerelease = []
+  } else {
+    this.prerelease = m[4].split('.').map(function (id) {
+      if (/^[0-9]+$/.test(id)) {
+        var num = +id
+        if (num >= 0 && num < MAX_SAFE_INTEGER) {
+          return num
+        }
+      }
+      return id
+    })
+  }
+
+  this.build = m[5] ? m[5].split('.') : []
+  this.format()
+}
+
+SemVer.prototype.format = function () {
+  this.version = this.major + '.' + this.minor + '.' + this.patch
+  if (this.prerelease.length) {
+    this.version += '-' + this.prerelease.join('.')
+  }
+  return this.version
+}
+
+SemVer.prototype.toString = function () {
+  return this.version
+}
+
+SemVer.prototype.compare = function (other) {
+  debug('SemVer.compare', this.version, this.options, other)
+  if (!(other instanceof SemVer)) {
+    other = new SemVer(other, this.options)
+  }
+
+  return this.compareMain(other) || this.comparePre(other)
+}
+
+SemVer.prototype.compareMain = function (other) {
+  if (!(other instanceof SemVer)) {
+    other = new SemVer(other, this.options)
+  }
+
+  return compareIdentifiers(this.major, other.major) ||
+         compareIdentifiers(this.minor, other.minor) ||
+         compareIdentifiers(this.patch, other.patch)
+}
+
+SemVer.prototype.comparePre = function (other) {
+  if (!(other instanceof SemVer)) {
+    other = new SemVer(other, this.options)
+  }
+
+  // NOT having a prerelease is > having one
+  if (this.prerelease.length && !other.prerelease.length) {
+    return -1
+  } else if (!this.prerelease.length && other.prerelease.length) {
+    return 1
+  } else if (!this.prerelease.length && !other.prerelease.length) {
+    return 0
+  }
+
+  var i = 0
+  do {
+    var a = this.prerelease[i]
+    var b = other.prerelease[i]
+    debug('prerelease compare', i, a, b)
+    if (a === undefined && b === undefined) {
+      return 0
+    } else if (b === undefined) {
+      return 1
+    } else if (a === undefined) {
+      return -1
+    } else if (a === b) {
+      continue
+    } else {
+      return compareIdentifiers(a, b)
+    }
+  } while (++i)
+}
+
+SemVer.prototype.compareBuild = function (other) {
+  if (!(other instanceof SemVer)) {
+    other = new SemVer(other, this.options)
+  }
+
+  var i = 0
+  do {
+    var a = this.build[i]
+    var b = other.build[i]
+    debug('prerelease compare', i, a, b)
+    if (a === undefined && b === undefined) {
+      return 0
+    } else if (b === undefined) {
+      return 1
+    } else if (a === undefined) {
+      return -1
+    } else if (a === b) {
+      continue
+    } else {
+      return compareIdentifiers(a, b)
+    }
+  } while (++i)
+}
+
+// preminor will bump the version up to the next minor release, and immediately
+// down to pre-release. premajor and prepatch work the same way.
+SemVer.prototype.inc = function (release, identifier) {
+  switch (release) {
+    case 'premajor':
+      this.prerelease.length = 0
+      this.patch = 0
+      this.minor = 0
+      this.major++
+      this.inc('pre', identifier)
+      break
+    case 'preminor':
+      this.prerelease.length = 0
+      this.patch = 0
+      this.minor++
+      this.inc('pre', identifier)
+      break
+    case 'prepatch':
+      // If this is already a prerelease, it will bump to the next version
+      // drop any prereleases that might already exist, since they are not
+      // relevant at this point.
+      this.prerelease.length = 0
+      this.inc('patch', identifier)
+      this.inc('pre', identifier)
+      break
+    // If the input is a non-prerelease version, this acts the same as
+    // prepatch.
+    case 'prerelease':
+      if (this.prerelease.length === 0) {
+        this.inc('patch', identifier)
+      }
+      this.inc('pre', identifier)
+      break
+
+    case 'major':
+      // If this is a pre-major version, bump up to the same major version.
+      // Otherwise increment major.
+      // 1.0.0-5 bumps to 1.0.0
+      // 1.1.0 bumps to 2.0.0
+      if (this.minor !== 0 ||
+          this.patch !== 0 ||
+          this.prerelease.length === 0) {
+        this.major++
+      }
+      this.minor = 0
+      this.patch = 0
+      this.prerelease = []
+      break
+    case 'minor':
+      // If this is a pre-minor version, bump up to the same minor version.
+      // Otherwise increment minor.
+      // 1.2.0-5 bumps to 1.2.0
+      // 1.2.1 bumps to 1.3.0
+      if (this.patch !== 0 || this.prerelease.length === 0) {
+        this.minor++
+      }
+      this.patch = 0
+      this.prerelease = []
+      break
+    case 'patch':
+      // If this is not a pre-release version, it will increment the patch.
+      // If it is a pre-release it will bump up to the same patch version.
+      // 1.2.0-5 patches to 1.2.0
+      // 1.2.0 patches to 1.2.1
+      if (this.prerelease.length === 0) {
+        this.patch++
+      }
+      this.prerelease = []
+      break
+    // This probably shouldn't be used publicly.
+    // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
+    case 'pre':
+      if (this.prerelease.length === 0) {
+        this.prerelease = [0]
+      } else {
+        var i = this.prerelease.length
+        while (--i >= 0) {
+          if (typeof this.prerelease[i] === 'number') {
+            this.prerelease[i]++
+            i = -2
+          }
+        }
+        if (i === -1) {
+          // didn't increment anything
+          this.prerelease.push(0)
+        }
+      }
+      if (identifier) {
+        // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
+        // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
+        if (this.prerelease[0] === identifier) {
+          if (isNaN(this.prerelease[1])) {
+            this.prerelease = [identifier, 0]
+          }
+        } else {
+          this.prerelease = [identifier, 0]
+        }
+      }
+      break
+
+    default:
+      throw new Error('invalid increment argument: ' + release)
+  }
+  this.format()
+  this.raw = this.version
+  return this
+}
+
+exports.inc = inc
+function inc (version, release, loose, identifier) {
+  if (typeof (loose) === 'string') {
+    identifier = loose
+    loose = undefined
+  }
+
+  try {
+    return new SemVer(version, loose).inc(release, identifier).version
+  } catch (er) {
+    return null
+  }
+}
+
+exports.diff = diff
+function diff (version1, version2) {
+  if (eq(version1, version2)) {
+    return null
+  } else {
+    var v1 = parse(version1)
+    var v2 = parse(version2)
+    var prefix = ''
+    if (v1.prerelease.length || v2.prerelease.length) {
+      prefix = 'pre'
+      var defaultResult = 'prerelease'
+    }
+    for (var key in v1) {
+      if (key === 'major' || key === 'minor' || key === 'patch') {
+        if (v1[key] !== v2[key]) {
+          return prefix + key
+        }
+      }
+    }
+    return defaultResult // may be undefined
+  }
+}
+
+exports.compareIdentifiers = compareIdentifiers
+
+var numeric = /^[0-9]+$/
+function compareIdentifiers (a, b) {
+  var anum = numeric.test(a)
+  var bnum = numeric.test(b)
+
+  if (anum && bnum) {
+    a = +a
+    b = +b
+  }
+
+  return a === b ? 0
+    : (anum && !bnum) ? -1
+    : (bnum && !anum) ? 1
+    : a < b ? -1
+    : 1
+}
+
+exports.rcompareIdentifiers = rcompareIdentifiers
+function rcompareIdentifiers (a, b) {
+  return compareIdentifiers(b, a)
+}
+
+exports.major = major
+function major (a, loose) {
+  return new SemVer(a, loose).major
+}
+
+exports.minor = minor
+function minor (a, loose) {
+  return new SemVer(a, loose).minor
+}
+
+exports.patch = patch
+function patch (a, loose) {
+  return new SemVer(a, loose).patch
+}
+
+exports.compare = compare
+function compare (a, b, loose) {
+  return new SemVer(a, loose).compare(new SemVer(b, loose))
+}
+
+exports.compareLoose = compareLoose
+function compareLoose (a, b) {
+  return compare(a, b, true)
+}
+
+exports.compareBuild = compareBuild
+function compareBuild (a, b, loose) {
+  var versionA = new SemVer(a, loose)
+  var versionB = new SemVer(b, loose)
+  return versionA.compare(versionB) || versionA.compareBuild(versionB)
+}
+
+exports.rcompare = rcompare
+function rcompare (a, b, loose) {
+  return compare(b, a, loose)
+}
+
+exports.sort = sort
+function sort (list, loose) {
+  return list.sort(function (a, b) {
+    return exports.compareBuild(a, b, loose)
+  })
+}
+
+exports.rsort = rsort
+function rsort (list, loose) {
+  return list.sort(function (a, b) {
+    return exports.compareBuild(b, a, loose)
+  })
+}
+
+exports.gt = gt
+function gt (a, b, loose) {
+  return compare(a, b, loose) > 0
+}
+
+exports.lt = lt
+function lt (a, b, loose) {
+  return compare(a, b, loose) < 0
+}
+
+exports.eq = eq
+function eq (a, b, loose) {
+  return compare(a, b, loose) === 0
+}
+
+exports.neq = neq
+function neq (a, b, loose) {
+  return compare(a, b, loose) !== 0
+}
+
+exports.gte = gte
+function gte (a, b, loose) {
+  return compare(a, b, loose) >= 0
+}
+
+exports.lte = lte
+function lte (a, b, loose) {
+  return compare(a, b, loose) <= 0
+}
+
+exports.cmp = cmp
+function cmp (a, op, b, loose) {
+  switch (op) {
+    case '===':
+      if (typeof a === 'object')
+        a = a.version
+      if (typeof b === 'object')
+        b = b.version
+      return a === b
+
+    case '!==':
+      if (typeof a === 'object')
+        a = a.version
+      if (typeof b === 'object')
+        b = b.version
+      return a !== b
+
+    case '':
+    case '=':
+    case '==':
+      return eq(a, b, loose)
+
+    case '!=':
+      return neq(a, b, loose)
+
+    case '>':
+      return gt(a, b, loose)
+
+    case '>=':
+      return gte(a, b, loose)
+
+    case '<':
+      return lt(a, b, loose)
+
+    case '<=':
+      return lte(a, b, loose)
+
+    default:
+      throw new TypeError('Invalid operator: ' + op)
+  }
+}
+
+exports.Comparator = Comparator
+function Comparator (comp, options) {
+  if (!options || typeof options !== 'object') {
+    options = {
+      loose: !!options,
+      includePrerelease: false
+    }
+  }
+
+  if (comp instanceof Comparator) {
+    if (comp.loose === !!options.loose) {
+      return comp
+    } else {
+      comp = comp.value
+    }
+  }
+
+  if (!(this instanceof Comparator)) {
+    return new Comparator(comp, options)
+  }
+
+  comp = comp.trim().split(/\s+/).join(' ')
+  debug('comparator', comp, options)
+  this.options = options
+  this.loose = !!options.loose
+  this.parse(comp)
+
+  if (this.semver === ANY) {
+    this.value = ''
+  } else {
+    this.value = this.operator + this.semver.version
+  }
+
+  debug('comp', this)
+}
+
+var ANY = {}
+Comparator.prototype.parse = function (comp) {
+  var r = this.options.loose ? safeRe[t.COMPARATORLOOSE] : safeRe[t.COMPARATOR]
+  var m = comp.match(r)
+
+  if (!m) {
+    throw new TypeError('Invalid comparator: ' + comp)
+  }
+
+  this.operator = m[1] !== undefined ? m[1] : ''
+  if (this.operator === '=') {
+    this.operator = ''
+  }
+
+  // if it literally is just '>' or '' then allow anything.
+  if (!m[2]) {
+    this.semver = ANY
+  } else {
+    this.semver = new SemVer(m[2], this.options.loose)
+  }
+}
+
+Comparator.prototype.toString = function () {
+  return this.value
+}
+
+Comparator.prototype.test = function (version) {
+  debug('Comparator.test', version, this.options.loose)
+
+  if (this.semver === ANY || version === ANY) {
+    return true
+  }
+
+  if (typeof version === 'string') {
+    try {
+      version = new SemVer(version, this.options)
+    } catch (er) {
+      return false
+    }
+  }
+
+  return cmp(version, this.operator, this.semver, this.options)
+}
+
+Comparator.prototype.intersects = function (comp, options) {
+  if (!(comp instanceof Comparator)) {
+    throw new TypeError('a Comparator is required')
+  }
+
+  if (!options || typeof options !== 'object') {
+    options = {
+      loose: !!options,
+      includePrerelease: false
+    }
+  }
+
+  var rangeTmp
+
+  if (this.operator === '') {
+    if (this.value === '') {
+      return true
+    }
+    rangeTmp = new Range(comp.value, options)
+    return satisfies(this.value, rangeTmp, options)
+  } else if (comp.operator === '') {
+    if (comp.value === '') {
+      return true
+    }
+    rangeTmp = new Range(this.value, options)
+    return satisfies(comp.semver, rangeTmp, options)
+  }
+
+  var sameDirectionIncreasing =
+    (this.operator === '>=' || this.operator === '>') &&
+    (comp.operator === '>=' || comp.operator === '>')
+  var sameDirectionDecreasing =
+    (this.operator === '<=' || this.operator === '<') &&
+    (comp.operator === '<=' || comp.operator === '<')
+  var sameSemVer = this.semver.version === comp.semver.version
+  var differentDirectionsInclusive =
+    (this.operator === '>=' || this.operator === '<=') &&
+    (comp.operator === '>=' || comp.operator === '<=')
+  var oppositeDirectionsLessThan =
+    cmp(this.semver, '<', comp.semver, options) &&
+    ((this.operator === '>=' || this.operator === '>') &&
+    (comp.operator === '<=' || comp.operator === '<'))
+  var oppositeDirectionsGreaterThan =
+    cmp(this.semver, '>', comp.semver, options) &&
+    ((this.operator === '<=' || this.operator === '<') &&
+    (comp.operator === '>=' || comp.operator === '>'))
+
+  return sameDirectionIncreasing || sameDirectionDecreasing ||
+    (sameSemVer && differentDirectionsInclusive) ||
+    oppositeDirectionsLessThan || oppositeDirectionsGreaterThan
+}
+
+exports.Range = Range
+function Range (range, options) {
+  if (!options || typeof options !== 'object') {
+    options = {
+      loose: !!options,
+      includePrerelease: false
+    }
+  }
+
+  if (range instanceof Range) {
+    if (range.loose === !!options.loose &&
+        range.includePrerelease === !!options.includePrerelease) {
+      return range
+    } else {
+      return new Range(range.raw, options)
+    }
+  }
+
+  if (range instanceof Comparator) {
+    return new Range(range.value, options)
+  }
+
+  if (!(this instanceof Range)) {
+    return new Range(range, options)
+  }
+
+  this.options = options
+  this.loose = !!options.loose
+  this.includePrerelease = !!options.includePrerelease
+
+  // First reduce all whitespace as much as possible so we do not have to rely
+  // on potentially slow regexes like \s*. This is then stored and used for
+  // future error messages as well.
+  this.raw = range
+    .trim()
+    .split(/\s+/)
+    .join(' ')
+
+  // First, split based on boolean or ||
+  this.set = this.raw.split('||').map(function (range) {
+    return this.parseRange(range.trim())
+  }, this).filter(function (c) {
+    // throw out any that are not relevant for whatever reason
+    return c.length
+  })
+
+  if (!this.set.length) {
+    throw new TypeError('Invalid SemVer Range: ' + this.raw)
+  }
+
+  this.format()
+}
+
+Range.prototype.format = function () {
+  this.range = this.set.map(function (comps) {
+    return comps.join(' ').trim()
+  }).join('||').trim()
+  return this.range
+}
+
+Range.prototype.toString = function () {
+  return this.range
+}
+
+Range.prototype.parseRange = function (range) {
+  var loose = this.options.loose
+  // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
+  var hr = loose ? safeRe[t.HYPHENRANGELOOSE] : safeRe[t.HYPHENRANGE]
+  range = range.replace(hr, hyphenReplace)
+  debug('hyphen replace', range)
+  // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
+  range = range.replace(safeRe[t.COMPARATORTRIM], comparatorTrimReplace)
+  debug('comparator trim', range, safeRe[t.COMPARATORTRIM])
+
+  // `~ 1.2.3` => `~1.2.3`
+  range = range.replace(safeRe[t.TILDETRIM], tildeTrimReplace)
+
+  // `^ 1.2.3` => `^1.2.3`
+  range = range.replace(safeRe[t.CARETTRIM], caretTrimReplace)
+
+  // normalize spaces
+  range = range.split(/\s+/).join(' ')
+
+  // At this point, the range is completely trimmed and
+  // ready to be split into comparators.
+
+  var compRe = loose ? safeRe[t.COMPARATORLOOSE] : safeRe[t.COMPARATOR]
+  var set = range.split(' ').map(function (comp) {
+    return parseComparator(comp, this.options)
+  }, this).join(' ').split(/\s+/)
+  if (this.options.loose) {
+    // in loose mode, throw out any that are not valid comparators
+    set = set.filter(function (comp) {
+      return !!comp.match(compRe)
+    })
+  }
+  set = set.map(function (comp) {
+    return new Comparator(comp, this.options)
+  }, this)
+
+  return set
+}
+
+Range.prototype.intersects = function (range, options) {
+  if (!(range instanceof Range)) {
+    throw new TypeError('a Range is required')
+  }
+
+  return this.set.some(function (thisComparators) {
+    return (
+      isSatisfiable(thisComparators, options) &&
+      range.set.some(function (rangeComparators) {
+        return (
+          isSatisfiable(rangeComparators, options) &&
+          thisComparators.every(function (thisComparator) {
+            return rangeComparators.every(function (rangeComparator) {
+              return thisComparator.intersects(rangeComparator, options)
+            })
+          })
+        )
+      })
+    )
+  })
+}
+
+// take a set of comparators and determine whether there
+// exists a version which can satisfy it
+function isSatisfiable (comparators, options) {
+  var result = true
+  var remainingComparators = comparators.slice()
+  var testComparator = remainingComparators.pop()
+
+  while (result && remainingComparators.length) {
+    result = remainingComparators.every(function (otherComparator) {
+      return testComparator.intersects(otherComparator, options)
+    })
+
+    testComparator = remainingComparators.pop()
+  }
+
+  return result
+}
+
+// Mostly just for testing and legacy API reasons
+exports.toComparators = toComparators
+function toComparators (range, options) {
+  return new Range(range, options).set.map(function (comp) {
+    return comp.map(function (c) {
+      return c.value
+    }).join(' ').trim().split(' ')
+  })
+}
+
+// comprised of xranges, tildes, stars, and gtlt's at this point.
+// already replaced the hyphen ranges
+// turn into a set of JUST comparators.
+function parseComparator (comp, options) {
+  debug('comp', comp, options)
+  comp = replaceCarets(comp, options)
+  debug('caret', comp)
+  comp = replaceTildes(comp, options)
+  debug('tildes', comp)
+  comp = replaceXRanges(comp, options)
+  debug('xrange', comp)
+  comp = replaceStars(comp, options)
+  debug('stars', comp)
+  return comp
+}
+
+function isX (id) {
+  return !id || id.toLowerCase() === 'x' || id === '*'
+}
+
+// ~, ~> --> * (any, kinda silly)
+// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0
+// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0
+// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0
+// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0
+// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0
+function replaceTildes (comp, options) {
+  return comp.trim().split(/\s+/).map(function (comp) {
+    return replaceTilde(comp, options)
+  }).join(' ')
+}
+
+function replaceTilde (comp, options) {
+  var r = options.loose ? safeRe[t.TILDELOOSE] : safeRe[t.TILDE]
+  return comp.replace(r, function (_, M, m, p, pr) {
+    debug('tilde', comp, _, M, m, p, pr)
+    var ret
+
+    if (isX(M)) {
+      ret = ''
+    } else if (isX(m)) {
+      ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
+    } else if (isX(p)) {
+      // ~1.2 == >=1.2.0 <1.3.0
+      ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
+    } else if (pr) {
+      debug('replaceTilde pr', pr)
+      ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+            ' <' + M + '.' + (+m + 1) + '.0'
+    } else {
+      // ~1.2.3 == >=1.2.3 <1.3.0
+      ret = '>=' + M + '.' + m + '.' + p +
+            ' <' + M + '.' + (+m + 1) + '.0'
+    }
+
+    debug('tilde return', ret)
+    return ret
+  })
+}
+
+// ^ --> * (any, kinda silly)
+// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
+// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
+// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
+// ^1.2.3 --> >=1.2.3 <2.0.0
+// ^1.2.0 --> >=1.2.0 <2.0.0
+function replaceCarets (comp, options) {
+  return comp.trim().split(/\s+/).map(function (comp) {
+    return replaceCaret(comp, options)
+  }).join(' ')
+}
+
+function replaceCaret (comp, options) {
+  debug('caret', comp, options)
+  var r = options.loose ? safeRe[t.CARETLOOSE] : safeRe[t.CARET]
+  return comp.replace(r, function (_, M, m, p, pr) {
+    debug('caret', comp, _, M, m, p, pr)
+    var ret
+
+    if (isX(M)) {
+      ret = ''
+    } else if (isX(m)) {
+      ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
+    } else if (isX(p)) {
+      if (M === '0') {
+        ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
+      } else {
+        ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'
+      }
+    } else if (pr) {
+      debug('replaceCaret pr', pr)
+      if (M === '0') {
+        if (m === '0') {
+          ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+                ' <' + M + '.' + m + '.' + (+p + 1)
+        } else {
+          ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+                ' <' + M + '.' + (+m + 1) + '.0'
+        }
+      } else {
+        ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+              ' <' + (+M + 1) + '.0.0'
+      }
+    } else {
+      debug('no pr')
+      if (M === '0') {
+        if (m === '0') {
+          ret = '>=' + M + '.' + m + '.' + p +
+                ' <' + M + '.' + m + '.' + (+p + 1)
+        } else {
+          ret = '>=' + M + '.' + m + '.' + p +
+                ' <' + M + '.' + (+m + 1) + '.0'
+        }
+      } else {
+        ret = '>=' + M + '.' + m + '.' + p +
+              ' <' + (+M + 1) + '.0.0'
+      }
+    }
+
+    debug('caret return', ret)
+    return ret
+  })
+}
+
+function replaceXRanges (comp, options) {
+  debug('replaceXRanges', comp, options)
+  return comp.split(/\s+/).map(function (comp) {
+    return replaceXRange(comp, options)
+  }).join(' ')
+}
+
+function replaceXRange (comp, options) {
+  comp = comp.trim()
+  var r = options.loose ? safeRe[t.XRANGELOOSE] : safeRe[t.XRANGE]
+  return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
+    debug('xRange', comp, ret, gtlt, M, m, p, pr)
+    var xM = isX(M)
+    var xm = xM || isX(m)
+    var xp = xm || isX(p)
+    var anyX = xp
+
+    if (gtlt === '=' && anyX) {
+      gtlt = ''
+    }
+
+    // if we're including prereleases in the match, then we need
+    // to fix this to -0, the lowest possible prerelease value
+    pr = options.includePrerelease ? '-0' : ''
+
+    if (xM) {
+      if (gtlt === '>' || gtlt === '<') {
+        // nothing is allowed
+        ret = '<0.0.0-0'
+      } else {
+        // nothing is forbidden
+        ret = '*'
+      }
+    } else if (gtlt && anyX) {
+      // we know patch is an x, because we have any x at all.
+      // replace X with 0
+      if (xm) {
+        m = 0
+      }
+      p = 0
+
+      if (gtlt === '>') {
+        // >1 => >=2.0.0
+        // >1.2 => >=1.3.0
+        // >1.2.3 => >= 1.2.4
+        gtlt = '>='
+        if (xm) {
+          M = +M + 1
+          m = 0
+          p = 0
+        } else {
+          m = +m + 1
+          p = 0
+        }
+      } else if (gtlt === '<=') {
+        // <=0.7.x is actually <0.8.0, since any 0.7.x should
+        // pass.  Similarly, <=7.x is actually <8.0.0, etc.
+        gtlt = '<'
+        if (xm) {
+          M = +M + 1
+        } else {
+          m = +m + 1
+        }
+      }
+
+      ret = gtlt + M + '.' + m + '.' + p + pr
+    } else if (xm) {
+      ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr
+    } else if (xp) {
+      ret = '>=' + M + '.' + m + '.0' + pr +
+        ' <' + M + '.' + (+m + 1) + '.0' + pr
+    }
+
+    debug('xRange return', ret)
+
+    return ret
+  })
+}
+
+// Because * is AND-ed with everything else in the comparator,
+// and '' means "any version", just remove the *s entirely.
+function replaceStars (comp, options) {
+  debug('replaceStars', comp, options)
+  // Looseness is ignored here.  star is always as loose as it gets!
+  return comp.trim().replace(safeRe[t.STAR], '')
+}
+
+// This function is passed to string.replace(re[t.HYPHENRANGE])
+// M, m, patch, prerelease, build
+// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
+// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
+// 1.2 - 3.4 => >=1.2.0 <3.5.0
+function hyphenReplace ($0,
+  from, fM, fm, fp, fpr, fb,
+  to, tM, tm, tp, tpr, tb) {
+  if (isX(fM)) {
+    from = ''
+  } else if (isX(fm)) {
+    from = '>=' + fM + '.0.0'
+  } else if (isX(fp)) {
+    from = '>=' + fM + '.' + fm + '.0'
+  } else {
+    from = '>=' + from
+  }
+
+  if (isX(tM)) {
+    to = ''
+  } else if (isX(tm)) {
+    to = '<' + (+tM + 1) + '.0.0'
+  } else if (isX(tp)) {
+    to = '<' + tM + '.' + (+tm + 1) + '.0'
+  } else if (tpr) {
+    to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr
+  } else {
+    to = '<=' + to
+  }
+
+  return (from + ' ' + to).trim()
+}
+
+// if ANY of the sets match ALL of its comparators, then pass
+Range.prototype.test = function (version) {
+  if (!version) {
+    return false
+  }
+
+  if (typeof version === 'string') {
+    try {
+      version = new SemVer(version, this.options)
+    } catch (er) {
+      return false
+    }
+  }
+
+  for (var i = 0; i < this.set.length; i++) {
+    if (testSet(this.set[i], version, this.options)) {
+      return true
+    }
+  }
+  return false
+}
+
+function testSet (set, version, options) {
+  for (var i = 0; i < set.length; i++) {
+    if (!set[i].test(version)) {
+      return false
+    }
+  }
+
+  if (version.prerelease.length && !options.includePrerelease) {
+    // Find the set of versions that are allowed to have prereleases
+    // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
+    // That should allow `1.2.3-pr.2` to pass.
+    // However, `1.2.4-alpha.notready` should NOT be allowed,
+    // even though it's within the range set by the comparators.
+    for (i = 0; i < set.length; i++) {
+      debug(set[i].semver)
+      if (set[i].semver === ANY) {
+        continue
+      }
+
+      if (set[i].semver.prerelease.length > 0) {
+        var allowed = set[i].semver
+        if (allowed.major === version.major &&
+            allowed.minor === version.minor &&
+            allowed.patch === version.patch) {
+          return true
+        }
+      }
+    }
+
+    // Version has a -pre, but it's not one of the ones we like.
+    return false
+  }
+
+  return true
+}
+
+exports.satisfies = satisfies
+function satisfies (version, range, options) {
+  try {
+    range = new Range(range, options)
+  } catch (er) {
+    return false
+  }
+  return range.test(version)
+}
+
+exports.maxSatisfying = maxSatisfying
+function maxSatisfying (versions, range, options) {
+  var max = null
+  var maxSV = null
+  try {
+    var rangeObj = new Range(range, options)
+  } catch (er) {
+    return null
+  }
+  versions.forEach(function (v) {
+    if (rangeObj.test(v)) {
+      // satisfies(v, range, options)
+      if (!max || maxSV.compare(v) === -1) {
+        // compare(max, v, true)
+        max = v
+        maxSV = new SemVer(max, options)
+      }
+    }
+  })
+  return max
+}
+
+exports.minSatisfying = minSatisfying
+function minSatisfying (versions, range, options) {
+  var min = null
+  var minSV = null
+  try {
+    var rangeObj = new Range(range, options)
+  } catch (er) {
+    return null
+  }
+  versions.forEach(function (v) {
+    if (rangeObj.test(v)) {
+      // satisfies(v, range, options)
+      if (!min || minSV.compare(v) === 1) {
+        // compare(min, v, true)
+        min = v
+        minSV = new SemVer(min, options)
+      }
+    }
+  })
+  return min
+}
+
+exports.minVersion = minVersion
+function minVersion (range, loose) {
+  range = new Range(range, loose)
+
+  var minver = new SemVer('0.0.0')
+  if (range.test(minver)) {
+    return minver
+  }
+
+  minver = new SemVer('0.0.0-0')
+  if (range.test(minver)) {
+    return minver
+  }
+
+  minver = null
+  for (var i = 0; i < range.set.length; ++i) {
+    var comparators = range.set[i]
+
+    comparators.forEach(function (comparator) {
+      // Clone to avoid manipulating the comparator's semver object.
+      var compver = new SemVer(comparator.semver.version)
+      switch (comparator.operator) {
+        case '>':
+          if (compver.prerelease.length === 0) {
+            compver.patch++
+          } else {
+            compver.prerelease.push(0)
+          }
+          compver.raw = compver.format()
+          /* fallthrough */
+        case '':
+        case '>=':
+          if (!minver || gt(minver, compver)) {
+            minver = compver
+          }
+          break
+        case '<':
+        case '<=':
+          /* Ignore maximum versions */
+          break
+        /* istanbul ignore next */
+        default:
+          throw new Error('Unexpected operation: ' + comparator.operator)
+      }
+    })
+  }
+
+  if (minver && range.test(minver)) {
+    return minver
+  }
+
+  return null
+}
+
+exports.validRange = validRange
+function validRange (range, options) {
+  try {
+    // Return '*' instead of '' so that truthiness works.
+    // This will throw if it's invalid anyway
+    return new Range(range, options).range || '*'
+  } catch (er) {
+    return null
+  }
+}
+
+// Determine if version is less than all the versions possible in the range
+exports.ltr = ltr
+function ltr (version, range, options) {
+  return outside(version, range, '<', options)
+}
+
+// Determine if version is greater than all the versions possible in the range.
+exports.gtr = gtr
+function gtr (version, range, options) {
+  return outside(version, range, '>', options)
+}
+
+exports.outside = outside
+function outside (version, range, hilo, options) {
+  version = new SemVer(version, options)
+  range = new Range(range, options)
+
+  var gtfn, ltefn, ltfn, comp, ecomp
+  switch (hilo) {
+    case '>':
+      gtfn = gt
+      ltefn = lte
+      ltfn = lt
+      comp = '>'
+      ecomp = '>='
+      break
+    case '<':
+      gtfn = lt
+      ltefn = gte
+      ltfn = gt
+      comp = '<'
+      ecomp = '<='
+      break
+    default:
+      throw new TypeError('Must provide a hilo val of "<" or ">"')
+  }
+
+  // If it satisifes the range it is not outside
+  if (satisfies(version, range, options)) {
+    return false
+  }
+
+  // From now on, variable terms are as if we're in "gtr" mode.
+  // but note that everything is flipped for the "ltr" function.
+
+  for (var i = 0; i < range.set.length; ++i) {
+    var comparators = range.set[i]
+
+    var high = null
+    var low = null
+
+    comparators.forEach(function (comparator) {
+      if (comparator.semver === ANY) {
+        comparator = new Comparator('>=0.0.0')
+      }
+      high = high || comparator
+      low = low || comparator
+      if (gtfn(comparator.semver, high.semver, options)) {
+        high = comparator
+      } else if (ltfn(comparator.semver, low.semver, options)) {
+        low = comparator
+      }
+    })
+
+    // If the edge version comparator has a operator then our version
+    // isn't outside it
+    if (high.operator === comp || high.operator === ecomp) {
+      return false
+    }
+
+    // If the lowest version comparator has an operator and our version
+    // is less than it then it isn't higher than the range
+    if ((!low.operator || low.operator === comp) &&
+        ltefn(version, low.semver)) {
+      return false
+    } else if (low.operator === ecomp && ltfn(version, low.semver)) {
+      return false
+    }
+  }
+  return true
+}
+
+exports.prerelease = prerelease
+function prerelease (version, options) {
+  var parsed = parse(version, options)
+  return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
+}
+
+exports.intersects = intersects
+function intersects (r1, r2, options) {
+  r1 = new Range(r1, options)
+  r2 = new Range(r2, options)
+  return r1.intersects(r2)
+}
+
+exports.coerce = coerce
+function coerce (version, options) {
+  if (version instanceof SemVer) {
+    return version
+  }
+
+  if (typeof version === 'number') {
+    version = String(version)
+  }
+
+  if (typeof version !== 'string') {
+    return null
+  }
+
+  options = options || {}
+
+  var match = null
+  if (!options.rtl) {
+    match = version.match(safeRe[t.COERCE])
+  } else {
+    // Find the right-most coercible string that does not share
+    // a terminus with a more left-ward coercible string.
+    // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'
+    //
+    // Walk through the string checking with a /g regexp
+    // Manually set the index so as to pick up overlapping matches.
+    // Stop when we get a match that ends at the string end, since no
+    // coercible string can be more right-ward without the same terminus.
+    var next
+    while ((next = safeRe[t.COERCERTL].exec(version)) &&
+      (!match || match.index + match[0].length !== version.length)
+    ) {
+      if (!match ||
+          next.index + next[0].length !== match.index + match[0].length) {
+        match = next
+      }
+      safeRe[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length
+    }
+    // leave it in a clean state
+    safeRe[t.COERCERTL].lastIndex = -1
+  }
+
+  if (match === null) {
+    return null
+  }
+
+  return parse(match[2] +
+    '.' + (match[3] || '0') +
+    '.' + (match[4] || '0'), options)
+}
Index: frontend/node_modules/@babel/helper-create-class-features-plugin/package.json
===================================================================
--- frontend/node_modules/@babel/helper-create-class-features-plugin/package.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/@babel/helper-create-class-features-plugin/package.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,43 @@
+{
+  "name": "@babel/helper-create-class-features-plugin",
+  "version": "7.29.3",
+  "author": "The Babel Team (https://babel.dev/team)",
+  "license": "MIT",
+  "description": "Compile class public and private fields, private methods and decorators to ES6",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-create-class-features-plugin"
+  },
+  "main": "./lib/index.js",
+  "publishConfig": {
+    "access": "public"
+  },
+  "keywords": [
+    "babel",
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-annotate-as-pure": "^7.27.3",
+    "@babel/helper-member-expression-to-functions": "^7.28.5",
+    "@babel/helper-optimise-call-expression": "^7.27.1",
+    "@babel/helper-replace-supers": "^7.28.6",
+    "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
+    "@babel/traverse": "^7.29.0",
+    "semver": "^6.3.1"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.29.0",
+    "@babel/helper-plugin-test-runner": "^7.27.1",
+    "@babel/preset-env": "^7.29.3",
+    "@types/charcodes": "^0.2.0",
+    "charcodes": "^0.2.0"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "type": "commonjs"
+}
