diff --git a/.gitignore b/.gitignore index b2129b8e9..76c372b86 100644 --- a/.gitignore +++ b/.gitignore @@ -59,6 +59,8 @@ examples/nodejs/*.ifc tests/ifcfiles/private/*.ifc tests/ifcfiles/private/*.stl tests/ifcfiles/created.ifc +src/cpp/_deps/ +yarn.lock #external dependencies downloaded by Cmake src/cpp/_deps/cdt-src/ @@ -67,4 +69,4 @@ src/cpp/_deps/fastfloat-src/ src/cpp/_deps/glm-src/ src/cpp/_deps/spdlog-src/ src/cpp/_deps/tinycpptest-src/ -src/cpp/_deps/tinynurbs-src/ +src/cpp/_deps/tinynurbs-src/ \ No newline at end of file diff --git a/src/cpp/web-ifc/geometry/IfcGeometryProcessor.cpp b/src/cpp/web-ifc/geometry/IfcGeometryProcessor.cpp index 0d06a5f53..4148882d9 100644 --- a/src/cpp/web-ifc/geometry/IfcGeometryProcessor.cpp +++ b/src/cpp/web-ifc/geometry/IfcGeometryProcessor.cpp @@ -1044,6 +1044,7 @@ namespace webifc::geometry return mesh; } case schema::IFCGEOMETRICSET: + case schema::IFCGEOMETRICCURVESET: { _loader.MoveToArgumentOffset(expressID, 0); auto items = _loader.GetSetArgument(); @@ -1138,8 +1139,7 @@ namespace webifc::geometry case schema::IFCTEXTLITERALWITHEXTENT: // TODO: save string of the text literal in IfcComposedMesh return mesh; - - default: + default: spdlog::error("[GetMesh()] unexpected mesh type {}", expressID, lineType); break; } @@ -1536,7 +1536,7 @@ namespace webifc::geometry return IfcSurface(); } - IfcFlatMesh IfcGeometryProcessor::GetFlatMesh(uint32_t expressID) + IfcFlatMesh IfcGeometryProcessor::GetFlatMesh(uint32_t expressID, bool applyLinearScalingFactor) { spdlog::debug("[GetFlatMesh({})]",expressID); IfcFlatMesh flatMesh; @@ -1544,7 +1544,11 @@ namespace webifc::geometry IfcComposedMesh composedMesh = GetMesh(expressID); - glm::dmat4 mat = glm::scale(glm::dvec3(_geometryLoader.GetLinearScalingFactor())); + glm::dmat4 mat = glm::dmat4(1); + if (applyLinearScalingFactor) + { + mat = glm::scale(glm::dvec3(_geometryLoader.GetLinearScalingFactor()));; + } AddComposedMeshToFlatMesh(flatMesh, composedMesh, _transformation * NormalizeIFC * mat); diff --git a/src/cpp/web-ifc/geometry/IfcGeometryProcessor.h b/src/cpp/web-ifc/geometry/IfcGeometryProcessor.h index 7b9652daa..7a93db8fe 100644 --- a/src/cpp/web-ifc/geometry/IfcGeometryProcessor.h +++ b/src/cpp/web-ifc/geometry/IfcGeometryProcessor.h @@ -39,7 +39,7 @@ namespace webifc::geometry IfcGeometryProcessor(const webifc::parsing::IfcLoader &loader,const webifc::schema::IfcSchemaManager &schemaManager,uint16_t circleSegments,bool coordinateToOrigin); IfcGeometry &GetGeometry(uint32_t expressID); IfcGeometryLoader GetLoader() const; - IfcFlatMesh GetFlatMesh(uint32_t expressID); + IfcFlatMesh GetFlatMesh(uint32_t expressID, bool applyLinearScalingFactor = true); IfcComposedMesh GetMesh(uint32_t expressID); void SetTransformation(const std::array &val); std::array GetFlatCoordinationMatrix() const; diff --git a/src/cpp/web-ifc/geometry/nurbs.h b/src/cpp/web-ifc/geometry/nurbs.h index 15b9c6558..b7cd9a22c 100644 --- a/src/cpp/web-ifc/geometry/nurbs.h +++ b/src/cpp/web-ifc/geometry/nurbs.h @@ -13,10 +13,10 @@ namespace tinynurbs{ namespace webifc::geometry{ - class IfcGeometry; - class IfcBound3D; - class BSpline; - class IfcSurface; + struct IfcGeometry; + struct IfcBound3D; + struct BSpline; + struct IfcSurface; constexpr double rotations { 6.0 }; constexpr auto pi {glm::pi()}; diff --git a/src/cpp/web-ifc/geometry/operations/geometryutils.h b/src/cpp/web-ifc/geometry/operations/geometryutils.h index 32ee94822..57ba7c5e6 100644 --- a/src/cpp/web-ifc/geometry/operations/geometryutils.h +++ b/src/cpp/web-ifc/geometry/operations/geometryutils.h @@ -152,7 +152,9 @@ namespace webifc::geometry // this is bad news, as it nans the points added to the final mesh // also, it's hard to bail out now :/ // see curve.add() for more info on how this is currently "solved" +#if defined(_DEBUG) printf("NaN perp!\n"); +#endif } glm::dvec3 u1 = glm::normalize(glm::cross(n1, p)); @@ -363,7 +365,9 @@ namespace webifc::geometry // this is bad news, as it nans the points added to the final mesh // also, it's hard to bail out now :/ // see curve.add() for more info on how this is currently "solved" +#if defined(_DEBUG) printf("NaN perp!\n"); +#endif } glm::dvec3 u1 = glm::normalize(glm::cross(n1, p)); @@ -824,6 +828,12 @@ namespace webifc::geometry IfcGeometry geom; std::vector holesIndicesHash; + // check if first point is equal to last point, otherwise the outer loop of the shape is not closed + glm::dvec3 lastToFirstPoint = profile.curve.points.front() - profile.curve.points.back(); + if (glm::length(lastToFirstPoint) > 1e-8) { + profile.curve.points.push_back(profile.curve.points.front()); + } + // build the caps { using Point = std::array; @@ -951,12 +961,12 @@ namespace webifc::geometry // this winding should be correct geom.AddFace(geom.GetPoint(tl), - geom.GetPoint(br), - geom.GetPoint(bl)); + geom.GetPoint(br), + geom.GetPoint(bl)); geom.AddFace(geom.GetPoint(tl), - geom.GetPoint(tr), - geom.GetPoint(br)); + geom.GetPoint(tr), + geom.GetPoint(br)); } return geom; diff --git a/src/cpp/web-ifc/geometry/operations/mesh_utils.h b/src/cpp/web-ifc/geometry/operations/mesh_utils.h index a7481c196..d1e9b7b64 100644 --- a/src/cpp/web-ifc/geometry/operations/mesh_utils.h +++ b/src/cpp/web-ifc/geometry/operations/mesh_utils.h @@ -184,10 +184,23 @@ namespace webifc::geometry for (int r = 0; r < numRots - 1; r++) { int r1 = r + 1; - for (size_t s = 0; s < newPoints[r].size() - 1; s++) - { - geometry.AddFace(newPoints[r][s], newPoints[r][s + 1], newPoints[r1][s]); - geometry.AddFace(newPoints[r1][s], newPoints[r][s + 1], newPoints[r1][s + 1]); + if (r1 >= newPoints.size()) { + break; + } + const std::vector& newPointsR = newPoints[r]; + const std::vector& newPointsR1 = newPoints[r1]; + if (newPointsR.size() > 0) { + for (size_t s = 0; s < newPointsR.size() - 1; s++) + { + if (s + 1 >= newPointsR.size()) { + break; + } + if (s + 1 >= newPointsR1.size()) { + break; + } + geometry.AddFace(newPointsR[s], newPointsR[s + 1], newPointsR1[s]); + geometry.AddFace(newPointsR1[s], newPointsR[s + 1], newPointsR1[s + 1]); + } } } } diff --git a/src/cpp/web-ifc/geometry/representation/IfcGeometry.h b/src/cpp/web-ifc/geometry/representation/IfcGeometry.h index 3841958e2..1ff3c5d53 100644 --- a/src/cpp/web-ifc/geometry/representation/IfcGeometry.h +++ b/src/cpp/web-ifc/geometry/representation/IfcGeometry.h @@ -56,9 +56,9 @@ namespace webifc::geometry { std::vector indexData; std::vector planeData; std::vector planes; - - bool hasPlanes = false; + bool isPolygon = false; + bool hasPlanes = false; uint32_t numPoints = 0; uint32_t numFaces = 0; diff --git a/src/cpp/web-ifc/parsing/IfcLoader.cpp b/src/cpp/web-ifc/parsing/IfcLoader.cpp index cda0a0d88..0920bc611 100644 --- a/src/cpp/web-ifc/parsing/IfcLoader.cpp +++ b/src/cpp/web-ifc/parsing/IfcLoader.cpp @@ -673,6 +673,7 @@ namespace webifc::parsing { GetSetArgument(); noArguments++; continue; + } if (t == IfcTokenType::STRING || t == IfcTokenType::INTEGER || t == IfcTokenType::REAL || t == IfcTokenType::LABEL || t == IfcTokenType::ENUM) { uint16_t length = _tokenStream->Read(); diff --git a/tests/regression/results.json b/tests/regression/results.json index 19a2abda4..ffbf58347 100644 --- a/tests/regression/results.json +++ b/tests/regression/results.json @@ -1 +1 @@ -{"tests/ifcfiles/public/AC20-FZK-Haus.ifc":"6bf7a4d4e18776a6952914fd03acd96f81623ca5da6e5a7876fe4e64fd8df22e","tests/ifcfiles/public/C20-Institute-Var-2.ifc":"288a7ba65b562e1bdd6548f60f0e2339306578625cb445670f0bbf1c8a4560c3","tests/ifcfiles/public/FM_ARC_DigitalHub.ifc":"84426eba85d565dc882022c5a41f17e82bc96d859ed9ca906fbf42b4461f28c6","tests/ifcfiles/public/ISSUE_005_haus.ifc":"6bf7a4d4e18776a6952914fd03acd96f81623ca5da6e5a7876fe4e64fd8df22e","tests/ifcfiles/public/ISSUE_021_Mini Project.ifc":"b5076f409b371d847cb453a9ab9a8d9de9d1c0eb27748ba7adc65571e0555a37","tests/ifcfiles/public/ISSUE_034_HouseZ.ifc":"ef512e88e26c916849445d3b741dd7979ee8a0dbf79ca788502092f84ea8f92b","tests/ifcfiles/public/ISSUE_044_test_IFCCOMPOSITEPROFILEDEF.ifc":"1b10710a3237960ed421ed8069bfd7ba2fa42cf15a52ef2139c8b3ed887e9b85","tests/ifcfiles/public/ISSUE_053_20181220Holter_Tower_10.ifc":"5a7a3711e8841135cc86bf92ba0ae9acc7e97b7a069927a64678c17653d3e609","tests/ifcfiles/public/ISSUE_068_ARK_NUS_skolebygg.ifc":"cd3081a53bd5667173caf391b17c5b1878fef4bfc252ef8330556e39afbd7c0d","tests/ifcfiles/public/ISSUE_102_M3D-CON-CD.ifc":"6e9612de56c08323e96b21e8f4097e42964bdf93066d460ddb0e7c184abdd15b","tests/ifcfiles/public/ISSUE_102_M3D-CON.ifc":"c83a0f31c6a52928fb9797456689c69c63d156c5bdf53cb49a83ed10d9e5bc23","tests/ifcfiles/public/ISSUE_126_model.ifc":"78e336de53ec658f2cd8fb51d5e2797ae1b5832cdadcdc22e7d0330a275a9545","tests/ifcfiles/public/ISSUE_129_N1540_17_EXE_MOD_448200_02_09_11SMC_IGC_V17.ifc":"a36fc248e0a8012045cd11f54ad0e9ed9fd7d7e7729a100599742fa8b06b4971","tests/ifcfiles/public/ISSUE_159_kleine_Wohnung_R22.ifc":"54d99140a79b693ebfbf92cab677e8579ad9b1a07f0654613b0bd519c4a8eafb","tests/ifcfiles/public/ISSUE_171_IfcSurfaceCurveSweptAreaSolid.ifc":"f2db8111ba05365cc54a6bcf8aade27764acfb615889f9302088aa1f1aa57c50","tests/ifcfiles/public/IfcOpenHouse_IFC4.ifc":"a9d854a4e47646bdc613aeca3c385474e851ac22b98bb8b7d783f7fee2f42c60","tests/ifcfiles/public/KIT-Simple-Road-Test-Web-IFC4x3_RC2.ifc":"3d8707ee9d70e2aeb67b8bebdc96016a1eceb30afd9a25e9cf6c258d978a6fe6","tests/ifcfiles/public/Office_A_20110811.ifc":"347c5e27081f0e29460124352781054ad2e00c0c09316b20f1981ae4e86a22ee","tests/ifcfiles/public/S_Office_Integrated Design Archi.ifc":"62cb878a60d880d989797a00f0faacdf5ad01a7f9ee1131e6804977366fb509a","tests/ifcfiles/public/Sample_entities.ifc":"270a55940a77ebb4f245cabf8c7429dc8fc7044baf9c9434fc747842f602d792","tests/ifcfiles/public/advanced_model.ifc":"c3247ec09d381688bb901d3bd85ae51a01dba70105cd9274b8cfd194ba94da12","tests/ifcfiles/public/dental_clinic.ifc":"757f4eccbbf9cd59806bee813e902cb13b6ace71bac106e4bce109764a79fbb2","tests/ifcfiles/public/duplex.ifc":"1da1e60682e4be608affcc697e79d24b76b984d7cc9cd465c3b97499a3a681ed","tests/ifcfiles/public/example.ifc":"4b9ab3d47e0b8e82fe2cb9a69ef452192204891528a291e989ccbc02aae27391","tests/ifcfiles/public/ifcbridge-model01.ifc":"00c016be5509e4145b3662dbdeedd67e7e60e6648ad1c247d6a41e41657b7e33","tests/ifcfiles/public/schependomlaan.ifc":"a0c7e4f336323a772f2dde464ed8919c4c5d3b3d4b62342129a4da73f5526880","tests/ifcfiles/public/tested_sample_project.ifc":"c4bf6c87a2e09795f0d854dc2c6eeb92829790c565ff86b1e03007648729bb26"} \ No newline at end of file +{"tests/ifcfiles/public/AC20-FZK-Haus.ifc":"6bf7a4d4e18776a6952914fd03acd96f81623ca5da6e5a7876fe4e64fd8df22e","tests/ifcfiles/public/C20-Institute-Var-2.ifc":"288a7ba65b562e1bdd6548f60f0e2339306578625cb445670f0bbf1c8a4560c3","tests/ifcfiles/public/FM_ARC_DigitalHub.ifc":"84426eba85d565dc882022c5a41f17e82bc96d859ed9ca906fbf42b4461f28c6","tests/ifcfiles/public/ISSUE_005_haus.ifc":"6bf7a4d4e18776a6952914fd03acd96f81623ca5da6e5a7876fe4e64fd8df22e","tests/ifcfiles/public/ISSUE_021_Mini Project.ifc":"b5076f409b371d847cb453a9ab9a8d9de9d1c0eb27748ba7adc65571e0555a37","tests/ifcfiles/public/ISSUE_034_HouseZ.ifc":"ef512e88e26c916849445d3b741dd7979ee8a0dbf79ca788502092f84ea8f92b","tests/ifcfiles/public/ISSUE_044_test_IFCCOMPOSITEPROFILEDEF.ifc":"1b10710a3237960ed421ed8069bfd7ba2fa42cf15a52ef2139c8b3ed887e9b85","tests/ifcfiles/public/ISSUE_053_20181220Holter_Tower_10.ifczip":"5a7a3711e8841135cc86bf92ba0ae9acc7e97b7a069927a64678c17653d3e609","tests/ifcfiles/public/ISSUE_068_ARK_NUS_skolebygg.ifc":"cd3081a53bd5667173caf391b17c5b1878fef4bfc252ef8330556e39afbd7c0d","tests/ifcfiles/public/ISSUE_102_M3D-CON-CD.ifc":"6e9612de56c08323e96b21e8f4097e42964bdf93066d460ddb0e7c184abdd15b","tests/ifcfiles/public/ISSUE_102_M3D-CON.ifc":"c83a0f31c6a52928fb9797456689c69c63d156c5bdf53cb49a83ed10d9e5bc23","tests/ifcfiles/public/ISSUE_126_model.ifc":"78e336de53ec658f2cd8fb51d5e2797ae1b5832cdadcdc22e7d0330a275a9545","tests/ifcfiles/public/ISSUE_129_N1540_17_EXE_MOD_448200_02_09_11SMC_IGC_V17.ifc":"6c310c323e8291cbfc0d05b0afa33f98249a14c8274a089eb9350f9cd03a214e","tests/ifcfiles/public/ISSUE_159_kleine_Wohnung_R22.ifc":"54d99140a79b693ebfbf92cab677e8579ad9b1a07f0654613b0bd519c4a8eafb","tests/ifcfiles/public/ISSUE_171_IfcSurfaceCurveSweptAreaSolid.ifc":"f2db8111ba05365cc54a6bcf8aade27764acfb615889f9302088aa1f1aa57c50","tests/ifcfiles/public/IfcOpenHouse_IFC4.ifc":"a9d854a4e47646bdc613aeca3c385474e851ac22b98bb8b7d783f7fee2f42c60","tests/ifcfiles/public/KIT-Simple-Road-Test-Web-IFC4x3_RC2.ifc":"3d8707ee9d70e2aeb67b8bebdc96016a1eceb30afd9a25e9cf6c258d978a6fe6","tests/ifcfiles/public/Office_A_20110811.ifc":"347c5e27081f0e29460124352781054ad2e00c0c09316b20f1981ae4e86a22ee","tests/ifcfiles/public/S_Office_Integrated Design Archi.ifc":"62cb878a60d880d989797a00f0faacdf5ad01a7f9ee1131e6804977366fb509a","tests/ifcfiles/public/Sample_entities.ifc":"270a55940a77ebb4f245cabf8c7429dc8fc7044baf9c9434fc747842f602d792","tests/ifcfiles/public/advanced_model.ifc":"c3247ec09d381688bb901d3bd85ae51a01dba70105cd9274b8cfd194ba94da12","tests/ifcfiles/public/dental_clinic.ifc":"757f4eccbbf9cd59806bee813e902cb13b6ace71bac106e4bce109764a79fbb2","tests/ifcfiles/public/duplex.ifc":"1da1e60682e4be608affcc697e79d24b76b984d7cc9cd465c3b97499a3a681ed","tests/ifcfiles/public/example.ifc":"4b9ab3d47e0b8e82fe2cb9a69ef452192204891528a291e989ccbc02aae27391","tests/ifcfiles/public/ifcbridge-model01.ifc":"00c016be5509e4145b3662dbdeedd67e7e60e6648ad1c247d6a41e41657b7e33","tests/ifcfiles/public/schependomlaan.ifc":"a0c7e4f336323a772f2dde464ed8919c4c5d3b3d4b62342129a4da73f5526880","tests/ifcfiles/public/tested_sample_project.ifc":"c4bf6c87a2e09795f0d854dc2c6eeb92829790c565ff86b1e03007648729bb26"} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index b5d91ed42..1f7bea5a2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -29,10 +29,10 @@ "@babel/compat-data@^7.26.8": version "7.26.8" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.8.tgz#821c1d35641c355284d4a870b8a4a7b0c141e367" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz" integrity sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ== -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0": +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0", "@babel/core@>=7.0.0-beta.0 <8": version "7.26.10" resolved "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz" integrity sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ== @@ -55,7 +55,7 @@ "@babel/generator@^7.26.10", "@babel/generator@^7.27.0", "@babel/generator@^7.7.2": version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.0.tgz#764382b5392e5b9aff93cadb190d0745866cbc2c" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz" integrity sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw== dependencies: "@babel/parser" "^7.27.0" @@ -66,7 +66,7 @@ "@babel/helper-compilation-targets@^7.26.5": version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz#de0c753b1cd1d9ab55d473c5a5cf7170f0a81880" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz" integrity sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA== dependencies: "@babel/compat-data" "^7.26.8" @@ -114,7 +114,7 @@ "@babel/helpers@^7.26.10": version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.0.tgz#53d156098defa8243eab0f32fa17589075a1b808" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz" integrity sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg== dependencies: "@babel/template" "^7.27.0" @@ -122,7 +122,7 @@ "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.26.10", "@babel/parser@^7.27.0": version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.0.tgz#3d7d6ee268e41d2600091cbd4e145ffee85a44ec" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz" integrity sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg== dependencies: "@babel/types" "^7.27.0" @@ -241,7 +241,7 @@ "@babel/template@^7.26.9", "@babel/template@^7.27.0", "@babel/template@^7.3.3": version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.0.tgz#b253e5406cc1df1c57dcd18f11760c2dbf40c0b4" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz" integrity sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA== dependencies: "@babel/code-frame" "^7.26.2" @@ -250,7 +250,7 @@ "@babel/traverse@^7.25.9", "@babel/traverse@^7.26.10", "@babel/traverse@^7.7.2": version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.0.tgz#11d7e644779e166c0442f9a07274d02cd91d4a70" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz" integrity sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA== dependencies: "@babel/code-frame" "^7.26.2" @@ -263,7 +263,7 @@ "@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.9", "@babel/types@^7.26.10", "@babel/types@^7.27.0", "@babel/types@^7.3.3": version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.0.tgz#ef9acb6b06c3173f6632d993ecb6d4ae470b4559" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz" integrity sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg== dependencies: "@babel/helper-string-parser" "^7.25.9" @@ -281,131 +281,11 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@esbuild/aix-ppc64@0.25.2": - version "0.25.2" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz#b87036f644f572efb2b3c75746c97d1d2d87ace8" - integrity sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag== - -"@esbuild/android-arm64@0.25.2": - version "0.25.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz#5ca7dc20a18f18960ad8d5e6ef5cf7b0a256e196" - integrity sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w== - -"@esbuild/android-arm@0.25.2": - version "0.25.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.2.tgz#3c49f607b7082cde70c6ce0c011c362c57a194ee" - integrity sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA== - -"@esbuild/android-x64@0.25.2": - version "0.25.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.2.tgz#8a00147780016aff59e04f1036e7cb1b683859e2" - integrity sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg== - "@esbuild/darwin-arm64@0.25.2": version "0.25.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz#486efe7599a8d90a27780f2bb0318d9a85c6c423" + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz" integrity sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA== -"@esbuild/darwin-x64@0.25.2": - version "0.25.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz#95ee222aacf668c7a4f3d7ee87b3240a51baf374" - integrity sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA== - -"@esbuild/freebsd-arm64@0.25.2": - version "0.25.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz#67efceda8554b6fc6a43476feba068fb37fa2ef6" - integrity sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w== - -"@esbuild/freebsd-x64@0.25.2": - version "0.25.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz#88a9d7ecdd3adadbfe5227c2122d24816959b809" - integrity sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ== - -"@esbuild/linux-arm64@0.25.2": - version "0.25.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz#87be1099b2bbe61282333b084737d46bc8308058" - integrity sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g== - -"@esbuild/linux-arm@0.25.2": - version "0.25.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz#72a285b0fe64496e191fcad222185d7bf9f816f6" - integrity sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g== - -"@esbuild/linux-ia32@0.25.2": - version "0.25.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz#337a87a4c4dd48a832baed5cbb022be20809d737" - integrity sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ== - -"@esbuild/linux-loong64@0.25.2": - version "0.25.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz#1b81aa77103d6b8a8cfa7c094ed3d25c7579ba2a" - integrity sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w== - -"@esbuild/linux-mips64el@0.25.2": - version "0.25.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz#afbe380b6992e7459bf7c2c3b9556633b2e47f30" - integrity sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q== - -"@esbuild/linux-ppc64@0.25.2": - version "0.25.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz#6bf8695cab8a2b135cca1aa555226dc932d52067" - integrity sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g== - -"@esbuild/linux-riscv64@0.25.2": - version "0.25.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz#43c2d67a1a39199fb06ba978aebb44992d7becc3" - integrity sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw== - -"@esbuild/linux-s390x@0.25.2": - version "0.25.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz#419e25737ec815c6dce2cd20d026e347cbb7a602" - integrity sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q== - -"@esbuild/linux-x64@0.25.2": - version "0.25.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz#22451f6edbba84abe754a8cbd8528ff6e28d9bcb" - integrity sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg== - -"@esbuild/netbsd-arm64@0.25.2": - version "0.25.2" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz#744affd3b8d8236b08c5210d828b0698a62c58ac" - integrity sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw== - -"@esbuild/netbsd-x64@0.25.2": - version "0.25.2" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz#dbbe7521fd6d7352f34328d676af923fc0f8a78f" - integrity sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg== - -"@esbuild/openbsd-arm64@0.25.2": - version "0.25.2" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz#f9caf987e3e0570500832b487ce3039ca648ce9f" - integrity sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg== - -"@esbuild/openbsd-x64@0.25.2": - version "0.25.2" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz#d2bb6a0f8ffea7b394bb43dfccbb07cabd89f768" - integrity sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw== - -"@esbuild/sunos-x64@0.25.2": - version "0.25.2" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz#49b437ed63fe333b92137b7a0c65a65852031afb" - integrity sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA== - -"@esbuild/win32-arm64@0.25.2": - version "0.25.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz#081424168463c7d6c7fb78f631aede0c104373cf" - integrity sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q== - -"@esbuild/win32-ia32@0.25.2": - version "0.25.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz#3f9e87143ddd003133d21384944a6c6cadf9693f" - integrity sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg== - -"@esbuild/win32-x64@0.25.2": - version "0.25.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz#839f72c2decd378f86b8f525e1979a97b920c67d" - integrity sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA== - "@hapi/bourne@^3.0.0": version "3.0.0" resolved "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz" @@ -632,14 +512,6 @@ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz" integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": version "0.3.25" resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz" @@ -648,6 +520,14 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@koa/cors@^5.0.0": version "5.0.0" resolved "https://registry.npmjs.org/@koa/cors/-/cors-5.0.0.tgz" @@ -663,7 +543,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -809,7 +689,7 @@ "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": version "7.20.7" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.7.tgz#968cdc2366ec3da159f61166428ee40f370e56c2" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz" integrity sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng== dependencies: "@babel/types" "^7.20.7" @@ -847,7 +727,7 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^27.5.2": +"@types/jest@^27.0.0", "@types/jest@^27.5.2": version "27.5.2" resolved "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz" integrity sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA== @@ -864,7 +744,7 @@ "@types/node@*": version "22.13.14" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.13.14.tgz#70d84ec91013dcd2ba2de35532a5a14c2b4cc912" + resolved "https://registry.npmjs.org/@types/node/-/node-22.13.14.tgz" integrity sha512-Zs/Ollc1SJ8nKUAgc7ivOEdIBM8JAKgrqqUYi2J997JuKO7/tpQC+WCetQ1sypiKCQWHdvdg9wBNpUPEWZae7w== dependencies: undici-types "~6.20.0" @@ -930,17 +810,9 @@ "@webgpu/types@*": version "0.1.60" - resolved "https://registry.yarnpkg.com/@webgpu/types/-/types-0.1.60.tgz#4f58e763ce060a81b03ab7ee1ad879c7024923fd" + resolved "https://registry.npmjs.org/@webgpu/types/-/types-0.1.60.tgz" integrity sha512-8B/tdfRFKdrnejqmvq95ogp8tf52oZ51p3f4QD5m5Paey/qlX4Rhhy5Y8tgFMi7Ms70HzcMMw3EQjH/jdhTwlA== -JSONStream@^1.3.5: - version "1.3.5" - resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - abab@^2.0.3, abab@^2.0.5: version "2.0.6" resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" @@ -1097,7 +969,7 @@ asynckit@^0.4.0: resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -babel-jest@^27.5.1: +babel-jest@^27.5.1, "babel-jest@>=27.0.0 <28": version "27.5.1" resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz" integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== @@ -1205,7 +1077,7 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.24.0: +browserslist@^4.24.0, "browserslist@>= 4.21.0": version "4.24.4" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz" integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A== @@ -1244,7 +1116,7 @@ byte-size@^9.0.0: resolved "https://registry.npmjs.org/byte-size/-/byte-size-9.0.1.tgz" integrity sha512-YLe9x3rabBrcI0cueCdLS2l5ONUKywcRpTs02B8KP9/Cimhj7o3ZccGrPnRvcbyHMbb7W79/3MUJl7iGgTXKEw== -bytes@3.1.2, bytes@^3.1.2: +bytes@^3.1.2, bytes@3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== @@ -1290,7 +1162,7 @@ camelcase@^6.2.0: caniuse-lite@^1.0.30001688: version "1.0.30001707" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz#c5e104d199e6f4355a898fcd995a066c7eb9bf41" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz" integrity sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw== ccount@^2.0.0: @@ -1557,20 +1429,13 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" -debug@*, debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: +debug@*, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@4: version "4.4.0" resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz" integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== dependencies: ms "^2.1.3" -debug@2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - debug@^3.1.0: version "3.2.7" resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" @@ -1578,6 +1443,13 @@ debug@^3.1.0: dependencies: ms "^2.1.1" +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + decimal.js@^10.2.1: version "10.5.0" resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz" @@ -1618,7 +1490,7 @@ delegates@^1.0.0: resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== -depd@2.0.0, depd@^2.0.0, depd@~2.0.0: +depd@^2.0.0, depd@~2.0.0, depd@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== @@ -1695,7 +1567,7 @@ ee-first@1.1.1: electron-to-chromium@^1.5.73: version "1.5.128" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.128.tgz#8ea537b369c32527b3cc47df7973bffe5d3c2980" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.128.tgz" integrity sha512-bo1A4HH/NS522Ws0QNFIzyPcyUUNV/yyy70Ho1xqfGYzPUme2F/xr4tlEOuM6/A538U1vDA7a4XfCd1CKRegKQ== emittery@^0.8.1: @@ -1764,7 +1636,7 @@ es-set-tostringtag@^2.1.0: esbuild@^0.25.0: version "0.25.2" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.2.tgz#55a1d9ebcb3aa2f95e8bba9e900c1a5061bc168b" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz" integrity sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ== optionalDependencies: "@esbuild/aix-ppc64" "0.25.2" @@ -1803,16 +1675,16 @@ escape-html@^1.0.3, escape-html@~1.0.3: resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== -escape-string-regexp@5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz" - integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== - escape-string-regexp@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== +escape-string-regexp@5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz" + integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== + escodegen@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz" @@ -1890,7 +1762,7 @@ fast-glob@^3.3.0: merge2 "^1.3.0" micromatch "^4.0.8" -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@2.x: version "2.1.0" resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -2151,17 +2023,6 @@ http-assert@^1.3.0: deep-equal "~1.0.1" http-errors "~1.8.0" -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - http-errors@^1.6.3, http-errors@^1.7.3, http-errors@^1.8.1, http-errors@~1.8.0: version "1.8.1" resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz" @@ -2183,6 +2044,17 @@ http-errors@~1.6.2: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + http-proxy-agent@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz" @@ -2257,7 +2129,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@~2.0.3: +inherits@~2.0.3, inherits@2, inherits@2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -2655,7 +2527,7 @@ jest-resolve-dependencies@^27.5.1: jest-regex-util "^27.5.1" jest-snapshot "^27.5.1" -jest-resolve@^27.5.1: +jest-resolve@*, jest-resolve@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz" integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== @@ -2808,7 +2680,7 @@ jest-worker@^27.5.1: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^27.4.2: +jest@^27.0.0, jest@^27.4.2: version "27.5.1" resolved "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz" integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== @@ -2878,7 +2750,7 @@ json-stringify-safe@5: resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== -json5@2.x, json5@^2.2.3: +json5@^2.2.3, json5@2.x: version "2.2.3" resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -2888,6 +2760,14 @@ jsonparse@^1.2.0: resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== +JSONStream@^1.3.5: + version "1.3.5" + resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + junk@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/junk/-/junk-4.0.1.tgz" @@ -2949,7 +2829,7 @@ koa-etag@^4.0.0: dependencies: etag "^1.8.1" -koa-is-json@1, koa-is-json@^1.0.0: +koa-is-json@^1.0.0, koa-is-json@1: version "1.0.0" resolved "https://registry.npmjs.org/koa-is-json/-/koa-is-json-1.0.0.tgz" integrity sha512-+97CtHAlWDx0ndt0J8y3P12EWLwTLMXIfMnYDev3wOTwH/RpBGMlfn4bDXlMEg1u73K6XRE9BbUp+5ZAYoRYWw== @@ -3272,7 +3152,7 @@ make-dir@^5.0.0: resolved "https://registry.npmjs.org/make-dir/-/make-dir-5.0.0.tgz" integrity sha512-G0yBotnlWVonPClw+tq+xi4K7DZC9n96HjGTBDdHkstAVsDkfZhi1sTvZypXLpyQTbISBkDtK0E5XlUqDsShQg== -make-error@1.x, make-error@^1.1.1: +make-error@^1.1.1, make-error@1.x: version "1.3.6" resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== @@ -3396,16 +3276,16 @@ micromatch@^4.0.4, micromatch@^4.0.5, micromatch@^4.0.8: braces "^3.0.3" picomatch "^2.3.1" -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - "mime-db@>= 1.43.0 < 2": version "1.53.0" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz" integrity sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg== +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + mime-types@^2.1.18, mime-types@^2.1.35, mime-types@~2.1.18, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" @@ -3460,16 +3340,16 @@ morgan@^1.6.1: on-finished "~2.3.0" on-headers "~1.0.2" -ms@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" @@ -3509,7 +3389,7 @@ npm-run-path@^4.0.1: nwsapi@^2.2.0: version "2.2.20" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.20.tgz#22e53253c61e7b0e7e93cef42c891154bcca11ef" + resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.20.tgz" integrity sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA== object-inspect@^1.13.3: @@ -3658,7 +3538,7 @@ path-exists@^4.0.0: resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== -path-is-absolute@1.0.1, path-is-absolute@^1.0.0: +path-is-absolute@^1.0.0, path-is-absolute@1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== @@ -3703,7 +3583,7 @@ picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: pirates@^4.0.4: version "4.0.7" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.7.tgz#643b4a18c4257c8a65104b73f3049ce9a0a15e22" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz" integrity sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA== pkg-dir@^4.2.0: @@ -3903,7 +3783,17 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@~5.1.0: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== @@ -3934,16 +3824,26 @@ saxes@^5.0.1: dependencies: xmlchars "^2.2.0" -semver@7.x, semver@^7.3.2, semver@^7.5.3: - version "7.7.1" - resolved "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz" - integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== - semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== +semver@^7.3.2: + version "7.7.1" + resolved "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz" + integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== + +semver@^7.5.3: + version "7.7.1" + resolved "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz" + integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== + +semver@7.x: + version "7.7.1" + resolved "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz" + integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== + serve-index-75lb@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/serve-index-75lb/-/serve-index-75lb-2.0.1.tgz" @@ -4093,25 +3993,25 @@ stack-utils@^2.0.3: dependencies: escape-string-regexp "^2.0.0" +statuses@^1.5.0, "statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2": + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + statuses@2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@^1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - stream-log-stats@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/stream-log-stats/-/stream-log-stats-3.0.2.tgz" integrity sha512-393j7aeF9iRdHvyANqEQU82UQmpw2CTxgsT83caefh+lOxavVLbVrw8Mr4zjXeZLh2+xeHZMKfVx4T0rJ/EchA== dependencies: - JSONStream "^1.3.5" ansi-escape-sequences "^5.1.2" byte-size "^6.2.0" common-log-format "^1.0.0" + JSONStream "^1.3.5" lodash.throttle "^4.1.1" stream-via "^1.0.4" table-layout "~1.0.0" @@ -4134,6 +4034,13 @@ streaming-json-stringify@3: json-stringify-safe "5" readable-stream "2" +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + string-length@^4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" @@ -4169,13 +4076,6 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - stringify-entities@^4.0.0: version "4.0.4" resolved "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz" @@ -4362,7 +4262,7 @@ ts-jest@^27.0.7: semver "7.x" yargs-parser "20.x" -ts-node@^10.9.1: +ts-node@^10.9.1, ts-node@>=9.0.0: version "10.9.2" resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz" integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== @@ -4422,7 +4322,7 @@ typedoc@^0.26.3: shiki "^1.16.2" yaml "^2.5.1" -typescript@^4.7.0: +typescript@^4.7.0, typescript@>=2.7, "typescript@>=3.8 <5.0", "typescript@4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x": version "4.9.5" resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== @@ -4706,10 +4606,10 @@ yallist@^3.0.2: yaml@^2.5.1: version "2.7.1" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.7.1.tgz#44a247d1b88523855679ac7fa7cda6ed7e135cf6" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz" integrity sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ== -yargs-parser@20.x, yargs-parser@^20.2.2: +yargs-parser@^20.2.2, yargs-parser@20.x: version "20.2.9" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==