From a8b98c5736a29a81b922657e395fc0653308c593 Mon Sep 17 00:00:00 2001 From: Bugra Date: Mon, 19 Aug 2024 00:38:43 +0300 Subject: [PATCH] v3.0.0-cpp.js-integration --- .gitignore | 5 +- .info.json | 16 +- .news.json | 11 + GDAL_EMCC_FLAGS.mk | 130 - Makefile | 353 - apps/app-gui/package.json | 5 +- apps/app-gui/pnpm-lock.yaml | 14 + apps/app-gui/src/App.vue | 180 +- apps/app-gui/src/components/InputFiles.vue | 6 +- apps/app-gui/src/components/OutputFiles.vue | 11 +- apps/app-gui/src/utils.js | 36 + apps/app-gui/vue.config.js | 6 +- apps/app-mobile/.bundle/config | 2 + apps/app-mobile/.editorconfig | 18 + apps/app-mobile/.eslintrc.js | 8 + apps/app-mobile/.gitignore | 76 + apps/app-mobile/.prettierrc.js | 9 + apps/app-mobile/.watchmanconfig | 1 + apps/app-mobile/Gemfile | 9 + apps/app-mobile/Gemfile.lock | 107 + apps/app-mobile/README.md | 79 + apps/app-mobile/__tests__/App.test.tsx | 17 + apps/app-mobile/android/app/build.gradle | 119 + apps/app-mobile/android/app/debug.keystore | Bin 0 -> 2257 bytes .../app-mobile/android/app/proguard-rules.pro | 10 + .../android/app/src/debug/AndroidManifest.xml | 9 + .../android/app/src/main/AndroidManifest.xml | 26 + .../main/java/org/js/gdal3/MainActivity.kt | 22 + .../main/java/org/js/gdal3/MainApplication.kt | 43 + .../res/drawable/rn_edit_text_material.xml | 37 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3220 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 5310 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1860 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 3062 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4178 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7232 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7239 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 12681 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9629 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 16943 bytes .../app/src/main/res/values/strings.xml | 3 + .../app/src/main/res/values/styles.xml | 9 + apps/app-mobile/android/build.gradle | 21 + apps/app-mobile/android/gradle.properties | 41 + .../android/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 63721 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 + apps/app-mobile/android/gradlew | 249 + apps/app-mobile/android/gradlew.bat | 92 + apps/app-mobile/android/settings.gradle | 4 + apps/app-mobile/app.json | 4 + apps/app-mobile/babel.config.js | 4 + apps/app-mobile/cppjs.config.mjs | 13 + apps/app-mobile/index.js | 9 + apps/app-mobile/ios/.xcode.env | 11 + apps/app-mobile/ios/Podfile | 40 + apps/app-mobile/ios/Podfile.lock | 1586 ++ .../gdal3jsMobile3.xcodeproj/project.pbxproj | 797 + .../xcschemes/gdal3jsMobile3.xcscheme | 89 + .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../ios/gdal3jsMobile3/AppDelegate.h | 6 + .../ios/gdal3jsMobile3/AppDelegate.mm | 31 + .../AppIcon.appiconset/AppIcon-20@2x.png | Bin 0 -> 1017 bytes .../AppIcon.appiconset/AppIcon-20@3x.png | Bin 0 -> 1858 bytes .../AppIcon.appiconset/AppIcon-29@2x.png | Bin 0 -> 1709 bytes .../AppIcon.appiconset/AppIcon-29@3x.png | Bin 0 -> 2499 bytes .../AppIcon.appiconset/AppIcon-40@2x.png | Bin 0 -> 2275 bytes .../AppIcon.appiconset/AppIcon-40@3x.png | Bin 0 -> 4050 bytes .../AppIcon.appiconset/AppIcon-60@2x~car.png | Bin 0 -> 4050 bytes .../AppIcon.appiconset/AppIcon-60@3x~car.png | Bin 0 -> 5378 bytes .../AppIcon~ios-marketing.png | Bin 0 -> 56538 bytes .../AppIcon.appiconset/Contents.json | 62 + .../Images.xcassets/Contents.json | 6 + apps/app-mobile/ios/gdal3jsMobile3/Info.plist | 81 + .../gdal3jsMobile3/LaunchScreen.storyboard | 47 + .../ios/gdal3jsMobile3/PrivacyInfo.xcprivacy | 47 + apps/app-mobile/ios/gdal3jsMobile3/main.m | 10 + .../ios/gdal3jsMobile3Tests/Info.plist | 24 + .../gdal3jsMobile3Tests/gdal3jsMobile3Tests.m | 66 + apps/app-mobile/jest.config.js | 3 + apps/app-mobile/metro.config.js | 16 + apps/app-mobile/package-lock.json | 15788 ++++++++++++++++ apps/app-mobile/package.json | 72 + apps/app-mobile/react-native.config.js | 9 + apps/app-mobile/src/App.jsx | 98 + .../src/assets/polygon-line-point.json | 235 + .../src/constants/DropdownLightTheme.js | 171 + apps/app-mobile/src/constants/crs.json | 6611 +++++++ apps/app-mobile/src/libraries.js | 76 + apps/app-mobile/src/screens/AboutScreen.jsx | 116 + .../app-mobile/src/screens/AllFilesScreen.jsx | 131 + apps/app-mobile/src/screens/ConvertScreen.jsx | 129 + apps/app-mobile/src/screens/InfoScreen.jsx | 41 + apps/app-mobile/src/screens/Licenses.jsx | 75 + .../src/screens/SelectFilesScreen.jsx | 142 + apps/app-mobile/src/store/gdalStore.js | 410 + apps/app-mobile/src/utils.js | 71 + apps/app-mobile/tsconfig.json | 3 + apps/example-browser-worker/index.html | 11 - apps/example-browser-worker/main.js | 6 - apps/example-browser/index.html | 6 +- apps/example-browser/main.js | 9 +- apps/example-module-browser-worker/index.html | 10 - apps/example-module-browser-worker/main.js | 8 - apps/example-module-browser/main.js | 11 +- apps/example-node/a.mbtiles | Bin 0 -> 16384 bytes apps/example-node/index.js | 69 +- apps/example-node/index.mjs | 17 + apps/example-node/package.json | 2 +- apps/example-singlefile/index.html | 33 - apps/playground-node/index.js | 16 - apps/playground-node/package.json | 5 - apps/playground-node/pnpm-lock.yaml | 10 - cppjs.config.mjs | 46 + gdal3.js.podspec | 13 + node.js | 2 +- package.json | 96 +- pnpm-lock.yaml | 5541 +----- rollup.config.mjs | 61 - src/TypeDefs.js | 53 - src/allCFunctions.js | 138 - src/allJsFunctions.js | 36 - .../application/gdal_location_info.js | 94 - .../application/gdal_location_info.spec.js | 38 - .../application/gdal_rasterize.js | 70 - .../application/gdal_rasterize.spec.js | 82 - .../application/gdal_translate.js | 70 - .../application/gdal_translate.spec.js | 78 - src/allJsFunctions/application/gdalinfo.js | 43 - .../application/gdalinfo.spec.js | 36 - .../application/gdaltransform.js | 120 - .../application/gdaltransform.spec.js | 58 - src/allJsFunctions/application/gdalwarp.js | 74 - .../application/gdalwarp.spec.js | 91 - src/allJsFunctions/application/ogr2ogr.js | 80 - .../application/ogr2ogr.spec.js | 80 - src/allJsFunctions/application/ogrinfo.js | 44 - .../application/ogrinfo.spec.js | 36 - src/allJsFunctions/function/close.js | 21 - src/allJsFunctions/function/close.spec.js | 37 - src/allJsFunctions/function/getFileBytes.js | 44 - .../function/getFileBytes.spec.js | 58 - src/allJsFunctions/function/getInfo.js | 139 - src/allJsFunctions/function/getInfo.spec.js | 36 - src/allJsFunctions/function/getOutputFiles.js | 20 - .../function/getOutputFiles.spec.js | 42 - src/allJsFunctions/function/open.js | 150 - src/allJsFunctions/function/open.spec.js | 156 - src/allJsFunctions/helper/const.js | 12 - src/allJsFunctions/helper/drivers.js | 65 - src/allJsFunctions/helper/error.js | 12 - src/allJsFunctions/helper/filesystem.js | 59 - src/allJsFunctions/helper/getFileList.js | 28 - src/allJsFunctions/helper/options.js | 30 - src/index.d.ts | 89 - src/index.js | 161 - src/native/Dataset.cpp | 360 + src/native/Driver.cpp | 117 + src/native/GCP.cpp | 78 + src/native/Gdal.cpp | 506 + src/native/SubdatasetInfo.cpp | 33 + src/native/gdal3.js/Dataset.h | 99 + src/native/gdal3.js/Driver.h | 48 + src/native/gdal3.js/GCP.h | 41 + src/native/gdal3.js/Gdal.h | 135 + src/native/gdal3.js/SubdatasetInfo.h | 27 + src/native/gdal3.js/empty.h | 0 src/native/gdal3.js/empty.i | 25 + src/workerSupport.js | 85 - test/browser.html | 32 +- test/raster.spec.js | 134 +- test/vector.spec.js | 146 +- 172 files changed, 31110 insertions(+), 8147 deletions(-) delete mode 100644 GDAL_EMCC_FLAGS.mk delete mode 100644 Makefile create mode 100644 apps/app-mobile/.bundle/config create mode 100644 apps/app-mobile/.editorconfig create mode 100644 apps/app-mobile/.eslintrc.js create mode 100644 apps/app-mobile/.gitignore create mode 100644 apps/app-mobile/.prettierrc.js create mode 100644 apps/app-mobile/.watchmanconfig create mode 100644 apps/app-mobile/Gemfile create mode 100644 apps/app-mobile/Gemfile.lock create mode 100644 apps/app-mobile/README.md create mode 100644 apps/app-mobile/__tests__/App.test.tsx create mode 100644 apps/app-mobile/android/app/build.gradle create mode 100644 apps/app-mobile/android/app/debug.keystore create mode 100644 apps/app-mobile/android/app/proguard-rules.pro create mode 100644 apps/app-mobile/android/app/src/debug/AndroidManifest.xml create mode 100644 apps/app-mobile/android/app/src/main/AndroidManifest.xml create mode 100644 apps/app-mobile/android/app/src/main/java/org/js/gdal3/MainActivity.kt create mode 100644 apps/app-mobile/android/app/src/main/java/org/js/gdal3/MainApplication.kt create mode 100644 apps/app-mobile/android/app/src/main/res/drawable/rn_edit_text_material.xml create mode 100644 apps/app-mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 apps/app-mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 apps/app-mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 apps/app-mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 apps/app-mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 apps/app-mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 apps/app-mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 apps/app-mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 apps/app-mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 apps/app-mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 apps/app-mobile/android/app/src/main/res/values/strings.xml create mode 100644 apps/app-mobile/android/app/src/main/res/values/styles.xml create mode 100644 apps/app-mobile/android/build.gradle create mode 100644 apps/app-mobile/android/gradle.properties create mode 100644 apps/app-mobile/android/gradle/wrapper/gradle-wrapper.jar create mode 100644 apps/app-mobile/android/gradle/wrapper/gradle-wrapper.properties create mode 100755 apps/app-mobile/android/gradlew create mode 100644 apps/app-mobile/android/gradlew.bat create mode 100644 apps/app-mobile/android/settings.gradle create mode 100644 apps/app-mobile/app.json create mode 100644 apps/app-mobile/babel.config.js create mode 100644 apps/app-mobile/cppjs.config.mjs create mode 100644 apps/app-mobile/index.js create mode 100644 apps/app-mobile/ios/.xcode.env create mode 100644 apps/app-mobile/ios/Podfile create mode 100644 apps/app-mobile/ios/Podfile.lock create mode 100644 apps/app-mobile/ios/gdal3jsMobile3.xcodeproj/project.pbxproj create mode 100644 apps/app-mobile/ios/gdal3jsMobile3.xcodeproj/xcshareddata/xcschemes/gdal3jsMobile3.xcscheme create mode 100644 apps/app-mobile/ios/gdal3jsMobile3.xcworkspace/contents.xcworkspacedata create mode 100644 apps/app-mobile/ios/gdal3jsMobile3.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 apps/app-mobile/ios/gdal3jsMobile3/AppDelegate.h create mode 100644 apps/app-mobile/ios/gdal3jsMobile3/AppDelegate.mm create mode 100644 apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/AppIcon-20@2x.png create mode 100644 apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/AppIcon-20@3x.png create mode 100644 apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/AppIcon-29@2x.png create mode 100644 apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/AppIcon-29@3x.png create mode 100644 apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/AppIcon-40@2x.png create mode 100644 apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/AppIcon-40@3x.png create mode 100644 apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/AppIcon-60@2x~car.png create mode 100644 apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/AppIcon-60@3x~car.png create mode 100644 apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/AppIcon~ios-marketing.png create mode 100644 apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/Contents.json create mode 100644 apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/Contents.json create mode 100644 apps/app-mobile/ios/gdal3jsMobile3/Info.plist create mode 100644 apps/app-mobile/ios/gdal3jsMobile3/LaunchScreen.storyboard create mode 100644 apps/app-mobile/ios/gdal3jsMobile3/PrivacyInfo.xcprivacy create mode 100644 apps/app-mobile/ios/gdal3jsMobile3/main.m create mode 100644 apps/app-mobile/ios/gdal3jsMobile3Tests/Info.plist create mode 100644 apps/app-mobile/ios/gdal3jsMobile3Tests/gdal3jsMobile3Tests.m create mode 100644 apps/app-mobile/jest.config.js create mode 100644 apps/app-mobile/metro.config.js create mode 100644 apps/app-mobile/package-lock.json create mode 100644 apps/app-mobile/package.json create mode 100644 apps/app-mobile/react-native.config.js create mode 100644 apps/app-mobile/src/App.jsx create mode 100644 apps/app-mobile/src/assets/polygon-line-point.json create mode 100644 apps/app-mobile/src/constants/DropdownLightTheme.js create mode 100644 apps/app-mobile/src/constants/crs.json create mode 100644 apps/app-mobile/src/libraries.js create mode 100644 apps/app-mobile/src/screens/AboutScreen.jsx create mode 100644 apps/app-mobile/src/screens/AllFilesScreen.jsx create mode 100644 apps/app-mobile/src/screens/ConvertScreen.jsx create mode 100644 apps/app-mobile/src/screens/InfoScreen.jsx create mode 100644 apps/app-mobile/src/screens/Licenses.jsx create mode 100644 apps/app-mobile/src/screens/SelectFilesScreen.jsx create mode 100644 apps/app-mobile/src/store/gdalStore.js create mode 100644 apps/app-mobile/src/utils.js create mode 100644 apps/app-mobile/tsconfig.json delete mode 100644 apps/example-browser-worker/index.html delete mode 100644 apps/example-browser-worker/main.js delete mode 100644 apps/example-module-browser-worker/index.html delete mode 100644 apps/example-module-browser-worker/main.js create mode 100644 apps/example-node/a.mbtiles create mode 100644 apps/example-node/index.mjs delete mode 100644 apps/example-singlefile/index.html delete mode 100644 apps/playground-node/index.js delete mode 100644 apps/playground-node/package.json delete mode 100644 apps/playground-node/pnpm-lock.yaml create mode 100644 cppjs.config.mjs create mode 100644 gdal3.js.podspec delete mode 100644 rollup.config.mjs delete mode 100644 src/TypeDefs.js delete mode 100644 src/allCFunctions.js delete mode 100644 src/allJsFunctions.js delete mode 100644 src/allJsFunctions/application/gdal_location_info.js delete mode 100644 src/allJsFunctions/application/gdal_location_info.spec.js delete mode 100644 src/allJsFunctions/application/gdal_rasterize.js delete mode 100644 src/allJsFunctions/application/gdal_rasterize.spec.js delete mode 100644 src/allJsFunctions/application/gdal_translate.js delete mode 100644 src/allJsFunctions/application/gdal_translate.spec.js delete mode 100644 src/allJsFunctions/application/gdalinfo.js delete mode 100644 src/allJsFunctions/application/gdalinfo.spec.js delete mode 100644 src/allJsFunctions/application/gdaltransform.js delete mode 100644 src/allJsFunctions/application/gdaltransform.spec.js delete mode 100644 src/allJsFunctions/application/gdalwarp.js delete mode 100644 src/allJsFunctions/application/gdalwarp.spec.js delete mode 100644 src/allJsFunctions/application/ogr2ogr.js delete mode 100644 src/allJsFunctions/application/ogr2ogr.spec.js delete mode 100644 src/allJsFunctions/application/ogrinfo.js delete mode 100644 src/allJsFunctions/application/ogrinfo.spec.js delete mode 100644 src/allJsFunctions/function/close.js delete mode 100644 src/allJsFunctions/function/close.spec.js delete mode 100644 src/allJsFunctions/function/getFileBytes.js delete mode 100644 src/allJsFunctions/function/getFileBytes.spec.js delete mode 100644 src/allJsFunctions/function/getInfo.js delete mode 100644 src/allJsFunctions/function/getInfo.spec.js delete mode 100644 src/allJsFunctions/function/getOutputFiles.js delete mode 100644 src/allJsFunctions/function/getOutputFiles.spec.js delete mode 100644 src/allJsFunctions/function/open.js delete mode 100644 src/allJsFunctions/function/open.spec.js delete mode 100644 src/allJsFunctions/helper/const.js delete mode 100644 src/allJsFunctions/helper/drivers.js delete mode 100644 src/allJsFunctions/helper/error.js delete mode 100644 src/allJsFunctions/helper/filesystem.js delete mode 100644 src/allJsFunctions/helper/getFileList.js delete mode 100644 src/allJsFunctions/helper/options.js delete mode 100644 src/index.d.ts delete mode 100644 src/index.js create mode 100644 src/native/Dataset.cpp create mode 100644 src/native/Driver.cpp create mode 100644 src/native/GCP.cpp create mode 100644 src/native/Gdal.cpp create mode 100644 src/native/SubdatasetInfo.cpp create mode 100644 src/native/gdal3.js/Dataset.h create mode 100644 src/native/gdal3.js/Driver.h create mode 100644 src/native/gdal3.js/GCP.h create mode 100644 src/native/gdal3.js/Gdal.h create mode 100644 src/native/gdal3.js/SubdatasetInfo.h create mode 100644 src/native/gdal3.js/empty.h create mode 100644 src/native/gdal3.js/empty.i delete mode 100644 src/workerSupport.js diff --git a/.gitignore b/.gitignore index b54bf37..4297cdc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,9 @@ +apps/app-mobile/android/app/src/main/assets/cppjs build build-dev - +.cppjs dist-dev - +*.xcframework test-dev TODO.md diff --git a/.info.json b/.info.json index 4578ba5..c009632 100644 --- a/.info.json +++ b/.info.json @@ -29,17 +29,17 @@ "licenseUrl": "https://github.com/emscripten-core/emscripten/blob/main/LICENSE" }, { - "name": "Gdal 3.8.4", + "name": "Gdal 3.9.2", "url": "https://github.com/OSGeo/gdal", - "licenseUrl": "https://github.com/OSGeo/gdal/blob/master/gdal/LICENSE.TXT" + "licenseUrl": "https://github.com/OSGeo/gdal/blob/master/LICENSE.TXT" }, { - "name": "Proj 9.3.1", + "name": "Proj 9.4.1", "url": "https://github.com/OSGeo/PROJ", "licenseUrl": "https://github.com/OSGeo/PROJ/blob/master/COPYING" }, { - "name": "Geos 3.12.1", + "name": "Geos 3.12.2", "url": "https://github.com/libgeos/geos", "licenseUrl": "https://github.com/libgeos/geos/blob/master/COPYING" }, @@ -49,12 +49,12 @@ "licenseUrl": "http://www.gnu.org/licenses/lgpl-2.1.html" }, { - "name": "Sqlite 3.45.1", + "name": "Sqlite 3.46.1", "url": "https://www.sqlite.org/index.html", "licenseUrl": "https://www.sqlite.org/copyright.html" }, { - "name": "GeoTIFF 1.7.1", + "name": "GeoTIFF 1.7.3", "url": "https://github.com/OSGeo/libgeotiff", "licenseUrl": "https://github.com/OSGeo/libgeotiff/blob/master/libgeotiff/LICENSE" }, @@ -64,12 +64,12 @@ "licenseUrl": "https://gitlab.com/libtiff/libtiff/-/blob/master/COPYRIGHT" }, { - "name": "WebP 1.3.2", + "name": "WebP 1.4.0", "url": "https://chromium.googlesource.com/webm/libwebp", "licenseUrl": "https://chromium.googlesource.com/webm/libwebp/+/refs/heads/master/COPYING" }, { - "name": "Expat 2.6.0", + "name": "Expat 2.6.2", "url": "https://github.com/libexpat/libexpat", "licenseUrl": "https://github.com/libexpat/libexpat/blob/master/expat/COPYING" }, diff --git a/.news.json b/.news.json index e9083c8..d807536 100644 --- a/.news.json +++ b/.news.json @@ -1,4 +1,15 @@ [ + { + "version": "3.0.0-alpha", + "date": "18.08.2024", + "commits": [ + { + "description": "Migrating to cpp.js infrastructure", + "hash": "", + "user": "bugra9" + } + ] + }, { "version": "v2.8.1", "date": "23.02.2024", diff --git a/GDAL_EMCC_FLAGS.mk b/GDAL_EMCC_FLAGS.mk deleted file mode 100644 index 238b201..0000000 --- a/GDAL_EMCC_FLAGS.mk +++ /dev/null @@ -1,130 +0,0 @@ -GDAL_EMCC_FLAGS := - -ifeq ($(type), debug) -GDAL_EMCC_FLAGS += -g4 --source-map-base http://localhost:8080/dist/ -fsanitize=address -else -GDAL_EMCC_FLAGS += -O3 -endif - -GDAL_EMCC_FLAGS += -s ERROR_ON_UNDEFINED_SYMBOLS=0 -s FORCE_FILESYSTEM=1 -GDAL_EMCC_FLAGS += -lworkerfs.js -GDAL_EMCC_FLAGS += -lnodefs.js -GDAL_EMCC_FLAGS += -s TOTAL_MEMORY=512MB -s ALLOW_MEMORY_GROWTH=1 -s DISABLE_EXCEPTION_CATCHING=0 -GDAL_EMCC_FLAGS += -s WASM=1 -s MODULARIZE=1 -s 'EXPORT_NAME="CModule"' -GDAL_EMCC_FLAGS += -s RESERVED_FUNCTION_POINTERS=200 -GDAL_EMCC_FLAGS += -s EXPORTED_FUNCTIONS="[\ - '_malloc',\ - '_free',\ - '_CSLCount',\ - '_GDALSetCacheMax',\ - '_GDALAllRegister',\ - '_GDALOpen',\ - '_GDALOpenEx',\ - '_GDALClose',\ - '_GDALGetDriverByName',\ - '_GDALCreate',\ - '_GDALCreateCopy',\ - '_GDALGetRasterXSize',\ - '_GDALGetRasterYSize',\ - '_GDALGetRasterCount',\ - '_GDALGetRasterDataType',\ - '_GDALGetRasterBand',\ - '_GDALGetRasterStatistics',\ - '_GDALGetRasterMinimum',\ - '_GDALGetRasterMaximum',\ - '_GDALGetRasterNoDataValue',\ - '_GDALGetProjectionRef',\ - '_GDALSetProjection',\ - '_GDALGetGeoTransform',\ - '_GDALSetGeoTransform',\ - '_OSRNewSpatialReference',\ - '_OSRDestroySpatialReference',\ - '_OSRImportFromEPSG',\ - '_OCTNewCoordinateTransformation',\ - '_OCTDestroyCoordinateTransformation',\ - '_OCTTransform',\ - '_GDALCreateGenImgProjTransformer',\ - '_GDALDestroyGenImgProjTransformer',\ - '_GDALGenImgProjTransform',\ - '_GDALDestroyGenImgProjTransformer',\ - '_GDALSuggestedWarpOutput',\ - '_GDALTranslate',\ - '_GDALTranslateOptionsNew',\ - '_GDALTranslateOptionsFree',\ - '_GDALWarpAppOptionsNew',\ - '_GDALWarpAppOptionsSetProgress',\ - '_GDALWarpAppOptionsFree',\ - '_GDALWarp',\ - '_GDALBuildVRTOptionsNew',\ - '_GDALBuildVRTOptionsFree',\ - '_GDALBuildVRT',\ - '_GDALReprojectImage',\ - '_CPLError',\ - '_CPLSetErrorHandler',\ - '_CPLQuietErrorHandler',\ - '_CPLErrorReset',\ - '_CPLGetLastErrorMsg',\ - '_CPLGetLastErrorNo',\ - '_CPLGetLastErrorType',\ - '_GDALRasterize',\ - '_GDALRasterizeOptionsNew',\ - '_GDALRasterizeOptionsFree',\ - '_GDALDEMProcessing',\ - '_GDALDEMProcessingOptionsNew',\ - '_GDALDEMProcessingOptionsFree',\ - '_GDALVectorTranslate',\ - '_GDALVectorTranslateOptionsNew',\ - '_GDALVectorTranslateOptionsFree',\ - '_GDALDatasetGetLayerCount',\ - '_GDALGetDatasetDriver',\ - '_GDALGetFileList',\ - '_GDALGetDriverLongName',\ - '_GDALGetDriverShortName',\ - '_GDALDatasetGetLayer',\ - '_OGR_L_GetName',\ - '_OGR_DS_GetName',\ - '_OGR_DS_GetLayerCount',\ - '_OGR_DS_GetLayer',\ - '_OGR_DS_GetDriver',\ - '_OGR_Dr_GetName',\ - '_GDALGetDriverCount',\ - '_GDALGetDriver',\ - '_GDALGetMetadataItem',\ - '_OGRGetDriverCount',\ - '_OGRGetDriver',\ - '_GDALGetDescription',\ - '_OGR_L_GetFeatureCount',\ - '_GDALGenImgProjTransform',\ - '_GDALCreateGenImgProjTransformer2',\ - '_GDALDestroyGenImgProjTransformer',\ - '_OSRSetFromUserInput',\ - '_OSRExportToWkt',\ - '_CPLSetConfigOption',\ - '_CPLSetThreadLocalConfigOption',\ - '_GDALGetSpatialRef',\ - '_CPLAtof',\ - '_OSRSetAxisMappingStrategy',\ - '_GDALInvGeoTransform',\ - '_GDALInfo',\ - '_GDALInfoOptionsNew',\ - '_GDALInfoOptionsFree',\ - '_GDALVectorInfo',\ - '_GDALVectorInfoOptionsNew',\ - '_GDALVectorInfoOptionsFree'\ -]" - -GDAL_EMCC_FLAGS += -s EXPORTED_RUNTIME_METHODS="[\ - 'setValue',\ - 'getValue',\ - 'ccall',\ - 'cwrap',\ - 'stringToUTF8',\ - 'UTF8ToString',\ - 'lengthBytesUTF8',\ - 'FS',\ - 'ENV',\ - 'WORKERFS',\ - 'NODEFS',\ - 'MEMFS',\ - 'addFunction'\ -]" diff --git a/Makefile b/Makefile deleted file mode 100644 index 8fcd92d..0000000 --- a/Makefile +++ /dev/null @@ -1,353 +0,0 @@ -GDAL_VERSION = 3.8.4 -SPATIALITE_VERSION = 5.1.0 -SQLITE_VERSION = 3450100 -GEOS_VERSION = 3.12.1 -PROJ_VERSION = 9.3.1 -ZLIB_VERSION = 1.3.1 -TIFF_VERSION = 4.6.0 -GEOTIFF_VERSION = 1.7.1 -WEBP_VERSION = 1.3.2 -EXPAT_VERSION = 2.6.0 -ICONV_VERSION = 1.17 - -SQLITE_URL = "https://www.sqlite.org/2024/sqlite-autoconf-$(SQLITE_VERSION).tar.gz" -PROJ_URL = "http://download.osgeo.org/proj/proj-$(PROJ_VERSION).tar.gz" -GEOS_URL = "http://download.osgeo.org/geos/geos-$(GEOS_VERSION).tar.bz2" -SPATIALITE_URL = "http://www.gaia-gis.it/gaia-sins/libspatialite-sources/libspatialite-$(SPATIALITE_VERSION).tar.gz" -ZLIB_URL = "http://zlib.net/zlib-$(ZLIB_VERSION).tar.gz" -GDAL_URL = "https://github.com/OSGeo/gdal/releases/download/v$(GDAL_VERSION)/gdal-$(GDAL_VERSION).tar.gz" -TIFF_URL = "http://download.osgeo.org/libtiff/tiff-$(TIFF_VERSION).tar.gz" -GEOTIFF_URL = "http://download.osgeo.org/geotiff/libgeotiff/libgeotiff-$(GEOTIFF_VERSION).tar.gz" -WEBP_URL = "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz" -EXPAT_URL = "https://github.com/libexpat/libexpat/releases/download/R_$(subst .,_,$(EXPAT_VERSION))/expat-${EXPAT_VERSION}.tar.gz" -ICONV_URL = "https://ftp.gnu.org/pub/gnu/libiconv/libiconv-${ICONV_VERSION}.tar.gz" - -PWD = $(shell pwd) -SRC_DIR = build/native/src -SRC_DIR_FULL = $(PWD)/$(SRC_DIR) -ROOT_DIR = $(PWD)/build/native/usr -DIST_DIR = $(PWD)/build/package -PREFIX = --prefix=$(ROOT_DIR) -PREFIX_CMAKE = "-DCMAKE_INSTALL_PREFIX=$(ROOT_DIR)" - -ifeq ($(type), debug) -TYPE_FLAGS = -g4 -O0 -else -TYPE_FLAGS = -O3 -endif - -# EMCC_CFLAGS = -g4 -O0 -fexceptions -DRENAME_INTERNAL_LIBTIFF_SYMBOLS -EMCC_CFLAGS = $(TYPE_FLAGS) -fexceptions -DRENAME_INTERNAL_LIBTIFF_SYMBOLS -s ERROR_ON_UNDEFINED_SYMBOLS=0 -EMMAKE ?= EMCC_CFLAGS="$(EMCC_CFLAGS)" emmake -EMCMAKE ?= emcmake -EMCC ?= CFLAGS="$(EMCC_CFLAGS)" emcc -EMCONFIGURE ?= CXXFLAGS="$(EMCC_CFLAGS)" CFLAGS="$(EMCC_CFLAGS)" emconfigure - -include GDAL_EMCC_FLAGS.mk - - -######## -# GDAL # -######## -GDAL_SRC = $(SRC_DIR)/gdal-$(GDAL_VERSION) - -gdal3.js: $(DIST_DIR)/gdal3WebAssembly.js -gdal: $(ROOT_DIR)/lib/libgdal.a - -$(DIST_DIR)/gdal3WebAssembly.js: $(ROOT_DIR)/lib/libgdal.a - mkdir -p $(DIST_DIR); \ - cd $(DIST_DIR); \ - EMCC_CORES=4 $(EMCC) $(ROOT_DIR)/lib/libgdal.a \ - $(ROOT_DIR)/lib/libproj.a $(ROOT_DIR)/lib/libsqlite3.a $(ROOT_DIR)/lib/libz.a $(ROOT_DIR)/lib/libspatialite.a \ - $(ROOT_DIR)/lib/libgeos.a $(ROOT_DIR)/lib/libgeos_c.a $(ROOT_DIR)/lib/libwebp.a $(ROOT_DIR)/lib/libsharpyuv.a $(ROOT_DIR)/lib/libwebpdemux.a \ - $(ROOT_DIR)/lib/libexpat.a $(ROOT_DIR)/lib/libtiffxx.a $(ROOT_DIR)/lib/libtiff.a $(ROOT_DIR)/lib/libgeotiff.a \ - $(ROOT_DIR)/lib/libiconv.a \ - -o $@ $(GDAL_EMCC_FLAGS) \ - --preload-file $(ROOT_DIR)/share/gdal@/usr/share/gdal \ - --preload-file $(ROOT_DIR)/share/proj@/usr/share/proj; - -$(ROOT_DIR)/lib/libgdal.a: $(GDAL_SRC)/build/Makefile - cd $(GDAL_SRC)/build; \ - $(EMMAKE) make -j4 install; - -$(GDAL_SRC)/build/Makefile: $(ROOT_DIR)/lib/libsqlite3.a $(ROOT_DIR)/lib/libproj.a $(ROOT_DIR)/lib/libgeotiff.a $(ROOT_DIR)/lib/libwebp.a $(ROOT_DIR)/lib/libexpat.a $(ROOT_DIR)/lib/libspatialite.a $(ROOT_DIR)/lib/libiconv.a $(ROOT_DIR)/include/linux/fs.h $(GDAL_SRC)/CMakeLists.txt - cd $(GDAL_SRC); \ - sed -i 's/ iconv_open/ libiconv_open/g' ./port/cpl_recode_iconv.cpp; \ - sed -i 's/ iconv/ libiconv/g' ./port/cpl_recode_iconv.cpp; \ - sed -i 's/#include /# include \nextern "C" {\n extern __attribute__((__visibility__("default"))) iconv_t libiconv_open (const char* tocode, const char* fromcode);\n extern __attribute__((__visibility__("default"))) size_t libiconv (iconv_t cd, char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft);\n}/g' ./port/cpl_recode_iconv.cpp; \ - rm -rf $(ROOT_DIR)/lib/cmake; \ - mkdir build; \ - cd build; \ - $(EMCMAKE) cmake .. $(PREFIX_CMAKE) -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_APPS=OFF \ - -DOGR_ENABLE_DRIVER_GPSBABEL=OFF \ - -DCMAKE_PREFIX_PATH=$(ROOT_DIR) -DCMAKE_FIND_ROOT_PATH=$(ROOT_DIR) \ - -DGDAL_USE_HDF5=OFF -DGDAL_USE_HDFS=OFF -DACCEPT_MISSING_SQLITE3_MUTEX_ALLOC=ON \ - -DSQLite3_INCLUDE_DIR=$(ROOT_DIR)/include -DSQLite3_LIBRARY=$(ROOT_DIR)/lib/libsqlite3.a \ - -DPROJ_INCLUDE_DIR=$(ROOT_DIR)/include -DPROJ_LIBRARY_RELEASE=$(ROOT_DIR)/lib/libproj.a \ - -DTIFF_INCLUDE_DIR=$(ROOT_DIR)/include -DTIFF_LIBRARY_RELEASE=$(ROOT_DIR)/lib/libtiff.a \ - -DGEOTIFF_INCLUDE_DIR=$(ROOT_DIR)/include -DGEOTIFF_LIBRARY_RELEASE=$(ROOT_DIR)/lib/libgeotiff.a \ - -DZLIB_INCLUDE_DIR=$(ROOT_DIR)/include -DZLIB_LIBRARY_RELEASE=$(ROOT_DIR)/lib/libz.a \ - -DSPATIALITE_INCLUDE_DIR=$(ROOT_DIR)/include -DSPATIALITE_LIBRARY=$(ROOT_DIR)/lib/libspatialite.a \ - -DGEOS_INCLUDE_DIR=$(ROOT_DIR)/include -DGEOS_LIBRARY=$(ROOT_DIR)/lib/libgeos.a \ - -DWEBP_INCLUDE_DIR=$(ROOT_DIR)/include -DWEBP_LIBRARY=$(ROOT_DIR)/lib/libwebp.a \ - -DEXPAT_INCLUDE_DIR=$(ROOT_DIR)/include -DEXPAT_LIBRARY=$(ROOT_DIR)/lib/libexpat.a \ - -DIconv_INCLUDE_DIR=$(ROOT_DIR)/include -DIconv_LIBRARY=$(ROOT_DIR)/lib/libiconv.a; - -$(ROOT_DIR)/include/linux/fs.h: - mkdir -p $(ROOT_DIR)/include/linux; \ - touch $(ROOT_DIR)/include/linux/fs.h; - -$(GDAL_SRC)/CMakeLists.txt: - mkdir -p $(SRC_DIR); \ - cd $(SRC_DIR); \ - wget -nc $(GDAL_URL); \ - tar -xf gdal-$(GDAL_VERSION).tar.gz; - -############## -# SPATIALITE # -############## -SPATIALITE_SRC = $(SRC_DIR)/libspatialite-$(SPATIALITE_VERSION) - -spatialite: $(ROOT_DIR)/lib/libspatialite.a - -$(ROOT_DIR)/lib/libspatialite.a: $(SPATIALITE_SRC)/Makefile - cd $(SPATIALITE_SRC); \ - $(EMMAKE) make install; - -$(SPATIALITE_SRC)/Makefile: $(ROOT_DIR)/lib/libsqlite3.a $(ROOT_DIR)/lib/libproj.a $(ROOT_DIR)/lib/libz.a $(ROOT_DIR)/lib/libgeos.a $(SPATIALITE_SRC)/configure - cd $(SPATIALITE_SRC); \ - $(EMCONFIGURE) ./configure $(PREFIX) --enable-shared=no \ - CFLAGS="-I$(ROOT_DIR)/include -ULOADABLE_EXTENSION" \ - CPPFLAGS="-I$(ROOT_DIR)/include" \ - LDFLAGS="-L$(ROOT_DIR)/lib" \ - SQLITE3_CFLAGS="-I$(ROOT_DIR)/include" \ - SQLITE3_LIBS="-L$(ROOT_DIR)/lib" \ - --with-geosconfig="$(ROOT_DIR)/bin/geos-config" \ - --enable-geosadvanced=yes \ - --enable-geopackage=yes \ - --enable-examples=no \ - --enable-minizip=no \ - --enable-libxml2=no \ - --disable-rttopo \ - --enable-freexl=no; - -$(SPATIALITE_SRC)/configure: - mkdir -p $(SRC_DIR); \ - cd $(SRC_DIR); \ - wget -nc $(SPATIALITE_URL); \ - tar -xf libspatialite-$(SPATIALITE_VERSION).tar.gz; - -######## -# GEOS # -######## - -GEOS_SRC = $(SRC_DIR)/geos-$(GEOS_VERSION) - -geos: $(ROOT_DIR)/lib/libgeos.a - -$(ROOT_DIR)/lib/libgeos.a: $(GEOS_SRC)/build/Makefile - cd $(GEOS_SRC)/build; \ - $(EMMAKE) make -j4 install; - -$(GEOS_SRC)/build/Makefile: $(GEOS_SRC)/CMakeLists.txt - cd $(GEOS_SRC); \ - mkdir build; \ - cd build; \ - $(EMCMAKE) cmake .. $(PREFIX_CMAKE) -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTING=OFF; - -$(GEOS_SRC)/CMakeLists.txt: - mkdir -p $(SRC_DIR); \ - cd $(SRC_DIR); \ - wget -nc $(GEOS_URL); \ - tar -xf geos-$(GEOS_VERSION).tar.bz2; - -########### -# GEOTIFF # -########### -GEOTIFF_SRC = $(SRC_DIR)/libgeotiff-$(GEOTIFF_VERSION) - -geotiff: $(ROOT_DIR)/lib/libgeotiff.a - -$(ROOT_DIR)/lib/libgeotiff.a: $(GEOTIFF_SRC)/Makefile - cd $(GEOTIFF_SRC); \ - $(EMMAKE) make install; - -$(GEOTIFF_SRC)/Makefile: $(ROOT_DIR)/lib/libz.a $(ROOT_DIR)/lib/libproj.a $(GEOTIFF_SRC)/configure - cd $(GEOTIFF_SRC); \ - $(EMCONFIGURE) ./configure $(PREFIX) --enable-shared=no \ - --with-proj=$(ROOT_DIR) --with-libtiff=$(ROOT_DIR) --with-zlib=$(ROOT_DIR) \ - CFLAGS="-I$(ROOT_DIR)/include" \ - CPPFLAGS="-I$(ROOT_DIR)/include" \ - LDFLAGS="-L$(ROOT_DIR)/lib"; - -$(GEOTIFF_SRC)/configure: - mkdir -p $(SRC_DIR); \ - cd $(SRC_DIR); \ - wget -nc $(GEOTIFF_URL); \ - tar -xf libgeotiff-$(GEOTIFF_VERSION).tar.gz; - -######## -# PROJ # -######## -PROJ_SRC = $(SRC_DIR)/proj-$(PROJ_VERSION) - -proj: $(ROOT_DIR)/lib/libproj.a - -$(ROOT_DIR)/lib/libproj.a: $(PROJ_SRC)/Makefile - cd $(PROJ_SRC); \ - $(EMMAKE) make install; - -$(PROJ_SRC)/Makefile: $(ROOT_DIR)/lib/libtiff.a $(ROOT_DIR)/lib/libsqlite3.a $(PROJ_SRC)/CMakeLists.txt - cd $(PROJ_SRC); \ - $(EMCMAKE) cmake . $(PREFIX_CMAKE) \ - -DSQLITE3_INCLUDE_DIR=${ROOT_DIR}/include \ - -DSQLITE3_LIBRARY=${ROOT_DIR}/lib/libsqlite3.a \ - -DTIFF_INCLUDE_DIR=${ROOT_DIR}/include \ - -DTIFF_LIBRARY_RELEASE=${ROOT_DIR}/lib/libtiff.a \ - -DENABLE_CURL=OFF \ - -DBUILD_TESTING=OFF \ - -DBUILD_SHARED_LIBS=OFF \ - -DBUILD_APPS=OFF; - - -$(PROJ_SRC)/CMakeLists.txt: - mkdir -p $(SRC_DIR); \ - cd $(SRC_DIR); \ - wget -nc $(PROJ_URL); \ - tar -xf proj-$(PROJ_VERSION).tar.gz; - -########### -# SQLITE3 # -########### -SQLITE3_SRC = $(SRC_DIR)/sqlite-autoconf-$(SQLITE_VERSION) - -sqlite3: $(ROOT_DIR)/lib/libsqlite3.a - -$(ROOT_DIR)/lib/libsqlite3.a: $(SQLITE3_SRC)/Makefile - cd $(SQLITE3_SRC); \ - $(EMMAKE) make install; - -$(SQLITE3_SRC)/Makefile: $(ROOT_DIR)/lib/libz.a $(SQLITE3_SRC)/configure - cd $(SQLITE3_SRC); \ - $(EMCONFIGURE) ./configure $(PREFIX) --enable-shared=no \ - CFLAGS="-I$(ROOT_DIR)/include -DSQLITE_DISABLE_LFS -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_JSON1 -DSQLITE_THREADSAFE=0 -DSQLITE_ENABLE_NORMALIZE" \ - CPPFLAGS="-I$(ROOT_DIR)/include" \ - LDFLAGS="-L$(ROOT_DIR)/lib"; - -$(SQLITE3_SRC)/configure: - mkdir -p $(SRC_DIR); \ - cd $(SRC_DIR); \ - wget -nc $(SQLITE_URL); \ - tar -xf sqlite-autoconf-$(SQLITE_VERSION).tar.gz; - -########### -# TIFF # -########### -TIFF_SRC = $(SRC_DIR)/tiff-$(TIFF_VERSION) - -tiff: $(ROOT_DIR)/lib/libtiff.a - -$(ROOT_DIR)/lib/libtiff.a: $(TIFF_SRC)/Makefile - cd $(TIFF_SRC); \ - $(EMMAKE) make install; - -$(TIFF_SRC)/Makefile: $(ROOT_DIR)/lib/libz.a $(TIFF_SRC)/configure - cd $(TIFF_SRC); \ - $(EMCONFIGURE) ./configure $(PREFIX) --enable-shared=no --disable-docs \ - --with-zlib-include-dir=${ROOT_DIR}/include \ - --with-zlib-lib-dir=${ROOT_DIR}/lib; - -$(TIFF_SRC)/configure: - mkdir -p $(SRC_DIR); \ - cd $(SRC_DIR); \ - wget -nc $(TIFF_URL); \ - tar -xf tiff-$(TIFF_VERSION).tar.gz; - -########### -# WEBP # -########### -WEBP_SRC = $(SRC_DIR)/libwebp-$(WEBP_VERSION) - -webp: $(ROOT_DIR)/lib/libwebp.a - -$(ROOT_DIR)/lib/libwebp.a: $(WEBP_SRC)/Makefile - cd $(WEBP_SRC); \ - $(EMMAKE) make install; - -$(WEBP_SRC)/Makefile: $(WEBP_SRC)/configure - cd $(WEBP_SRC); \ - sed -i 's/SUBDIRS += examples//g' ./Makefile.am; \ - $(EMCONFIGURE) ./configure $(PREFIX) --enable-shared=no; - -$(WEBP_SRC)/configure: - mkdir -p $(SRC_DIR); \ - cd $(SRC_DIR); \ - wget -nc $(WEBP_URL); \ - tar -xf libwebp-$(WEBP_VERSION).tar.gz; - -########### -# EXPAT # -########### -EXPAT_SRC = $(SRC_DIR)/expat-$(EXPAT_VERSION) - -expat: $(ROOT_DIR)/lib/libexpat.a - -$(ROOT_DIR)/lib/libexpat.a: $(EXPAT_SRC)/Makefile - cd $(EXPAT_SRC); \ - $(EMMAKE) make install; - -$(EXPAT_SRC)/Makefile: $(EXPAT_SRC)/configure - cd $(EXPAT_SRC); \ - $(EMCONFIGURE) ./configure $(PREFIX) --enable-shared=no --without-getrandom --without-sys-getrandom; - -$(EXPAT_SRC)/configure: - mkdir -p $(SRC_DIR); \ - cd $(SRC_DIR); \ - wget -nc $(EXPAT_URL); \ - tar -xf expat-$(EXPAT_VERSION).tar.gz; - -######## -# ZLIB # -######## -ZLIB_SRC = $(SRC_DIR)/zlib-$(ZLIB_VERSION) - -zlib: $(ROOT_DIR)/lib/libz.a - -$(ROOT_DIR)/lib/libz.a: $(ZLIB_SRC)/Makefile - export PATH=$(ROOT_DIR)/bin:$(PATH); \ - cd $(ZLIB_SRC); \ - $(EMMAKE) make install; - -$(ZLIB_SRC)/Makefile: $(ZLIB_SRC)/configure - export PATH=$(ROOT_DIR)/bin:$(PATH); \ - cd $(ZLIB_SRC); \ - $(EMCONFIGURE) ./configure $(PREFIX) --static; - -$(ZLIB_SRC)/configure: - mkdir -p $(SRC_DIR); \ - cd $(SRC_DIR); \ - wget -nc $(ZLIB_URL); \ - tar -xf zlib-$(ZLIB_VERSION).tar.gz; - -########### -# ICONV # -########### -ICONV_SRC = $(SRC_DIR)/libiconv-$(ICONV_VERSION) - -iconv: $(ROOT_DIR)/lib/libiconv.a - -$(ROOT_DIR)/lib/libiconv.a: $(ICONV_SRC)/Makefile - cd $(ICONV_SRC); \ - $(EMMAKE) make lib/localcharset.h; \ - cd lib && $(EMMAKE) make install prefix='$(ROOT_DIR)' exec_prefix='$(ROOT_DIR)' libdir='$(ROOT_DIR)/lib'; - -$(ICONV_SRC)/Makefile: $(ICONV_SRC)/configure - cd $(ICONV_SRC); \ - $(EMCONFIGURE) ./configure $(PREFIX) --enable-shared=no; - -$(ICONV_SRC)/configure: - mkdir -p $(SRC_DIR); \ - cd $(SRC_DIR); \ - wget -nc $(ICONV_URL); \ - tar -xf libiconv-$(ICONV_VERSION).tar.gz; diff --git a/apps/app-gui/package.json b/apps/app-gui/package.json index 322166d..5fedf26 100644 --- a/apps/app-gui/package.json +++ b/apps/app-gui/package.json @@ -1,6 +1,6 @@ { "name": "gdal3.js-gui", - "version": "2.8.1", + "version": "3.0.0-alpha.4", "description": "gdal3.js GUI is a open source project offering a user interface for Gdal.", "license": "GPL-3.0-or-later", "scripts": { @@ -15,7 +15,8 @@ "vue-js-modal": "2.0.0-rc.3", "vue-loading-overlay": "^3.4.3", "vue-multiselect": "^2.1.8", - "vue-toast-notification": "^1.0.1" + "vue-toast-notification": "^1.0.1", + "xml-js": "^1.6.11" }, "devDependencies": { "@babel/eslint-parser": "^7.23.3", diff --git a/apps/app-gui/pnpm-lock.yaml b/apps/app-gui/pnpm-lock.yaml index 1f5f57b..bcf93ea 100644 --- a/apps/app-gui/pnpm-lock.yaml +++ b/apps/app-gui/pnpm-lock.yaml @@ -26,6 +26,9 @@ dependencies: vue-toast-notification: specifier: ^1.0.1 version: 1.0.1(vue@2.7.15) + xml-js: + specifier: ^1.6.11 + version: 1.6.11 devDependencies: '@babel/eslint-parser': @@ -5875,6 +5878,10 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true + /sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + dev: false + /schema-utils@2.7.1: resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} engines: {node: '>= 8.9.0'} @@ -6962,6 +6969,13 @@ packages: optional: true dev: true + /xml-js@1.6.11: + resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==} + hasBin: true + dependencies: + sax: 1.4.1 + dev: false + /xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} diff --git a/apps/app-gui/src/App.vue b/apps/app-gui/src/App.vue index b59c277..eed577e 100644 --- a/apps/app-gui/src/App.vue +++ b/apps/app-gui/src/App.vue @@ -18,7 +18,7 @@ label="text" track-by="value" group-values="formats" group-label="name" /> -
+
-
+
@@ -111,17 +111,17 @@

Supported Raster Drivers

Supported Vector Drivers

Database/Dataset Creation Options 🛈

- +
@@ -140,8 +140,8 @@ import TabRadio from './components/TabRadio.vue' import InputFiles from './components/InputFiles.vue' import OutputFiles from './components/OutputFiles.vue' import AppForm from './components/Form.vue' -import { split } from './utils'; -import initGdalJs from '../../../build/package/gdal3'; +import { split, xmlToJs, getFileExtension } from './utils'; +import initGdalJs from '../../../dist/gdal3js.browser.js'; import crs from './crs.json'; import projectNews from '../../../.news.json'; import projectInfo from '../../../.info.json'; @@ -149,7 +149,15 @@ import './App.css'; import 'vue-loading-overlay/dist/vue-loading.css'; import 'vue-multiselect/dist/vue-multiselect.min.css'; -let gdal; +let Module; +let drivers; + +const programMapper = { + translate: 'gdal_translate', + vectorTranslate: 'ogr2ogr', + rasterize: 'gdal_rasterize', + polygonize: 'gdal_polygonize', +} export default { name: 'App', @@ -167,6 +175,7 @@ export default { datasets: [], datasetsInfo: {}, drivers: [], + driversType: null, files: [], translateFormat: null, translateProj: null, @@ -186,9 +195,12 @@ export default { }, mounted() { initGdalJs({path: 'package'}).then((gdalInstance) => { - gdal = gdalInstance; - this.gdalRasterDrivers = Object.values(gdal.drivers.raster).sort((a, b) => a.shortName.localeCompare(b.shortName)); - this.gdalVectorDrivers = Object.values(gdal.drivers.vector).sort((a, b) => a.shortName.localeCompare(b.shortName)); + Module = gdalInstance; + Module.Gdal.allRegister(); + drivers = Module.toArray(Module.Gdal.getDrivers()).sort((a, b) => a.getShortName().localeCompare(b.getShortName())); + + this.gdalRasterDrivers = drivers.filter(d => d.isRaster()); + this.gdalVectorDrivers = drivers.filter(d => d.isVector()); this.isGdalLoaded = true; this.isLoading = false; }).catch(e => console.error(e)); @@ -201,25 +213,26 @@ export default { if (this.drivers.length === 0) return []; const out = []; - if (this.drivers[0].type === 'vector') { + if (this.drivers[0].isVector()) { out.push({ name: 'raster', formats: [{ value: 'GTiff', text: 'GTiff - GeoTIFF' }] }); } out.push({ - name: this.drivers[0].type, - formats: this.drivers.map(d => ({ value: d.shortName, text: d.shortName + ' - ' + d.longName })) + name: this.driversType, + formats: this.drivers.map(d => ({ value: d.getShortName(), text: d.getShortName() + ' - ' + d.getLongName() })) }); return out; }, gdalProgram() { + console.log(this.drivers.length, this.translateFormat); if (this.drivers.length > 0 && this.translateFormat) { - if (this.drivers[0].type === 'vector') { - if (this.translateFormat.value === 'GTiff') return 'gdal_rasterize'; - else if (this.translateFormat.value !== null) return 'ogr2ogr'; - } else if (this.drivers[0].type === 'raster') { - if (this.translateFormat.value === 'GML') return 'gdal_polygonize'; - else if (this.translateFormat.value !== null) return 'gdal_translate'; + if (this.driversType === 'vector') { + if (this.translateFormat.value === 'GTiff') return 'rasterize'; + else if (this.translateFormat.value !== null) return 'vectorTranslate'; + } else if (this.driversType === 'raster') { + if (this.translateFormat.value === 'GML') return 'polygonize'; + else if (this.translateFormat.value !== null) return 'translate'; } } return ""; @@ -230,15 +243,15 @@ export default { gdalParams() { const parameters = []; switch(this.gdalProgram) { - case 'ogr2ogr': + case 'vectorTranslate': if (this.translateFormat !== null) parameters.push('-f', this.translateFormat.value); if (this.translateProj !== null) parameters.push('-t_srs', this.translateProj.value); if (this.translateQuery !== '') parameters.push('-sql', this.translateQuery); break; - case 'gdal_translate': + case 'translate': if (this.translateFormat !== null) parameters.push('-of', this.translateFormat.value); break; - case 'gdal_rasterize': + case 'rasterize': parameters.push('-of', 'GTiff'); break } @@ -248,39 +261,48 @@ export default { return parameters; }, preview() { - return this.gdalProgram + ' ' + this.gdalParams.map(p => p[0] === '-' ? p : `"${p}"`).join(' '); + if (!this.gdalProgram) return ''; + return programMapper[this.gdalProgram] + ' ' + this.gdalParams.map(p => p[0] === '-' ? p : `"${p}"`).join(' '); }, selectedFormat() { - const temp = this.drivers.filter(d => d.shortName === this.translateFormat.value); + const temp = this.drivers.filter(d => d.getShortName() === this.translateFormat.value); if (temp && temp.length === 1) return temp[0]; return null; }, dsco() { - if (this.translateFormat && this.selectedFormat && this.selectedFormat.creationOptionList) { - const temp = this.selectedFormat.creationOptionList.filter(o => !o.scope || o.scope === 'raster,vector' || o.scope === this.drivers[0].type); + if (this.translateFormat && this.selectedFormat) { + let creationOptionList = this.selectedFormat.getCreationOptions(); + if (!creationOptionList) return null; + creationOptionList = xmlToJs(creationOptionList); + + const temp = creationOptionList.filter(o => !o.scope || o.scope === 'raster,vector' || o.scope === this.driversType); return temp; } return null; }, lco() { - if (this.drivers && this.drivers.length > 0 && this.drivers[0].type === 'vector' && this.translateFormat && this.selectedFormat && this.selectedFormat.layerCreationOptionList) { - const temp = this.selectedFormat.layerCreationOptionList.filter(o => !o.scope || o.scope === 'raster,vector' || o.scope === this.drivers[0].type); + if (this.drivers && this.drivers.length > 0 && this.driversType === 'vector' && this.translateFormat && this.selectedFormat) { + let layerCreationOptionList = this.selectedFormat.getLayerCreationOptions(); + if (!layerCreationOptionList) return null; + layerCreationOptionList = xmlToJs(layerCreationOptionList); + + const temp = layerCreationOptionList.filter(o => !o.scope || o.scope === 'raster,vector' || o.scope === this.driversType); return temp; } return null; }, gdalRasterDriversFiltered() { if (!this.driverSearchText || this.driverSearchText.length < 1) return this.gdalRasterDrivers; - return this.gdalRasterDrivers.filter(d => d.longName.toLowerCase().search(this.driverSearchText.toLowerCase()) !== -1 || d.shortName.toLowerCase().search(this.driverSearchText.toLowerCase()) !== -1); + return this.gdalRasterDrivers.filter(d => d.getLongName().toLowerCase().search(this.driverSearchText.toLowerCase()) !== -1 || d.getShortName().toLowerCase().search(this.driverSearchText.toLowerCase()) !== -1); }, gdalVectorDriversFiltered() { if (!this.driverSearchText || this.driverSearchText.length < 1) return this.gdalVectorDrivers; - return this.gdalVectorDrivers.filter(d => d.longName.toLowerCase().search(this.driverSearchText.toLowerCase()) !== -1 || d.shortName.toLowerCase().search(this.driverSearchText.toLowerCase()) !== -1); + return this.gdalVectorDrivers.filter(d => d.getLongName().toLowerCase().search(this.driverSearchText.toLowerCase()) !== -1 || d.getShortName().toLowerCase().search(this.driverSearchText.toLowerCase()) !== -1); }, }, watch: { gdalProgram(value) { - if (value === 'gdal_rasterize') this.translateOptions = '-co alpha=yes -burn 255 -burn 0 -burn 0 -burn 100 -ot Byte -ts 256 256'; + if (value === 'rasterize') this.translateOptions = '-co alpha=yes -burn 255 -burn 0 -burn 0 -burn 100 -ot Byte -ts 256 256'; else this.translateOptions = ''; } }, @@ -289,22 +311,70 @@ export default { this.isLoading = true; let promises = []; let options = this.gdalParams; - this.datasets.forEach(d => promises.push(gdal[this.gdalFunction](d, options))); + console.log('options', options); + this.datasets.forEach(d => { + let ext = ''; + if (this.gdalFunction === 'vectorTranslate' && this.translateFormat.value === 'MapInfo File' && options.indexOf('FORMAT=MIF') !== -1) { + ext = 'mif'; + } else { + ext = getFileExtension(this.drivers.find(d => d.getShortName() === this.translateFormat.value)); + } + + let fileName = this.datasetsInfo[d].description.split('/').at(-1); + const fileNameArr = fileName.split('.'); + fileNameArr.pop(); + fileName = fileNameArr.join('.'); + + promises.push(d[this.gdalFunction](`/virtual/${fileName}.${ext}`, Module.toVector(Module.VectorString, options))); + }); Promise.allSettled(promises).then((results) => { - gdal.getOutputFiles().then(files => { - results.filter(r => r.status === 'rejected').forEach(({reason}) => { - console.error(reason); - this.$toast.error(reason.message); - }); - this.files = files; - this.isLoading = false; - this.$refs.tab.value = 'Output'; + console.log('results', results); + results.forEach(({value: d}) => d.close()); + const files = Module.getFileList(); + console.log('files', files); + results.filter(r => r.status === 'rejected').forEach(({reason}) => { + console.error(reason); + this.$toast.error(reason.message); }); + this.files = files; + this.isLoading = false; + this.$refs.tab.value = 'Output'; }); }, onFileChange(files) { this.isLoading = true; - gdal.open(files).then(({datasets, errors}) => { + console.log(files); + Module.autoMountFiles(files).then(files => { + files.forEach(file => { + const dataset = Module.Gdal.openEx(file); + if (dataset) { + let info = JSON.parse(dataset.info(Module.toVector(Module.VectorString, ['-json']))); + const hasSize = info.size && info.size.length >= 2 && (info.size[0] > 0 || info.size[1] > 0); + const type = info.bands.length > 0 && hasSize ? 'raster' : 'vector'; + if (type === 'vector') { + info = JSON.parse(dataset.vectorInfo(Module.toVector(Module.VectorString, ['-json']))); + } + this.datasetsInfo[dataset] = {type, ...info}; + console.log('dataset', dataset, info); + this.datasets.push(dataset); + } + this.isLoading = false; + }); + + let drivers = []; + let type = this.datasets.reduce((out, obj) => (out === this.datasetsInfo[obj].type) ? out : '', this.datasetsInfo[this.datasets[0]].type); + if (type !== '') { + drivers = (type === 'raster' ? this.gdalRasterDrivers : this.gdalVectorDrivers).filter(d => d.isWritable()); + } + this.program = ''; + this.parameters = ''; + this.isLoading = false; + this.drivers = drivers; + this.driversType = type; + this.clearTranslateParameters(); + }); + + /* gdal.open(files).then(({datasets, errors}) => { if (datasets && datasets.length > 0) { datasets.forEach((d) => { this.datasetsInfo[d.pointer] = {type: d.type, ...d.info}; @@ -315,8 +385,7 @@ export default { let drivers = []; let type = this.datasets.reduce((out, obj) => (out === obj.type) ? out : '', this.datasets[0].type); if (type !== '') { - drivers = Object.values(gdal.drivers[type]).filter(d => d.isWritable); - drivers.sort((a, b) => a.shortName.localeCompare(b.shortName)); + drivers = (type === 'raster' ? this.gdalRasterDrivers : this.gdalVectorDrivers).filter(d => d.isWritable()); } this.program = ''; this.parameters = ''; @@ -335,18 +404,18 @@ export default { } this.isLoading = false; - }); + }); */ }, deleteDataset(dataset) { - gdal.close(dataset); let drivers = []; let datasets = this.datasets.filter(v => v !== dataset); if (datasets.length > 0) { - let type = datasets.reduce((out, obj) => (out === obj.type) ? out : '', datasets[0].type); + let type = datasets.reduce((out, obj) => (out === this.datasetsInfo[obj].type) ? out : '', this.datasetsInfo[datasets[0]].type); if (type !== '') { - drivers = Object.values(gdal.drivers[type]).filter(d => d.isWritable); - drivers.sort((a, b) => a.shortName.localeCompare(b.shortName)); + drivers = (type === 'raster' ? this.gdalRasterDrivers : this.gdalVectorDrivers).filter(d => d.isWritable()); + drivers.sort((a, b) => a.getShortName().localeCompare(b.getShortName())); } + this.driversType = type; } this.datasets = datasets; @@ -362,10 +431,9 @@ export default { downloadFile(path) { const temp = path.split('/'); const filename = temp[temp.length-1]; - gdal.getFileBytes(path).then(bytes => { - const blob = new Blob([bytes]); - this.saveAs(blob, filename); - }).catch(e => console.error(e)); + const bytes = Module.getFileBytes(path); + const blob = new Blob([bytes]); + this.saveAs(blob, filename); }, saveAs(blob, fileName) { const link = document.createElement('a'); @@ -375,9 +443,9 @@ export default { }, getDriverDesc(driver) { let info = []; - if (driver.isReadable) info.push('Read'); - if (driver.isWritable) info.push('Write'); - return `${driver.longName} (${info.join(', ')})`; + if (driver.isReadable()) info.push('Read'); + if (driver.isWritable()) info.push('Write'); + return `${driver.getLongName()} (${info.join(', ')})`; }, }, } diff --git a/apps/app-gui/src/components/InputFiles.vue b/apps/app-gui/src/components/InputFiles.vue index ef668f3..980cfd5 100644 --- a/apps/app-gui/src/components/InputFiles.vue +++ b/apps/app-gui/src/components/InputFiles.vue @@ -8,8 +8,8 @@
-

{{dataset.path}}

-

{{datasetsInfo[dataset.pointer].driverLongName}} ({{datasetsInfo[dataset.pointer].type}})

+

{{datasetsInfo[dataset].description.split('/').at(-1)}}

+

{{datasetsInfo[dataset].driverLongName}} ({{datasetsInfo[dataset].type}})

@@ -40,7 +40,7 @@ export default { }, methods: { getCode(dataset) { - const info = this.datasetsInfo ? this.datasetsInfo[dataset.pointer] : {}; + const info = this.datasetsInfo ? this.datasetsInfo[dataset] : {}; return syntaxHighlight(JSON.stringify(info, null, 2)); }, fileChange({ target }) { diff --git a/apps/app-gui/src/components/OutputFiles.vue b/apps/app-gui/src/components/OutputFiles.vue index b794431..95fe229 100644 --- a/apps/app-gui/src/components/OutputFiles.vue +++ b/apps/app-gui/src/components/OutputFiles.vue @@ -24,7 +24,16 @@ export default { }, methods: { getFileTitle(file) { - return file.substring(8, file.length); + let output = ''; + const fileArr = file.split('/'); + fileArr.shift(); + fileArr.shift(); + if (file.startsWith('/virtual/automounted/')) { + fileArr.shift(); + fileArr.shift(); + output += '[input] '; + } + return output + fileArr.join('/'); }, getFileSize(size) { if (size > 1073741824) { // 1024 * 1024 * 1024 diff --git a/apps/app-gui/src/utils.js b/apps/app-gui/src/utils.js index 1bfb9b7..cdafd1f 100644 --- a/apps/app-gui/src/utils.js +++ b/apps/app-gui/src/utils.js @@ -1,3 +1,5 @@ +import convert from 'xml-js'; + export function syntaxHighlight(json) { json = json.replace(/&/g, '&').replace(//g, '>'); return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+-]?\d+)?)/g, function (match) { @@ -38,3 +40,37 @@ export function split(str) { return output; } + +export function xmlToJs(data) { + if (data) { + const tempJs = convert.xml2js(data); + if (tempJs.elements && tempJs.elements.length > 0) { + if (tempJs.elements.length !== 1) console.warn('invalid xml!'); + if (tempJs.elements[0] && tempJs.elements[0].elements) { + return tempJs.elements[0].elements.map((o) => { + const temp = o.attributes; + if (o.elements && o.elements.length > 0) { + temp.options = o.elements.map((o2) => o2.elements[0].text); + } + return temp; + }); + } + } + } + return null; +} + +export function getFileExtension(driver) { + if (!driver) return 'tif'; + + const extensions = driver.getExtensions(); + let extension = driver.getExtension(); + if (extension === '' && extensions !== '') { + extension = extensions.split(' ')[0]; + } + if (extension !== '') { + extension = extension.replace('.', '').replace('/', ''); + } + + return extension; +} diff --git a/apps/app-gui/vue.config.js b/apps/app-gui/vue.config.js index 2320dff..a1a281f 100644 --- a/apps/app-gui/vue.config.js +++ b/apps/app-gui/vue.config.js @@ -6,9 +6,9 @@ module.exports = { plugins: [ new CopyWebpackPlugin({ patterns: [ - { from: '../../build/package/gdal3.js', to: 'package' }, - { from: '../../build/package/gdal3WebAssembly.wasm', to: 'package' }, - { from: '../../build/package/gdal3WebAssembly.data', to: 'package' } + { from: '../../dist/gdal3js.browser.js', to: 'package' }, + { from: '../../dist/gdal3js.wasm', to: 'package' }, + { from: '../../dist/gdal3js.data.txt', to: 'package' } ] }) ] diff --git a/apps/app-mobile/.bundle/config b/apps/app-mobile/.bundle/config new file mode 100644 index 0000000..848943b --- /dev/null +++ b/apps/app-mobile/.bundle/config @@ -0,0 +1,2 @@ +BUNDLE_PATH: "vendor/bundle" +BUNDLE_FORCE_RUBY_PLATFORM: 1 diff --git a/apps/app-mobile/.editorconfig b/apps/app-mobile/.editorconfig new file mode 100644 index 0000000..2e19e31 --- /dev/null +++ b/apps/app-mobile/.editorconfig @@ -0,0 +1,18 @@ + + +# EditorConfig is awesome: https://editorconfig.org + +# top-most EditorConfig file +root = true + +# Unix-style newlines with a newline ending every file +[*] +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 4 + +# Matches multiple files with brace expansion notation +# Set default charset +[*.{js,py}] +charset = utf-8 diff --git a/apps/app-mobile/.eslintrc.js b/apps/app-mobile/.eslintrc.js new file mode 100644 index 0000000..99d9428 --- /dev/null +++ b/apps/app-mobile/.eslintrc.js @@ -0,0 +1,8 @@ +module.exports = { + root: true, + extends: '@react-native', + rules: { + indent: ['error', 4, { SwitchCase: 1 }], + 'react/react-in-jsx-scope': 'off', + }, +}; diff --git a/apps/app-mobile/.gitignore b/apps/app-mobile/.gitignore new file mode 100644 index 0000000..0169f83 --- /dev/null +++ b/apps/app-mobile/.gitignore @@ -0,0 +1,76 @@ +android/app/release + +# OSX +# +.DS_Store + +# Xcode +# +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate +**/.xcode.env.local + +# Android/IntelliJ +# +build/ +.idea +.gradle +local.properties +*.iml +*.hprof +.cxx/ +*.keystore +!debug.keystore + +# node.js +# +node_modules/ +npm-debug.log +yarn-error.log + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the +# screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/ + +**/fastlane/report.xml +**/fastlane/Preview.html +**/fastlane/screenshots +**/fastlane/test_output + +# Bundle artifact +*.jsbundle + +# Ruby / CocoaPods +**/Pods/ +/vendor/bundle/ + +# Temporary files created by Metro to check the health of the file watcher +.metro-health-check* + +# testing +/coverage + +# Yarn +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions diff --git a/apps/app-mobile/.prettierrc.js b/apps/app-mobile/.prettierrc.js new file mode 100644 index 0000000..2849aab --- /dev/null +++ b/apps/app-mobile/.prettierrc.js @@ -0,0 +1,9 @@ +module.exports = { + arrowParens: 'avoid', + bracketSameLine: true, + bracketSpacing: true, + singleQuote: true, + trailingComma: 'all', + tabWidth: 4, + useTabs: false, +}; diff --git a/apps/app-mobile/.watchmanconfig b/apps/app-mobile/.watchmanconfig new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/apps/app-mobile/.watchmanconfig @@ -0,0 +1 @@ +{} diff --git a/apps/app-mobile/Gemfile b/apps/app-mobile/Gemfile new file mode 100644 index 0000000..8d72c37 --- /dev/null +++ b/apps/app-mobile/Gemfile @@ -0,0 +1,9 @@ +source 'https://rubygems.org' + +# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version +ruby ">= 2.6.10" + +# Cocoapods 1.15 introduced a bug which break the build. We will remove the upper +# bound in the template on Cocoapods with next React Native release. +gem 'cocoapods', '>= 1.13', '< 1.15' +gem 'activesupport', '>= 6.1.7.5', '< 7.1.0' diff --git a/apps/app-mobile/Gemfile.lock b/apps/app-mobile/Gemfile.lock new file mode 100644 index 0000000..4ca72a1 --- /dev/null +++ b/apps/app-mobile/Gemfile.lock @@ -0,0 +1,107 @@ +GEM + remote: https://rubygems.org/ + specs: + CFPropertyList (3.0.7) + base64 + nkf + rexml + activesupport (6.1.7.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + algoliasearch (1.27.5) + httpclient (~> 2.8, >= 2.8.3) + json (>= 1.5.1) + atomos (0.1.3) + base64 (0.2.0) + claide (1.1.0) + cocoapods (1.14.3) + addressable (~> 2.8) + claide (>= 1.0.2, < 2.0) + cocoapods-core (= 1.14.3) + cocoapods-deintegrate (>= 1.0.3, < 2.0) + cocoapods-downloader (>= 2.1, < 3.0) + cocoapods-plugins (>= 1.0.0, < 2.0) + cocoapods-search (>= 1.0.0, < 2.0) + cocoapods-trunk (>= 1.6.0, < 2.0) + cocoapods-try (>= 1.1.0, < 2.0) + colored2 (~> 3.1) + escape (~> 0.0.4) + fourflusher (>= 2.3.0, < 3.0) + gh_inspector (~> 1.0) + molinillo (~> 0.8.0) + nap (~> 1.0) + ruby-macho (>= 2.3.0, < 3.0) + xcodeproj (>= 1.23.0, < 2.0) + cocoapods-core (1.14.3) + activesupport (>= 5.0, < 8) + addressable (~> 2.8) + algoliasearch (~> 1.0) + concurrent-ruby (~> 1.1) + fuzzy_match (~> 2.0.4) + nap (~> 1.0) + netrc (~> 0.11) + public_suffix (~> 4.0) + typhoeus (~> 1.0) + cocoapods-deintegrate (1.0.5) + cocoapods-downloader (2.1) + cocoapods-plugins (1.0.0) + nap + cocoapods-search (1.0.1) + cocoapods-trunk (1.6.0) + nap (>= 0.8, < 2.0) + netrc (~> 0.11) + cocoapods-try (1.2.0) + colored2 (3.1.2) + concurrent-ruby (1.3.3) + escape (0.0.4) + ethon (0.16.0) + ffi (>= 1.15.0) + ffi (1.17.0) + fourflusher (2.3.1) + fuzzy_match (2.0.4) + gh_inspector (1.1.3) + httpclient (2.8.3) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + json (2.7.2) + minitest (5.24.1) + molinillo (0.8.0) + nanaimo (0.3.0) + nap (1.1.0) + netrc (0.11.0) + nkf (0.2.0) + public_suffix (4.0.7) + rexml (3.2.9) + strscan + ruby-macho (2.5.1) + strscan (3.1.0) + typhoeus (1.4.1) + ethon (>= 0.9.0) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + xcodeproj (1.24.0) + CFPropertyList (>= 2.3.3, < 4.0) + atomos (~> 0.1.3) + claide (>= 1.0.2, < 2.0) + colored2 (~> 3.1) + nanaimo (~> 0.3.0) + rexml (~> 3.2.4) + zeitwerk (2.6.16) + +PLATFORMS + ruby + +DEPENDENCIES + activesupport (>= 6.1.7.5, < 7.1.0) + cocoapods (>= 1.13, < 1.15) + +RUBY VERSION + ruby 2.6.10p210 + +BUNDLED WITH + 1.17.2 diff --git a/apps/app-mobile/README.md b/apps/app-mobile/README.md new file mode 100644 index 0000000..12470c3 --- /dev/null +++ b/apps/app-mobile/README.md @@ -0,0 +1,79 @@ +This is a new [**React Native**](https://reactnative.dev) project, bootstrapped using [`@react-native-community/cli`](https://github.com/react-native-community/cli). + +# Getting Started + +>**Note**: Make sure you have completed the [React Native - Environment Setup](https://reactnative.dev/docs/environment-setup) instructions till "Creating a new application" step, before proceeding. + +## Step 1: Start the Metro Server + +First, you will need to start **Metro**, the JavaScript _bundler_ that ships _with_ React Native. + +To start Metro, run the following command from the _root_ of your React Native project: + +```bash +# using npm +npm start + +# OR using Yarn +yarn start +``` + +## Step 2: Start your Application + +Let Metro Bundler run in its _own_ terminal. Open a _new_ terminal from the _root_ of your React Native project. Run the following command to start your _Android_ or _iOS_ app: + +### For Android + +```bash +# using npm +npm run android + +# OR using Yarn +yarn android +``` + +### For iOS + +```bash +# using npm +npm run ios + +# OR using Yarn +yarn ios +``` + +If everything is set up _correctly_, you should see your new app running in your _Android Emulator_ or _iOS Simulator_ shortly provided you have set up your emulator/simulator correctly. + +This is one way to run your app — you can also run it directly from within Android Studio and Xcode respectively. + +## Step 3: Modifying your App + +Now that you have successfully run the app, let's modify it. + +1. Open `App.tsx` in your text editor of choice and edit some lines. +2. For **Android**: Press the R key twice or select **"Reload"** from the **Developer Menu** (Ctrl + M (on Window and Linux) or Cmd ⌘ + M (on macOS)) to see your changes! + + For **iOS**: Hit Cmd ⌘ + R in your iOS Simulator to reload the app and see your changes! + +## Congratulations! :tada: + +You've successfully run and modified your React Native App. :partying_face: + +### Now what? + +- If you want to add this new React Native code to an existing application, check out the [Integration guide](https://reactnative.dev/docs/integration-with-existing-apps). +- If you're curious to learn more about React Native, check out the [Introduction to React Native](https://reactnative.dev/docs/getting-started). + +# Troubleshooting + +If you can't get this to work, see the [Troubleshooting](https://reactnative.dev/docs/troubleshooting) page. + +# Learn More + +To learn more about React Native, take a look at the following resources: + +- [React Native Website](https://reactnative.dev) - learn more about React Native. +- [Getting Started](https://reactnative.dev/docs/environment-setup) - an **overview** of React Native and how setup your environment. +- [Learn the Basics](https://reactnative.dev/docs/getting-started) - a **guided tour** of the React Native **basics**. +- [Blog](https://reactnative.dev/blog) - read the latest official React Native **Blog** posts. +- [`@facebook/react-native`](https://github.com/facebook/react-native) - the Open Source; GitHub **repository** for React Native. diff --git a/apps/app-mobile/__tests__/App.test.tsx b/apps/app-mobile/__tests__/App.test.tsx new file mode 100644 index 0000000..9eac6fb --- /dev/null +++ b/apps/app-mobile/__tests__/App.test.tsx @@ -0,0 +1,17 @@ +/** + * @format + */ + +import 'react-native'; +import React from 'react'; +import App from '../App'; + +// Note: import explicitly to use the types shipped with jest. +import {it} from '@jest/globals'; + +// Note: test renderer must be required after react-native. +import renderer from 'react-test-renderer'; + +it('renders correctly', () => { + renderer.create(); +}); diff --git a/apps/app-mobile/android/app/build.gradle b/apps/app-mobile/android/app/build.gradle new file mode 100644 index 0000000..8cf292a --- /dev/null +++ b/apps/app-mobile/android/app/build.gradle @@ -0,0 +1,119 @@ +apply plugin: "com.android.application" +apply plugin: "org.jetbrains.kotlin.android" +apply plugin: "com.facebook.react" +apply from: file("../../node_modules/react-native-vector-icons/fonts.gradle") + +/** + * This is the configuration block to customize your React Native Android app. + * By default you don't need to apply any configuration, just uncomment the lines you need. + */ +react { + /* Folders */ + // The root of your project, i.e. where "package.json" lives. Default is '..' + // root = file("../") + // The folder where the react-native NPM package is. Default is ../node_modules/react-native + // reactNativeDir = file("../node_modules/react-native") + // The folder where the react-native Codegen package is. Default is ../node_modules/@react-native/codegen + // codegenDir = file("../node_modules/@react-native/codegen") + // The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js + // cliFile = file("../node_modules/react-native/cli.js") + + /* Variants */ + // The list of variants to that are debuggable. For those we're going to + // skip the bundling of the JS bundle and the assets. By default is just 'debug'. + // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants. + // debuggableVariants = ["liteDebug", "prodDebug"] + + /* Bundling */ + // A list containing the node command and its flags. Default is just 'node'. + // nodeExecutableAndArgs = ["node"] + // + // The command to run when bundling. By default is 'bundle' + // bundleCommand = "ram-bundle" + // + // The path to the CLI configuration file. Default is empty. + // bundleConfig = file(../rn-cli.config.js) + // + // The name of the generated asset file containing your JS bundle + // bundleAssetName = "MyApplication.android.bundle" + // + // The entry file for bundle generation. Default is 'index.android.js' or 'index.js' + // entryFile = file("../js/MyApplication.android.js") + // + // A list of extra flags to pass to the 'bundle' commands. + // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle + // extraPackagerArgs = [] + + /* Hermes Commands */ + // The hermes compiler command to run. By default it is 'hermesc' + // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc" + // + // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" + // hermesFlags = ["-O", "-output-source-map"] +} + +/** + * Set this to true to Run Proguard on Release builds to minify the Java bytecode. + */ +def enableProguardInReleaseBuilds = false + +/** + * The preferred build flavor of JavaScriptCore (JSC) + * + * For example, to use the international variant, you can use: + * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` + * + * The international variant includes ICU i18n library and necessary data + * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that + * give correct results when using with locales other than en-US. Note that + * this variant is about 6MiB larger per architecture than default. + */ +def jscFlavor = 'org.webkit:android-jsc:+' + +android { + ndkVersion rootProject.ext.ndkVersion + buildToolsVersion rootProject.ext.buildToolsVersion + compileSdk rootProject.ext.compileSdkVersion + + namespace "org.js.gdal3" + defaultConfig { + applicationId "org.js.gdal3" + minSdkVersion rootProject.ext.minSdkVersion + targetSdkVersion rootProject.ext.targetSdkVersion + versionCode 101 + versionName "1.0.1" + } + signingConfigs { + debug { + storeFile file('debug.keystore') + storePassword 'android' + keyAlias 'androiddebugkey' + keyPassword 'android' + } + } + buildTypes { + debug { + signingConfig signingConfigs.debug + } + release { + // Caution! In production, you need to generate your own keystore file. + // see https://reactnative.dev/docs/signed-apk-android. + signingConfig signingConfigs.debug + minifyEnabled enableProguardInReleaseBuilds + proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" + } + } +} + +dependencies { + // The version of react-native is set by the React Native Gradle Plugin + implementation("com.facebook.react:react-android") + + if (hermesEnabled.toBoolean()) { + implementation("com.facebook.react:hermes-android") + } else { + implementation jscFlavor + } +} + +apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) diff --git a/apps/app-mobile/android/app/debug.keystore b/apps/app-mobile/android/app/debug.keystore new file mode 100644 index 0000000000000000000000000000000000000000..364e105ed39fbfd62001429a68140672b06ec0de GIT binary patch literal 2257 zcmchYXEfYt8;7T1^dLH$VOTZ%2NOdOH5j5LYLtZ0q7x-V8_6gU5)#7dkq{HTmsfNq zB3ZqcAxeY^G10@?efK?Q&)M(qInVv!xjx+IKEL}p*K@LYvIzo#AZG>st5|P)KF1_Z;y){W{<7K{nl!CPuE z_^(!C(Ol0n8 zK13*rzAtW>(wULKPRYLd7G18F8#1P`V*9`(Poj26eOXYyBVZPno~Cvvhx7vPjAuZo zF?VD!zB~QG(!zbw#qsxT8%BSpqMZ4f70ZPn-3y$L8{EVbbN9$H`B&Z1quk9tgp5FM zuxp3pJ0b8u|3+#5bkJ4SRnCF2l7#DyLYXYY8*?OuAwK4E6J{0N=O3QNVzQ$L#FKkR zi-c@&!nDvezOV$i$Lr}iF$XEcwnybQ6WZrMKuw8gCL^U#D;q3t&HpTbqyD%vG=TeDlzCT~MXUPC|Leb-Uk+ z=vnMd(|>ld?Fh>V8poP;q;;nc@en$|rnP0ytzD&fFkCeUE^kG9Kx4wUh!!rpjwKDP zyw_e|a^x_w3E zP}}@$g>*LLJ4i0`Gx)qltL}@;mDv}D*xR^oeWcWdPkW@Uu)B^X&4W1$p6}ze!zudJ zyiLg@uggoMIArBr*27EZV7djDg@W1MaL+rcZ-lrANJQ%%>u8)ZMWU@R2qtnmG(acP z0d_^!t>}5W zpT`*2NR+0+SpTHb+6Js4b;%LJB;B_-ChhnU5py}iJtku*hm5F0!iql8Hrpcy1aYbT z1*dKC5ua6pMX@@iONI?Hpr%h;&YaXp9n!ND7-=a%BD7v&g zOO41M6EbE24mJ#S$Ui0-brR5ML%@|ndz^)YLMMV1atna{Fw<;TF@>d&F|!Z>8eg>>hkFrV)W+uv=`^F9^e zzzM2*oOjT9%gLoub%(R57p-`TXFe#oh1_{&N-YN z<}artH|m=d8TQuKSWE)Z%puU|g|^^NFwC#N=@dPhasyYjoy(fdEVfKR@cXKHZV-`06HsP`|Ftx;8(YD$fFXumLWbGnu$GMqRncXYY9mwz9$ap zQtfZB^_BeNYITh^hA7+(XNFox5WMeG_LtJ%*Q}$8VKDI_p8^pqX)}NMb`0e|wgF7D zuQACY_Ua<1ri{;Jwt@_1sW9zzdgnyh_O#8y+C;LcZq6=4e^cs6KvmK@$vVpKFGbQ= z$)Eux5C|Fx;Gtmv9^#Y-g@7Rt7*eLp5n!gJmn7&B_L$G?NCN`AP>cXQEz}%F%K;vUs{+l4Q{}eWW;ATe2 zqvXzxoIDy(u;F2q1JH7Sf;{jy_j})F+cKlIOmNfjBGHoG^CN zM|Ho&&X|L-36f}Q-obEACz`sI%2f&k>z5c$2TyTSj~vmO)BW~+N^kt`Jt@R|s!){H ze1_eCrlNaPkJQhL$WG&iRvF*YG=gXd1IyYQ9ew|iYn7r~g!wOnw;@n42>enAxBv*A zEmV*N#sxdicyNM=A4|yaOC5MByts}s_Hpfj|y<6G=o=!3S@eIFKDdpR7|FY>L&Wat&oW&cm&X~ z5Bt>Fcq(fgnvlvLSYg&o6>&fY`ODg4`V^lWWD=%oJ#Kbad2u~! zLECFS*??>|vDsNR&pH=Ze0Eo`sC_G`OjoEKVHY|wmwlX&(XBE<@sx3Hd^gtd-fNwUHsylg06p`U2y_={u}Bc + + + + diff --git a/apps/app-mobile/android/app/src/main/AndroidManifest.xml b/apps/app-mobile/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..ec320ed --- /dev/null +++ b/apps/app-mobile/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + diff --git a/apps/app-mobile/android/app/src/main/java/org/js/gdal3/MainActivity.kt b/apps/app-mobile/android/app/src/main/java/org/js/gdal3/MainActivity.kt new file mode 100644 index 0000000..b0bd7f4 --- /dev/null +++ b/apps/app-mobile/android/app/src/main/java/org/js/gdal3/MainActivity.kt @@ -0,0 +1,22 @@ +package org.js.gdal3 + +import com.facebook.react.ReactActivity +import com.facebook.react.ReactActivityDelegate +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled +import com.facebook.react.defaults.DefaultReactActivityDelegate + +class MainActivity : ReactActivity() { + + /** + * Returns the name of the main component registered from JavaScript. This is used to schedule + * rendering of the component. + */ + override fun getMainComponentName(): String = "gdal3jsMobile3" + + /** + * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate] + * which allows you to enable New Architecture with a single boolean flags [fabricEnabled] + */ + override fun createReactActivityDelegate(): ReactActivityDelegate = + DefaultReactActivityDelegate(this, mainComponentName, fabricEnabled) +} diff --git a/apps/app-mobile/android/app/src/main/java/org/js/gdal3/MainApplication.kt b/apps/app-mobile/android/app/src/main/java/org/js/gdal3/MainApplication.kt new file mode 100644 index 0000000..2770805 --- /dev/null +++ b/apps/app-mobile/android/app/src/main/java/org/js/gdal3/MainApplication.kt @@ -0,0 +1,43 @@ +package org.js.gdal3 + +import android.app.Application +import com.facebook.react.PackageList +import com.facebook.react.ReactApplication +import com.facebook.react.ReactHost +import com.facebook.react.ReactNativeHost +import com.facebook.react.ReactPackage +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load +import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost +import com.facebook.react.defaults.DefaultReactNativeHost +import com.facebook.soloader.SoLoader + +class MainApplication : Application(), ReactApplication { + + override val reactNativeHost: ReactNativeHost = + object : DefaultReactNativeHost(this) { + override fun getPackages(): List = + PackageList(this).packages.apply { + // Packages that cannot be autolinked yet can be added manually here, for example: + // add(MyReactNativePackage()) + } + + override fun getJSMainModuleName(): String = "index" + + override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG + + override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED + override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED + } + + override val reactHost: ReactHost + get() = getDefaultReactHost(applicationContext, reactNativeHost) + + override fun onCreate() { + super.onCreate() + SoLoader.init(this, false) + if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { + // If you opted-in for the New Architecture, we load the native entry point for this app. + load() + } + } +} diff --git a/apps/app-mobile/android/app/src/main/res/drawable/rn_edit_text_material.xml b/apps/app-mobile/android/app/src/main/res/drawable/rn_edit_text_material.xml new file mode 100644 index 0000000..5c25e72 --- /dev/null +++ b/apps/app-mobile/android/app/src/main/res/drawable/rn_edit_text_material.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + diff --git a/apps/app-mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/apps/app-mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d989df0c0148bbe8a53cd34cc3a7263d7ef32a86 GIT binary patch literal 3220 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 Eg1L0l8~^|S literal 0 HcmV?d00001 diff --git a/apps/app-mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/apps/app-mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..b8bb7aa20082651af67bdd0aeeb0c47b77f2b3f8 GIT binary patch literal 4178 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 cNYxtrAL(Y_B07*qoM6N<$f)jh@TL1t6 literal 0 HcmV?d00001 diff --git a/apps/app-mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/apps/app-mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..168a7c4dec81dd21eaf49e53c3b2212a3629ac53 GIT binary patch literal 7232 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 O0000&-Et3i2g2qp{%S->a6%dG{4bR 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 + gdal3.js + diff --git a/apps/app-mobile/android/app/src/main/res/values/styles.xml b/apps/app-mobile/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..7ba83a2 --- /dev/null +++ b/apps/app-mobile/android/app/src/main/res/values/styles.xml @@ -0,0 +1,9 @@ + + + + + + diff --git a/apps/app-mobile/android/build.gradle b/apps/app-mobile/android/build.gradle new file mode 100644 index 0000000..d051950 --- /dev/null +++ b/apps/app-mobile/android/build.gradle @@ -0,0 +1,21 @@ +buildscript { + ext { + buildToolsVersion = "34.0.0" + minSdkVersion = 24 + compileSdkVersion = 34 + targetSdkVersion = 34 + ndkVersion = "26.1.10909125" + kotlinVersion = "1.9.22" + } + repositories { + google() + mavenCentral() + } + dependencies { + classpath("com.android.tools.build:gradle") + classpath("com.facebook.react:react-native-gradle-plugin") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") + } +} + +apply plugin: "com.facebook.react.rootproject" diff --git a/apps/app-mobile/android/gradle.properties b/apps/app-mobile/android/gradle.properties new file mode 100644 index 0000000..a46a5b9 --- /dev/null +++ b/apps/app-mobile/android/gradle.properties @@ -0,0 +1,41 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m +org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true + +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app's APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Automatically convert third-party libraries to use AndroidX +android.enableJetifier=true + +# Use this property to specify which architecture you want to build. +# You can also override it from the CLI using +# ./gradlew -PreactNativeArchitectures=x86_64 +reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 + +# Use this property to enable support to the new architecture. +# This will allow you to use TurboModules and the Fabric render in +# your application. You should enable this flag either if you want +# to write custom TurboModules/Fabric components OR use libraries that +# are providing them. +newArchEnabled=false + +# Use this property to enable or disable the Hermes JS engine. +# If set to false, you will be using JSC instead. +hermesEnabled=true diff --git a/apps/app-mobile/android/gradle/wrapper/gradle-wrapper.jar b/apps/app-mobile/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..7f93135c49b765f8051ef9d0a6055ff8e46073d8 GIT binary patch literal 63721 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鯊%1Et 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⁢ zv5o9#E7!G0XmdzfsS{efPNi`1b44~SZ4Z8fuX!I}#8g+(wxzQwUT#Xb2(tbY1+EUhGKoT@KEU9Ktl>_0 z%bjDJg;#*gtJZv!-Zs`?^}v5eKmnbjqlvnSzE@_SP|LG_PJ6CYU+6zY6>92%E+ z=j@TZf-iW4(%U{lnYxQA;7Q!b;^brF8n0D>)`q5>|WDDXLrqYU_tKN2>=#@~OE7grMnNh?UOz-O~6 z6%rHy{#h9K0AT+lDC7q4{hw^|q6*Ry;;L%Q@)Ga}$60_q%D)rv(CtS$CQbpq9|y1e zRSrN4;$Jyl{m5bZw`$8TGvb}(LpY{-cQ)fcyJv7l3S52TLXVDsphtv&aPuDk1OzCA z4A^QtC(!11`IsNx_HnSy?>EKpHJWT^wmS~hc^p^zIIh@9f6U@I2 zC=Mve{j2^)mS#U$e{@Q?SO6%LDsXz@SY+=cK_QMmXBIU)j!$ajc-zLx3V60EXJ!qC zi<%2x8Q24YN+&8U@CIlN zrZkcT9yh%LrlGS9`G)KdP(@9Eo-AQz@8GEFWcb7U=a0H^ZVbLmz{+&M7W(nXJ4sN8 zJLR7eeK(K8`2-}j(T7JsO`L!+CvbueT%izanm-^A1Dn{`1Nw`9P?cq;7no+XfC`K(GO9?O^5zNIt4M+M8LM0=7Gz8UA@Z0N+lg+cX)NfazRu z5D)~HA^(u%w^cz+@2@_#S|u>GpB+j4KzQ^&Wcl9f z&hG#bCA(Yk0D&t&aJE^xME^&E-&xGHhXn%}psEIj641H+Nl-}boj;)Zt*t(4wZ5DN z@GXF$bL=&pBq-#vkTkh>7hl%K5|3 z{`Vn9b$iR-SoGENp}bn4;fR3>9sA%X2@1L3aE9yTra;Wb#_`xWwLSLdfu+PAu+o3| zGVnpzPr=ch{uuoHjtw7+_!L_2;knQ!DuDl0R`|%jr+}jFzXtrHIKc323?JO{l&;VF z*L1+}JU7%QJOg|5|Tc|D8fN zJORAg=_vsy{ak|o);@)Yh8Lkcg@$FG3k@ep36BRa^>~UmnRPziS>Z=`Jb2x*Q#`%A zU*i3&Vg?TluO@X0O;r2Jl6LKLUOVhSqg1*qOt^|8*c7 zo(298@+r$k_wQNGHv{|$tW(T8L+4_`FQ{kEW5Jgg{yf7ey4ss_(SNKfz(N9lx&a;< je(UuV8hP?p&}TPdm1I$XmG#(RzlD&B2izSj9sl%y5~4qc literal 0 HcmV?d00001 diff --git a/apps/app-mobile/android/gradle/wrapper/gradle-wrapper.properties b/apps/app-mobile/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..2ea3535 --- /dev/null +++ b/apps/app-mobile/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-all.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/apps/app-mobile/android/gradlew b/apps/app-mobile/android/gradlew new file mode 100755 index 0000000..1aa94a4 --- /dev/null +++ b/apps/app-mobile/android/gradlew @@ -0,0 +1,249 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/apps/app-mobile/android/gradlew.bat b/apps/app-mobile/android/gradlew.bat new file mode 100644 index 0000000..7101f8e --- /dev/null +++ b/apps/app-mobile/android/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/apps/app-mobile/android/settings.gradle b/apps/app-mobile/android/settings.gradle new file mode 100644 index 0000000..3a4c7d3 --- /dev/null +++ b/apps/app-mobile/android/settings.gradle @@ -0,0 +1,4 @@ +rootProject.name = 'gdal3jsMobile3' +apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) +include ':app' +includeBuild('../node_modules/@react-native/gradle-plugin') diff --git a/apps/app-mobile/app.json b/apps/app-mobile/app.json new file mode 100644 index 0000000..06d221f --- /dev/null +++ b/apps/app-mobile/app.json @@ -0,0 +1,4 @@ +{ + "name": "gdal3jsMobile3", + "displayName": "gdal3.js" +} diff --git a/apps/app-mobile/babel.config.js b/apps/app-mobile/babel.config.js new file mode 100644 index 0000000..cd6f2cf --- /dev/null +++ b/apps/app-mobile/babel.config.js @@ -0,0 +1,4 @@ +module.exports = { + presets: ['module:@react-native/babel-preset'], + plugins: ['react-native-reanimated/plugin'], +}; diff --git a/apps/app-mobile/cppjs.config.mjs b/apps/app-mobile/cppjs.config.mjs new file mode 100644 index 0000000..824d667 --- /dev/null +++ b/apps/app-mobile/cppjs.config.mjs @@ -0,0 +1,13 @@ +import getDirName from 'cpp.js/src/utils/getDirName.js'; +import Gdal3JS from 'gdal3.js/cppjs.config.mjs'; +// import Sqlite3 from 'cppjs-package-sqlite3/cppjs.config.js'; + +export default { + dependencies: [ + Gdal3JS, + // Sqlite3, + ], + paths: { + project: getDirName(import.meta.url), + } +} diff --git a/apps/app-mobile/index.js b/apps/app-mobile/index.js new file mode 100644 index 0000000..69303b3 --- /dev/null +++ b/apps/app-mobile/index.js @@ -0,0 +1,9 @@ +/** + * @format + */ + +import {AppRegistry} from 'react-native'; +import App from './src/App'; +import {name as appName} from './app.json'; + +AppRegistry.registerComponent(appName, () => App); diff --git a/apps/app-mobile/ios/.xcode.env b/apps/app-mobile/ios/.xcode.env new file mode 100644 index 0000000..3d5782c --- /dev/null +++ b/apps/app-mobile/ios/.xcode.env @@ -0,0 +1,11 @@ +# This `.xcode.env` file is versioned and is used to source the environment +# used when running script phases inside Xcode. +# To customize your local environment, you can create an `.xcode.env.local` +# file that is not versioned. + +# NODE_BINARY variable contains the PATH to the node executable. +# +# Customize the NODE_BINARY variable here. +# For example, to use nvm with brew, add the following line +# . "$(brew --prefix nvm)/nvm.sh" --no-use +export NODE_BINARY=$(command -v node) diff --git a/apps/app-mobile/ios/Podfile b/apps/app-mobile/ios/Podfile new file mode 100644 index 0000000..0ce0541 --- /dev/null +++ b/apps/app-mobile/ios/Podfile @@ -0,0 +1,40 @@ +# Resolve react_native_pods.rb with node to allow for hoisting +require Pod::Executable.execute_command('node', ['-p', + 'require.resolve( + "react-native/scripts/react_native_pods.rb", + {paths: [process.argv[1]]}, + )', __dir__]).strip + +platform :ios, min_ios_version_supported +prepare_react_native_project! + +linkage = ENV['USE_FRAMEWORKS'] +if linkage != nil + Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green + use_frameworks! :linkage => linkage.to_sym +end + +target 'gdal3jsMobile3' do + config = use_native_modules! + + use_react_native!( + :path => config[:reactNativePath], + # An absolute path to your application root. + :app_path => "#{Pod::Config.instance.installation_root}/.." + ) + + target 'gdal3jsMobile3Tests' do + inherit! :complete + # Pods for testing + end + + post_install do |installer| + # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202 + react_native_post_install( + installer, + config[:reactNativePath], + :mac_catalyst_enabled => false, + # :ccache_enabled => true + ) + end +end diff --git a/apps/app-mobile/ios/Podfile.lock b/apps/app-mobile/ios/Podfile.lock new file mode 100644 index 0000000..d1dc776 --- /dev/null +++ b/apps/app-mobile/ios/Podfile.lock @@ -0,0 +1,1586 @@ +PODS: + - boost (1.83.0) + - cppjs-package-expat (2.6.2) + - cppjs-package-gdal (3.9.2) + - cppjs-package-geos (3.12.2) + - cppjs-package-geotiff (1.7.3) + - cppjs-package-iconv (1.17) + - cppjs-package-proj (9.4.1) + - cppjs-package-spatialite (5.1.0) + - cppjs-package-sqlite3 (3.46.1) + - cppjs-package-tiff (4.6.0) + - cppjs-package-webp (1.4.0) + - cppjs-package-zlib (1.3.1) + - DoubleConversion (1.1.6) + - FBLazyVector (0.74.3) + - fmt (9.1.0) + - gdal3.js (3.0.0-alpha.5) + - glog (0.3.5) + - hermes-engine (0.74.3): + - hermes-engine/Pre-built (= 0.74.3) + - hermes-engine/Pre-built (0.74.3) + - RCT-Folly (2024.01.01.00): + - boost + - DoubleConversion + - fmt (= 9.1.0) + - glog + - RCT-Folly/Default (= 2024.01.01.00) + - RCT-Folly/Default (2024.01.01.00): + - boost + - DoubleConversion + - fmt (= 9.1.0) + - glog + - RCT-Folly/Fabric (2024.01.01.00): + - boost + - DoubleConversion + - fmt (= 9.1.0) + - glog + - RCTDeprecation (0.74.3) + - RCTRequired (0.74.3) + - RCTTypeSafety (0.74.3): + - FBLazyVector (= 0.74.3) + - RCTRequired (= 0.74.3) + - React-Core (= 0.74.3) + - React (0.74.3): + - React-Core (= 0.74.3) + - React-Core/DevSupport (= 0.74.3) + - React-Core/RCTWebSocket (= 0.74.3) + - React-RCTActionSheet (= 0.74.3) + - React-RCTAnimation (= 0.74.3) + - React-RCTBlob (= 0.74.3) + - React-RCTImage (= 0.74.3) + - React-RCTLinking (= 0.74.3) + - React-RCTNetwork (= 0.74.3) + - React-RCTSettings (= 0.74.3) + - React-RCTText (= 0.74.3) + - React-RCTVibration (= 0.74.3) + - React-callinvoker (0.74.3) + - React-Codegen (0.74.3): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-FabricImage + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-NativeModulesApple + - React-rendererdebug + - React-utils + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - React-Core (0.74.3): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default (= 0.74.3) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/CoreModulesHeaders (0.74.3): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/Default (0.74.3): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/DevSupport (0.74.3): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default (= 0.74.3) + - React-Core/RCTWebSocket (= 0.74.3) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTActionSheetHeaders (0.74.3): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTAnimationHeaders (0.74.3): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTBlobHeaders (0.74.3): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTImageHeaders (0.74.3): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTLinkingHeaders (0.74.3): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTNetworkHeaders (0.74.3): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTSettingsHeaders (0.74.3): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTTextHeaders (0.74.3): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTVibrationHeaders (0.74.3): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTWebSocket (0.74.3): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default (= 0.74.3) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-CoreModules (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - RCT-Folly (= 2024.01.01.00) + - RCTTypeSafety (= 0.74.3) + - React-Codegen + - React-Core/CoreModulesHeaders (= 0.74.3) + - React-jsi (= 0.74.3) + - React-jsinspector + - React-NativeModulesApple + - React-RCTBlob + - React-RCTImage (= 0.74.3) + - ReactCommon + - SocketRocket (= 0.7.0) + - React-cxxreact (0.74.3): + - boost (= 1.83.0) + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker (= 0.74.3) + - React-debug (= 0.74.3) + - React-jsi (= 0.74.3) + - React-jsinspector + - React-logger (= 0.74.3) + - React-perflogger (= 0.74.3) + - React-runtimeexecutor (= 0.74.3) + - React-debug (0.74.3) + - React-Fabric (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/animations (= 0.74.3) + - React-Fabric/attributedstring (= 0.74.3) + - React-Fabric/componentregistry (= 0.74.3) + - React-Fabric/componentregistrynative (= 0.74.3) + - React-Fabric/components (= 0.74.3) + - React-Fabric/core (= 0.74.3) + - React-Fabric/imagemanager (= 0.74.3) + - React-Fabric/leakchecker (= 0.74.3) + - React-Fabric/mounting (= 0.74.3) + - React-Fabric/scheduler (= 0.74.3) + - React-Fabric/telemetry (= 0.74.3) + - React-Fabric/templateprocessor (= 0.74.3) + - React-Fabric/textlayoutmanager (= 0.74.3) + - React-Fabric/uimanager (= 0.74.3) + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/animations (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/attributedstring (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/componentregistry (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/componentregistrynative (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/components/inputaccessory (= 0.74.3) + - React-Fabric/components/legacyviewmanagerinterop (= 0.74.3) + - React-Fabric/components/modal (= 0.74.3) + - React-Fabric/components/rncore (= 0.74.3) + - React-Fabric/components/root (= 0.74.3) + - React-Fabric/components/safeareaview (= 0.74.3) + - React-Fabric/components/scrollview (= 0.74.3) + - React-Fabric/components/text (= 0.74.3) + - React-Fabric/components/textinput (= 0.74.3) + - React-Fabric/components/unimplementedview (= 0.74.3) + - React-Fabric/components/view (= 0.74.3) + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/inputaccessory (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/legacyviewmanagerinterop (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/modal (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/rncore (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/root (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/safeareaview (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/scrollview (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/text (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/textinput (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/unimplementedview (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/view (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-Fabric/core (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/imagemanager (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/leakchecker (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/mounting (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/scheduler (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/telemetry (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/templateprocessor (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/textlayoutmanager (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/uimanager + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/uimanager (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-FabricImage (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired (= 0.74.3) + - RCTTypeSafety (= 0.74.3) + - React-Fabric + - React-graphics + - React-ImageManager + - React-jsi + - React-jsiexecutor (= 0.74.3) + - React-logger + - React-rendererdebug + - React-utils + - ReactCommon + - Yoga + - React-featureflags (0.74.3) + - React-graphics (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-Core/Default (= 0.74.3) + - React-utils + - React-hermes (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-cxxreact (= 0.74.3) + - React-jsi + - React-jsiexecutor (= 0.74.3) + - React-jsinspector + - React-perflogger (= 0.74.3) + - React-runtimeexecutor + - React-ImageManager (0.74.3): + - glog + - RCT-Folly/Fabric + - React-Core/Default + - React-debug + - React-Fabric + - React-graphics + - React-rendererdebug + - React-utils + - React-jserrorhandler (0.74.3): + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-debug + - React-jsi + - React-Mapbuffer + - React-jsi (0.74.3): + - boost (= 1.83.0) + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-jsiexecutor (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-cxxreact (= 0.74.3) + - React-jsi (= 0.74.3) + - React-jsinspector + - React-perflogger (= 0.74.3) + - React-jsinspector (0.74.3): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-featureflags + - React-jsi + - React-runtimeexecutor (= 0.74.3) + - React-jsitracing (0.74.3): + - React-jsi + - React-logger (0.74.3): + - glog + - React-Mapbuffer (0.74.3): + - glog + - React-debug + - react-native-cppjs (1.0.0-alpha.16) + - react-native-cppjs-ios-helper (1.0.0-alpha.4): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Codegen + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - react-native-document-picker (9.3.0): + - React-Core + - react-native-safe-area-context (4.10.8): + - React-Core + - React-nativeconfig (0.74.3) + - React-NativeModulesApple (0.74.3): + - glog + - hermes-engine + - React-callinvoker + - React-Core + - React-cxxreact + - React-jsi + - React-jsinspector + - React-runtimeexecutor + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - React-perflogger (0.74.3) + - React-RCTActionSheet (0.74.3): + - React-Core/RCTActionSheetHeaders (= 0.74.3) + - React-RCTAnimation (0.74.3): + - RCT-Folly (= 2024.01.01.00) + - RCTTypeSafety + - React-Codegen + - React-Core/RCTAnimationHeaders + - React-jsi + - React-NativeModulesApple + - ReactCommon + - React-RCTAppDelegate (0.74.3): + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Codegen + - React-Core + - React-CoreModules + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-nativeconfig + - React-NativeModulesApple + - React-RCTFabric + - React-RCTImage + - React-RCTNetwork + - React-rendererdebug + - React-RuntimeApple + - React-RuntimeCore + - React-RuntimeHermes + - React-runtimescheduler + - React-utils + - ReactCommon + - React-RCTBlob (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-Codegen + - React-Core/RCTBlobHeaders + - React-Core/RCTWebSocket + - React-jsi + - React-jsinspector + - React-NativeModulesApple + - React-RCTNetwork + - ReactCommon + - React-RCTFabric (0.74.3): + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-Core + - React-debug + - React-Fabric + - React-FabricImage + - React-featureflags + - React-graphics + - React-ImageManager + - React-jsi + - React-jsinspector + - React-nativeconfig + - React-RCTImage + - React-RCTText + - React-rendererdebug + - React-runtimescheduler + - React-utils + - Yoga + - React-RCTImage (0.74.3): + - RCT-Folly (= 2024.01.01.00) + - RCTTypeSafety + - React-Codegen + - React-Core/RCTImageHeaders + - React-jsi + - React-NativeModulesApple + - React-RCTNetwork + - ReactCommon + - React-RCTLinking (0.74.3): + - React-Codegen + - React-Core/RCTLinkingHeaders (= 0.74.3) + - React-jsi (= 0.74.3) + - React-NativeModulesApple + - ReactCommon + - ReactCommon/turbomodule/core (= 0.74.3) + - React-RCTNetwork (0.74.3): + - RCT-Folly (= 2024.01.01.00) + - RCTTypeSafety + - React-Codegen + - React-Core/RCTNetworkHeaders + - React-jsi + - React-NativeModulesApple + - ReactCommon + - React-RCTSettings (0.74.3): + - RCT-Folly (= 2024.01.01.00) + - RCTTypeSafety + - React-Codegen + - React-Core/RCTSettingsHeaders + - React-jsi + - React-NativeModulesApple + - ReactCommon + - React-RCTText (0.74.3): + - React-Core/RCTTextHeaders (= 0.74.3) + - Yoga + - React-RCTVibration (0.74.3): + - RCT-Folly (= 2024.01.01.00) + - React-Codegen + - React-Core/RCTVibrationHeaders + - React-jsi + - React-NativeModulesApple + - ReactCommon + - React-rendererdebug (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - RCT-Folly (= 2024.01.01.00) + - React-debug + - React-rncore (0.74.3) + - React-RuntimeApple (0.74.3): + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-callinvoker + - React-Core/Default + - React-CoreModules + - React-cxxreact + - React-jserrorhandler + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-Mapbuffer + - React-NativeModulesApple + - React-RCTFabric + - React-RuntimeCore + - React-runtimeexecutor + - React-RuntimeHermes + - React-utils + - React-RuntimeCore (0.74.3): + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-cxxreact + - React-featureflags + - React-jserrorhandler + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - React-runtimeexecutor (0.74.3): + - React-jsi (= 0.74.3) + - React-RuntimeHermes (0.74.3): + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-featureflags + - React-hermes + - React-jsi + - React-jsinspector + - React-jsitracing + - React-nativeconfig + - React-RuntimeCore + - React-utils + - React-runtimescheduler (0.74.3): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker + - React-cxxreact + - React-debug + - React-featureflags + - React-jsi + - React-rendererdebug + - React-runtimeexecutor + - React-utils + - React-utils (0.74.3): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-debug + - React-jsi (= 0.74.3) + - ReactCommon (0.74.3): + - ReactCommon/turbomodule (= 0.74.3) + - ReactCommon/turbomodule (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker (= 0.74.3) + - React-cxxreact (= 0.74.3) + - React-jsi (= 0.74.3) + - React-logger (= 0.74.3) + - React-perflogger (= 0.74.3) + - ReactCommon/turbomodule/bridging (= 0.74.3) + - ReactCommon/turbomodule/core (= 0.74.3) + - ReactCommon/turbomodule/bridging (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker (= 0.74.3) + - React-cxxreact (= 0.74.3) + - React-jsi (= 0.74.3) + - React-logger (= 0.74.3) + - React-perflogger (= 0.74.3) + - ReactCommon/turbomodule/core (0.74.3): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker (= 0.74.3) + - React-cxxreact (= 0.74.3) + - React-debug (= 0.74.3) + - React-jsi (= 0.74.3) + - React-logger (= 0.74.3) + - React-perflogger (= 0.74.3) + - React-utils (= 0.74.3) + - RNFS (2.20.0): + - React-Core + - RNGestureHandler (2.18.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Codegen + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - RNReanimated (3.14.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Codegen + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - RNScreens (3.32.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Codegen + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-RCTImage + - React-rendererdebug + - React-utils + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - SocketRocket (0.7.0) + - Yoga (0.0.0) + +DEPENDENCIES: + - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) + - cppjs-package-expat (from `../node_modules/cppjs-package-expat`) + - cppjs-package-gdal (from `../node_modules/cppjs-package-gdal`) + - cppjs-package-geos (from `../node_modules/cppjs-package-geos`) + - cppjs-package-geotiff (from `../node_modules/cppjs-package-geotiff`) + - cppjs-package-iconv (from `../node_modules/cppjs-package-iconv`) + - cppjs-package-proj (from `../node_modules/cppjs-package-proj`) + - cppjs-package-spatialite (from `../node_modules/cppjs-package-spatialite`) + - cppjs-package-sqlite3 (from `../node_modules/cppjs-package-sqlite3`) + - cppjs-package-tiff (from `../node_modules/cppjs-package-tiff`) + - cppjs-package-webp (from `../node_modules/cppjs-package-webp`) + - cppjs-package-zlib (from `../node_modules/cppjs-package-zlib`) + - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) + - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) + - fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`) + - gdal3.js (from `../node_modules/gdal3.js`) + - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) + - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) + - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) + - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) + - RCTDeprecation (from `../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`) + - RCTRequired (from `../node_modules/react-native/Libraries/Required`) + - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) + - React (from `../node_modules/react-native/`) + - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) + - React-Codegen (from `build/generated/ios`) + - React-Core (from `../node_modules/react-native/`) + - React-Core/RCTWebSocket (from `../node_modules/react-native/`) + - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) + - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) + - React-debug (from `../node_modules/react-native/ReactCommon/react/debug`) + - React-Fabric (from `../node_modules/react-native/ReactCommon`) + - React-FabricImage (from `../node_modules/react-native/ReactCommon`) + - React-featureflags (from `../node_modules/react-native/ReactCommon/react/featureflags`) + - React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`) + - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) + - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`) + - React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`) + - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) + - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) + - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector-modern`) + - React-jsitracing (from `../node_modules/react-native/ReactCommon/hermes/executor/`) + - React-logger (from `../node_modules/react-native/ReactCommon/logger`) + - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`) + - react-native-cppjs (from `../node_modules/cppjs-plugin-react-native`) + - react-native-cppjs-ios-helper (from `../node_modules/cppjs-plugin-react-native-ios-helper`) + - react-native-document-picker (from `../node_modules/react-native-document-picker`) + - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) + - React-nativeconfig (from `../node_modules/react-native/ReactCommon`) + - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) + - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) + - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) + - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) + - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`) + - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) + - React-RCTFabric (from `../node_modules/react-native/React`) + - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) + - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) + - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) + - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) + - React-RCTText (from `../node_modules/react-native/Libraries/Text`) + - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) + - React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`) + - React-rncore (from `../node_modules/react-native/ReactCommon`) + - React-RuntimeApple (from `../node_modules/react-native/ReactCommon/react/runtime/platform/ios`) + - React-RuntimeCore (from `../node_modules/react-native/ReactCommon/react/runtime`) + - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) + - React-RuntimeHermes (from `../node_modules/react-native/ReactCommon/react/runtime`) + - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) + - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`) + - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) + - RNFS (from `../node_modules/react-native-fs`) + - RNGestureHandler (from `../node_modules/react-native-gesture-handler`) + - RNReanimated (from `../node_modules/react-native-reanimated`) + - RNScreens (from `../node_modules/react-native-screens`) + - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) + +SPEC REPOS: + trunk: + - SocketRocket + +EXTERNAL SOURCES: + boost: + :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" + cppjs-package-expat: + :path: "../node_modules/cppjs-package-expat" + cppjs-package-gdal: + :path: "../node_modules/cppjs-package-gdal" + cppjs-package-geos: + :path: "../node_modules/cppjs-package-geos" + cppjs-package-geotiff: + :path: "../node_modules/cppjs-package-geotiff" + cppjs-package-iconv: + :path: "../node_modules/cppjs-package-iconv" + cppjs-package-proj: + :path: "../node_modules/cppjs-package-proj" + cppjs-package-spatialite: + :path: "../node_modules/cppjs-package-spatialite" + cppjs-package-sqlite3: + :path: "../node_modules/cppjs-package-sqlite3" + cppjs-package-tiff: + :path: "../node_modules/cppjs-package-tiff" + cppjs-package-webp: + :path: "../node_modules/cppjs-package-webp" + cppjs-package-zlib: + :path: "../node_modules/cppjs-package-zlib" + DoubleConversion: + :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" + FBLazyVector: + :path: "../node_modules/react-native/Libraries/FBLazyVector" + fmt: + :podspec: "../node_modules/react-native/third-party-podspecs/fmt.podspec" + gdal3.js: + :path: "../node_modules/gdal3.js" + glog: + :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" + hermes-engine: + :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" + :tag: hermes-2024-06-28-RNv0.74.3-7bda0c267e76d11b68a585f84cfdd65000babf85 + RCT-Folly: + :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" + RCTDeprecation: + :path: "../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation" + RCTRequired: + :path: "../node_modules/react-native/Libraries/Required" + RCTTypeSafety: + :path: "../node_modules/react-native/Libraries/TypeSafety" + React: + :path: "../node_modules/react-native/" + React-callinvoker: + :path: "../node_modules/react-native/ReactCommon/callinvoker" + React-Codegen: + :path: build/generated/ios + React-Core: + :path: "../node_modules/react-native/" + React-CoreModules: + :path: "../node_modules/react-native/React/CoreModules" + React-cxxreact: + :path: "../node_modules/react-native/ReactCommon/cxxreact" + React-debug: + :path: "../node_modules/react-native/ReactCommon/react/debug" + React-Fabric: + :path: "../node_modules/react-native/ReactCommon" + React-FabricImage: + :path: "../node_modules/react-native/ReactCommon" + React-featureflags: + :path: "../node_modules/react-native/ReactCommon/react/featureflags" + React-graphics: + :path: "../node_modules/react-native/ReactCommon/react/renderer/graphics" + React-hermes: + :path: "../node_modules/react-native/ReactCommon/hermes" + React-ImageManager: + :path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios" + React-jserrorhandler: + :path: "../node_modules/react-native/ReactCommon/jserrorhandler" + React-jsi: + :path: "../node_modules/react-native/ReactCommon/jsi" + React-jsiexecutor: + :path: "../node_modules/react-native/ReactCommon/jsiexecutor" + React-jsinspector: + :path: "../node_modules/react-native/ReactCommon/jsinspector-modern" + React-jsitracing: + :path: "../node_modules/react-native/ReactCommon/hermes/executor/" + React-logger: + :path: "../node_modules/react-native/ReactCommon/logger" + React-Mapbuffer: + :path: "../node_modules/react-native/ReactCommon" + react-native-cppjs: + :path: "../node_modules/cppjs-plugin-react-native" + react-native-cppjs-ios-helper: + :path: "../node_modules/cppjs-plugin-react-native-ios-helper" + react-native-document-picker: + :path: "../node_modules/react-native-document-picker" + react-native-safe-area-context: + :path: "../node_modules/react-native-safe-area-context" + React-nativeconfig: + :path: "../node_modules/react-native/ReactCommon" + React-NativeModulesApple: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios" + React-perflogger: + :path: "../node_modules/react-native/ReactCommon/reactperflogger" + React-RCTActionSheet: + :path: "../node_modules/react-native/Libraries/ActionSheetIOS" + React-RCTAnimation: + :path: "../node_modules/react-native/Libraries/NativeAnimation" + React-RCTAppDelegate: + :path: "../node_modules/react-native/Libraries/AppDelegate" + React-RCTBlob: + :path: "../node_modules/react-native/Libraries/Blob" + React-RCTFabric: + :path: "../node_modules/react-native/React" + React-RCTImage: + :path: "../node_modules/react-native/Libraries/Image" + React-RCTLinking: + :path: "../node_modules/react-native/Libraries/LinkingIOS" + React-RCTNetwork: + :path: "../node_modules/react-native/Libraries/Network" + React-RCTSettings: + :path: "../node_modules/react-native/Libraries/Settings" + React-RCTText: + :path: "../node_modules/react-native/Libraries/Text" + React-RCTVibration: + :path: "../node_modules/react-native/Libraries/Vibration" + React-rendererdebug: + :path: "../node_modules/react-native/ReactCommon/react/renderer/debug" + React-rncore: + :path: "../node_modules/react-native/ReactCommon" + React-RuntimeApple: + :path: "../node_modules/react-native/ReactCommon/react/runtime/platform/ios" + React-RuntimeCore: + :path: "../node_modules/react-native/ReactCommon/react/runtime" + React-runtimeexecutor: + :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" + React-RuntimeHermes: + :path: "../node_modules/react-native/ReactCommon/react/runtime" + React-runtimescheduler: + :path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler" + React-utils: + :path: "../node_modules/react-native/ReactCommon/react/utils" + ReactCommon: + :path: "../node_modules/react-native/ReactCommon" + RNFS: + :path: "../node_modules/react-native-fs" + RNGestureHandler: + :path: "../node_modules/react-native-gesture-handler" + RNReanimated: + :path: "../node_modules/react-native-reanimated" + RNScreens: + :path: "../node_modules/react-native-screens" + Yoga: + :path: "../node_modules/react-native/ReactCommon/yoga" + +SPEC CHECKSUMS: + boost: d3f49c53809116a5d38da093a8aa78bf551aed09 + cppjs-package-expat: 2e62cf668055f128866c853abcbaa6be694a3ab7 + cppjs-package-gdal: 01e6f9f3e4564f9e3d5058998838676158795c74 + cppjs-package-geos: d82521e5c5a4245e35a5649ca1ba14b2e917b803 + cppjs-package-geotiff: 1a244d0bd6d4981f74e11534eca8c76042db8eb4 + cppjs-package-iconv: fbb31b3a36ede4242e73e075b1058e65317890f8 + cppjs-package-proj: 5c956ee3ed4d3e77893a60a16c6ba5a7b104a51b + cppjs-package-spatialite: 3109342e98d1dcc689f8b26c96c7a06af786affa + cppjs-package-sqlite3: 5e35dd2eaab06f51dfc61e4a829d7aa9ef0b2f45 + cppjs-package-tiff: c8a74abba314dcf808bae4e155f65dd2249b2905 + cppjs-package-webp: 101c83de78a8a239b5cd4faeac0f951f585b3b60 + cppjs-package-zlib: 36f89ced6557c538236f0605a93f44b5e8538767 + DoubleConversion: 76ab83afb40bddeeee456813d9c04f67f78771b5 + FBLazyVector: 7e977dd099937dc5458851233141583abba49ff2 + fmt: 4c2741a687cc09f0634a2e2c72a838b99f1ff120 + gdal3.js: 8b11ee05f58668466bf38953ec9aa0614a663dc3 + glog: fdfdfe5479092de0c4bdbebedd9056951f092c4f + hermes-engine: 1f547997900dd0752dc0cc0ae6dd16173c49e09b + RCT-Folly: 02617c592a293bd6d418e0a88ff4ee1f88329b47 + RCTDeprecation: 4c7eeb42be0b2e95195563c49be08d0b839d22b4 + RCTRequired: d530a0f489699c8500e944fde963102c42dcd0c2 + RCTTypeSafety: b20878506b094fa3d9007d7b9e4be0faa3562499 + React: 2f9da0177233f60fa3462d83fcccde245759f81a + React-callinvoker: d0205f0dcebf72ec27263ab41e3a5ad827ed503f + React-Codegen: b4457c8557cb61a27508745f8b03f16afeb9ef59 + React-Core: 690ebbbf8f8dcfba6686ce8927731d3f025c3114 + React-CoreModules: 185da31f5eb2e6043c3d19b10c64c4661322ed6a + React-cxxreact: c53d2ac9246235351086b8c588feaf775b4ec7f7 + React-debug: dd8f7c772fda4196814a3b12620863d1d98b3a53 + React-Fabric: 68935648d5c81e6b84445d9e726a79301f1fac8f + React-FabricImage: c92bd5ed4b553c800ca39aee305aaf8dd3e9f4b0 + React-featureflags: ead50fe0ee4ab9278b5fd9f3f2f0f63e316452f4 + React-graphics: 71c87b09041e45c61809cd357436e570dea5ed48 + React-hermes: 917b7ab4c3cb9204c2ad020d74f313830097148b + React-ImageManager: 1086d48d00fcb511ea119bfc58fb12a72c4dcb95 + React-jserrorhandler: 84d45913636750c2e620a8c8e049964967040405 + React-jsi: 024b933267079f80c30a5cae97bf5ce521217505 + React-jsiexecutor: 45cb079c87db3f514da3acfc686387a0e01de5c5 + React-jsinspector: 1066f8b3da937daf8ced4cf3786eb29e1e4f9b30 + React-jsitracing: 6b3c8c98313642140530f93c46f5a6ca4530b446 + React-logger: fa92ba4d3a5d39ac450f59be2a3cec7b099f0304 + React-Mapbuffer: 9f68550e7c6839d01411ac8896aea5c868eff63a + react-native-cppjs: 17aa4531375ddf5ba7a6eeeca2433eae09c467cf + react-native-cppjs-ios-helper: a6521d9355601110319d584ef1f7e78a22c40e6d + react-native-document-picker: 5b97e24a7f1a1e4a50a72c540a043f32d29a70a2 + react-native-safe-area-context: b7daa1a8df36095a032dff095a1ea8963cb48371 + React-nativeconfig: fa5de9d8f4dbd5917358f8ad3ad1e08762f01dcb + React-NativeModulesApple: 585d1b78e0597de364d259cb56007052d0bda5e5 + React-perflogger: 7bb9ba49435ff66b666e7966ee10082508a203e8 + React-RCTActionSheet: a2816ae2b5c8523c2bc18a8f874a724a096e6d97 + React-RCTAnimation: e78f52d7422bac13e1213e25e9bcbf99be872e1a + React-RCTAppDelegate: 24f46de486cfa3a9f46e4b0786eaf17d92e1e0c6 + React-RCTBlob: 9f9d6599d1b00690704dadc4a4bc33a7e76938be + React-RCTFabric: 609e66bb0371b9082c62ed677ee0614efe711bf2 + React-RCTImage: 39dd5aee6b92213845e1e7a7c41865801dc33493 + React-RCTLinking: 35d742a982f901f9ea416d772763e2da65c2dc7d + React-RCTNetwork: b078576c0c896c71905f841716b9f9f5922111dc + React-RCTSettings: 900aab52b5b1212f247c2944d88f4defbf6146f2 + React-RCTText: a3895ab4e5df4a5fd41b6f059eed484a0c7016d1 + React-RCTVibration: ab4912e1427d8de00ef89e9e6582094c4c25dc05 + React-rendererdebug: 542934058708a643fa5743902eb2fedc0833770a + React-rncore: f6c23d9810c8de9e369781bb7b1d5511e9d9f4e7 + React-RuntimeApple: ce41ba7df744c7a6c2cc490a9b2e15fc58019508 + React-RuntimeCore: 350218ac9ee1412ddc9806f248141c8fb9bccd8b + React-runtimeexecutor: 69cab8ddf409de6d6a855a71c8af9e7290c4e55b + React-RuntimeHermes: 9d0812e3370111dd175aa1fa8bd4da93a9efc4fd + React-runtimescheduler: 0c80752bceb80924cb8a4babc2a8e3ed70d41e87 + React-utils: a06061b3887c702235d2dac92dacbd93e1ea079e + ReactCommon: f00e436b3925a7ae44dfa294b43ef360fbd8ccc4 + RNFS: 4ac0f0ea233904cb798630b3c077808c06931688 + RNGestureHandler: 4fd316f1bdb8d7f6a54efc58da5923cb83014b19 + RNReanimated: f4ff116e33e0afc3d127f70efe928847c7c66355 + RNScreens: 5aeecbb09aa7285379b6e9f3c8a3c859bb16401c + SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d + Yoga: 88480008ccacea6301ff7bf58726e27a72931c8d + +PODFILE CHECKSUM: 17f1d11bb010b23a338abf034a7e5665f88d05bb + +COCOAPODS: 1.15.2 diff --git a/apps/app-mobile/ios/gdal3jsMobile3.xcodeproj/project.pbxproj b/apps/app-mobile/ios/gdal3jsMobile3.xcodeproj/project.pbxproj new file mode 100644 index 0000000..7b53da5 --- /dev/null +++ b/apps/app-mobile/ios/gdal3jsMobile3.xcodeproj/project.pbxproj @@ -0,0 +1,797 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 00E356F31AD99517003FC87E /* gdal3jsMobile3Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* gdal3jsMobile3Tests.m */; }; + 0C80B921A6F3F58F76C31292 /* libPods-gdal3jsMobile3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-gdal3jsMobile3.a */; }; + 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; + 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 13E4E0B12C56F487009A6006 /* AntDesign.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 13E4E09D2C56F487009A6006 /* AntDesign.ttf */; }; + 13E4E0B22C56F487009A6006 /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 13E4E09E2C56F487009A6006 /* Entypo.ttf */; }; + 13E4E0B32C56F487009A6006 /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 13E4E09F2C56F487009A6006 /* EvilIcons.ttf */; }; + 13E4E0B42C56F487009A6006 /* Feather.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 13E4E0A02C56F487009A6006 /* Feather.ttf */; }; + 13E4E0B52C56F487009A6006 /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 13E4E0A12C56F487009A6006 /* FontAwesome.ttf */; }; + 13E4E0B62C56F487009A6006 /* FontAwesome5_Brands.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 13E4E0A22C56F487009A6006 /* FontAwesome5_Brands.ttf */; }; + 13E4E0B72C56F487009A6006 /* FontAwesome5_Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 13E4E0A32C56F487009A6006 /* FontAwesome5_Regular.ttf */; }; + 13E4E0B82C56F487009A6006 /* FontAwesome5_Solid.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 13E4E0A42C56F487009A6006 /* FontAwesome5_Solid.ttf */; }; + 13E4E0B92C56F487009A6006 /* FontAwesome6_Brands.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 13E4E0A52C56F487009A6006 /* FontAwesome6_Brands.ttf */; }; + 13E4E0BA2C56F487009A6006 /* FontAwesome6_Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 13E4E0A62C56F487009A6006 /* FontAwesome6_Regular.ttf */; }; + 13E4E0BB2C56F487009A6006 /* FontAwesome6_Solid.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 13E4E0A72C56F487009A6006 /* FontAwesome6_Solid.ttf */; }; + 13E4E0BC2C56F487009A6006 /* Fontisto.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 13E4E0A82C56F487009A6006 /* Fontisto.ttf */; }; + 13E4E0BD2C56F487009A6006 /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 13E4E0A92C56F487009A6006 /* Foundation.ttf */; }; + 13E4E0BE2C56F487009A6006 /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 13E4E0AA2C56F487009A6006 /* Ionicons.ttf */; }; + 13E4E0BF2C56F487009A6006 /* MaterialCommunityIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 13E4E0AB2C56F487009A6006 /* MaterialCommunityIcons.ttf */; }; + 13E4E0C02C56F487009A6006 /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 13E4E0AC2C56F487009A6006 /* MaterialIcons.ttf */; }; + 13E4E0C12C56F487009A6006 /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 13E4E0AD2C56F487009A6006 /* Octicons.ttf */; }; + 13E4E0C22C56F487009A6006 /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 13E4E0AE2C56F487009A6006 /* SimpleLineIcons.ttf */; }; + 13E4E0C32C56F487009A6006 /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 13E4E0AF2C56F487009A6006 /* Zocial.ttf */; }; + 5D77BE8AE207588F066DF0A3 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 41E7033D2685636ACAC07A79 /* PrivacyInfo.xcprivacy */; }; + 7699B88040F8A987B510C191 /* libPods-gdal3jsMobile3-gdal3jsMobile3Tests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19F6CBCC0A4E27FBF8BF4A61 /* libPods-gdal3jsMobile3-gdal3jsMobile3Tests.a */; }; + 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 13B07F861A680F5B00A75B9A; + remoteInfo = gdal3jsMobile3; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 00E356EE1AD99517003FC87E /* gdal3jsMobile3Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = gdal3jsMobile3Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 00E356F21AD99517003FC87E /* gdal3jsMobile3Tests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = gdal3jsMobile3Tests.m; sourceTree = ""; }; + 13B07F961A680F5B00A75B9A /* gdal3jsMobile3.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = gdal3jsMobile3.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = gdal3jsMobile3/AppDelegate.h; sourceTree = ""; }; + 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = gdal3jsMobile3/AppDelegate.mm; sourceTree = ""; }; + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = gdal3jsMobile3/Images.xcassets; sourceTree = ""; }; + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = gdal3jsMobile3/Info.plist; sourceTree = ""; }; + 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = gdal3jsMobile3/main.m; sourceTree = ""; }; + 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = PrivacyInfo.xcprivacy; path = gdal3jsMobile3/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 13E4E09D2C56F487009A6006 /* AntDesign.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = AntDesign.ttf; sourceTree = ""; }; + 13E4E09E2C56F487009A6006 /* Entypo.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Entypo.ttf; sourceTree = ""; }; + 13E4E09F2C56F487009A6006 /* EvilIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = EvilIcons.ttf; sourceTree = ""; }; + 13E4E0A02C56F487009A6006 /* Feather.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Feather.ttf; sourceTree = ""; }; + 13E4E0A12C56F487009A6006 /* FontAwesome.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = FontAwesome.ttf; sourceTree = ""; }; + 13E4E0A22C56F487009A6006 /* FontAwesome5_Brands.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = FontAwesome5_Brands.ttf; sourceTree = ""; }; + 13E4E0A32C56F487009A6006 /* FontAwesome5_Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = FontAwesome5_Regular.ttf; sourceTree = ""; }; + 13E4E0A42C56F487009A6006 /* FontAwesome5_Solid.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = FontAwesome5_Solid.ttf; sourceTree = ""; }; + 13E4E0A52C56F487009A6006 /* FontAwesome6_Brands.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = FontAwesome6_Brands.ttf; sourceTree = ""; }; + 13E4E0A62C56F487009A6006 /* FontAwesome6_Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = FontAwesome6_Regular.ttf; sourceTree = ""; }; + 13E4E0A72C56F487009A6006 /* FontAwesome6_Solid.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = FontAwesome6_Solid.ttf; sourceTree = ""; }; + 13E4E0A82C56F487009A6006 /* Fontisto.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Fontisto.ttf; sourceTree = ""; }; + 13E4E0A92C56F487009A6006 /* Foundation.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Foundation.ttf; sourceTree = ""; }; + 13E4E0AA2C56F487009A6006 /* Ionicons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Ionicons.ttf; sourceTree = ""; }; + 13E4E0AB2C56F487009A6006 /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = MaterialCommunityIcons.ttf; sourceTree = ""; }; + 13E4E0AC2C56F487009A6006 /* MaterialIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = MaterialIcons.ttf; sourceTree = ""; }; + 13E4E0AD2C56F487009A6006 /* Octicons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Octicons.ttf; sourceTree = ""; }; + 13E4E0AE2C56F487009A6006 /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = SimpleLineIcons.ttf; sourceTree = ""; }; + 13E4E0AF2C56F487009A6006 /* Zocial.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Zocial.ttf; sourceTree = ""; }; + 19F6CBCC0A4E27FBF8BF4A61 /* libPods-gdal3jsMobile3-gdal3jsMobile3Tests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-gdal3jsMobile3-gdal3jsMobile3Tests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B4392A12AC88292D35C810B /* Pods-gdal3jsMobile3.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-gdal3jsMobile3.debug.xcconfig"; path = "Target Support Files/Pods-gdal3jsMobile3/Pods-gdal3jsMobile3.debug.xcconfig"; sourceTree = ""; }; + 41E7033D2685636ACAC07A79 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = gdal3jsMobile3/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 5709B34CF0A7D63546082F79 /* Pods-gdal3jsMobile3.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-gdal3jsMobile3.release.xcconfig"; path = "Target Support Files/Pods-gdal3jsMobile3/Pods-gdal3jsMobile3.release.xcconfig"; sourceTree = ""; }; + 5B7EB9410499542E8C5724F5 /* Pods-gdal3jsMobile3-gdal3jsMobile3Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-gdal3jsMobile3-gdal3jsMobile3Tests.debug.xcconfig"; path = "Target Support Files/Pods-gdal3jsMobile3-gdal3jsMobile3Tests/Pods-gdal3jsMobile3-gdal3jsMobile3Tests.debug.xcconfig"; sourceTree = ""; }; + 5DCACB8F33CDC322A6C60F78 /* libPods-gdal3jsMobile3.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-gdal3jsMobile3.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = gdal3jsMobile3/LaunchScreen.storyboard; sourceTree = ""; }; + 89C6BE57DB24E9ADA2F236DE /* Pods-gdal3jsMobile3-gdal3jsMobile3Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-gdal3jsMobile3-gdal3jsMobile3Tests.release.xcconfig"; path = "Target Support Files/Pods-gdal3jsMobile3-gdal3jsMobile3Tests/Pods-gdal3jsMobile3-gdal3jsMobile3Tests.release.xcconfig"; sourceTree = ""; }; + ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 00E356EB1AD99517003FC87E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 7699B88040F8A987B510C191 /* libPods-gdal3jsMobile3-gdal3jsMobile3Tests.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 0C80B921A6F3F58F76C31292 /* libPods-gdal3jsMobile3.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 00E356EF1AD99517003FC87E /* gdal3jsMobile3Tests */ = { + isa = PBXGroup; + children = ( + 00E356F21AD99517003FC87E /* gdal3jsMobile3Tests.m */, + 00E356F01AD99517003FC87E /* Supporting Files */, + ); + path = gdal3jsMobile3Tests; + sourceTree = ""; + }; + 00E356F01AD99517003FC87E /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 00E356F11AD99517003FC87E /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 13B07FAE1A68108700A75B9A /* gdal3jsMobile3 */ = { + isa = PBXGroup; + children = ( + 13E4E0B02C56F487009A6006 /* Fonts */, + 13B07FAF1A68108700A75B9A /* AppDelegate.h */, + 13B07FB01A68108700A75B9A /* AppDelegate.mm */, + 13B07FB51A68108700A75B9A /* Images.xcassets */, + 13B07FB61A68108700A75B9A /* Info.plist */, + 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, + 13B07FB71A68108700A75B9A /* main.m */, + 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */, + 41E7033D2685636ACAC07A79 /* PrivacyInfo.xcprivacy */, + ); + name = gdal3jsMobile3; + sourceTree = ""; + }; + 13E4E0B02C56F487009A6006 /* Fonts */ = { + isa = PBXGroup; + children = ( + 13E4E09D2C56F487009A6006 /* AntDesign.ttf */, + 13E4E09E2C56F487009A6006 /* Entypo.ttf */, + 13E4E09F2C56F487009A6006 /* EvilIcons.ttf */, + 13E4E0A02C56F487009A6006 /* Feather.ttf */, + 13E4E0A12C56F487009A6006 /* FontAwesome.ttf */, + 13E4E0A22C56F487009A6006 /* FontAwesome5_Brands.ttf */, + 13E4E0A32C56F487009A6006 /* FontAwesome5_Regular.ttf */, + 13E4E0A42C56F487009A6006 /* FontAwesome5_Solid.ttf */, + 13E4E0A52C56F487009A6006 /* FontAwesome6_Brands.ttf */, + 13E4E0A62C56F487009A6006 /* FontAwesome6_Regular.ttf */, + 13E4E0A72C56F487009A6006 /* FontAwesome6_Solid.ttf */, + 13E4E0A82C56F487009A6006 /* Fontisto.ttf */, + 13E4E0A92C56F487009A6006 /* Foundation.ttf */, + 13E4E0AA2C56F487009A6006 /* Ionicons.ttf */, + 13E4E0AB2C56F487009A6006 /* MaterialCommunityIcons.ttf */, + 13E4E0AC2C56F487009A6006 /* MaterialIcons.ttf */, + 13E4E0AD2C56F487009A6006 /* Octicons.ttf */, + 13E4E0AE2C56F487009A6006 /* SimpleLineIcons.ttf */, + 13E4E0AF2C56F487009A6006 /* Zocial.ttf */, + ); + name = Fonts; + path = "../node_modules/react-native-vector-icons/Fonts"; + sourceTree = ""; + }; + 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { + isa = PBXGroup; + children = ( + ED297162215061F000B7C4FE /* JavaScriptCore.framework */, + 5DCACB8F33CDC322A6C60F78 /* libPods-gdal3jsMobile3.a */, + 19F6CBCC0A4E27FBF8BF4A61 /* libPods-gdal3jsMobile3-gdal3jsMobile3Tests.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + 832341AE1AAA6A7D00B99B32 /* Libraries */ = { + isa = PBXGroup; + children = ( + ); + name = Libraries; + sourceTree = ""; + }; + 83CBB9F61A601CBA00E9B192 = { + isa = PBXGroup; + children = ( + 13B07FAE1A68108700A75B9A /* gdal3jsMobile3 */, + 832341AE1AAA6A7D00B99B32 /* Libraries */, + 00E356EF1AD99517003FC87E /* gdal3jsMobile3Tests */, + 83CBBA001A601CBA00E9B192 /* Products */, + 2D16E6871FA4F8E400B85C8A /* Frameworks */, + BBD78D7AC51CEA395F1C20DB /* Pods */, + ); + indentWidth = 2; + sourceTree = ""; + tabWidth = 2; + usesTabs = 0; + }; + 83CBBA001A601CBA00E9B192 /* Products */ = { + isa = PBXGroup; + children = ( + 13B07F961A680F5B00A75B9A /* gdal3jsMobile3.app */, + 00E356EE1AD99517003FC87E /* gdal3jsMobile3Tests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + BBD78D7AC51CEA395F1C20DB /* Pods */ = { + isa = PBXGroup; + children = ( + 3B4392A12AC88292D35C810B /* Pods-gdal3jsMobile3.debug.xcconfig */, + 5709B34CF0A7D63546082F79 /* Pods-gdal3jsMobile3.release.xcconfig */, + 5B7EB9410499542E8C5724F5 /* Pods-gdal3jsMobile3-gdal3jsMobile3Tests.debug.xcconfig */, + 89C6BE57DB24E9ADA2F236DE /* Pods-gdal3jsMobile3-gdal3jsMobile3Tests.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 00E356ED1AD99517003FC87E /* gdal3jsMobile3Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "gdal3jsMobile3Tests" */; + buildPhases = ( + A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */, + 00E356EA1AD99517003FC87E /* Sources */, + 00E356EB1AD99517003FC87E /* Frameworks */, + 00E356EC1AD99517003FC87E /* Resources */, + C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */, + F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + 00E356F51AD99517003FC87E /* PBXTargetDependency */, + ); + name = gdal3jsMobile3Tests; + productName = gdal3jsMobile3Tests; + productReference = 00E356EE1AD99517003FC87E /* gdal3jsMobile3Tests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 13B07F861A680F5B00A75B9A /* gdal3jsMobile3 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "gdal3jsMobile3" */; + buildPhases = ( + C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */, + 13B07F871A680F5B00A75B9A /* Sources */, + 13B07F8C1A680F5B00A75B9A /* Frameworks */, + 13B07F8E1A680F5B00A75B9A /* Resources */, + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, + 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */, + E235C05ADACE081382539298 /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = gdal3jsMobile3; + productName = gdal3jsMobile3; + productReference = 13B07F961A680F5B00A75B9A /* gdal3jsMobile3.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 83CBB9F71A601CBA00E9B192 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1210; + TargetAttributes = { + 00E356ED1AD99517003FC87E = { + CreatedOnToolsVersion = 6.2; + TestTargetID = 13B07F861A680F5B00A75B9A; + }; + 13B07F861A680F5B00A75B9A = { + LastSwiftMigration = 1120; + }; + }; + }; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "gdal3jsMobile3" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 83CBB9F61A601CBA00E9B192; + productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 13B07F861A680F5B00A75B9A /* gdal3jsMobile3 */, + 00E356ED1AD99517003FC87E /* gdal3jsMobile3Tests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 00E356EC1AD99517003FC87E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 13B07F8E1A680F5B00A75B9A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, + 13E4E0BD2C56F487009A6006 /* Foundation.ttf in Resources */, + 13E4E0B42C56F487009A6006 /* Feather.ttf in Resources */, + 13E4E0BA2C56F487009A6006 /* FontAwesome6_Regular.ttf in Resources */, + 13E4E0C02C56F487009A6006 /* MaterialIcons.ttf in Resources */, + 13E4E0C22C56F487009A6006 /* SimpleLineIcons.ttf in Resources */, + 13E4E0C32C56F487009A6006 /* Zocial.ttf in Resources */, + 13E4E0BE2C56F487009A6006 /* Ionicons.ttf in Resources */, + 13E4E0B72C56F487009A6006 /* FontAwesome5_Regular.ttf in Resources */, + 13E4E0B32C56F487009A6006 /* EvilIcons.ttf in Resources */, + 13E4E0B62C56F487009A6006 /* FontAwesome5_Brands.ttf in Resources */, + 13E4E0BB2C56F487009A6006 /* FontAwesome6_Solid.ttf in Resources */, + 13E4E0C12C56F487009A6006 /* Octicons.ttf in Resources */, + 13E4E0B52C56F487009A6006 /* FontAwesome.ttf in Resources */, + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, + 13E4E0B12C56F487009A6006 /* AntDesign.ttf in Resources */, + 13E4E0B22C56F487009A6006 /* Entypo.ttf in Resources */, + 13E4E0B82C56F487009A6006 /* FontAwesome5_Solid.ttf in Resources */, + 13E4E0BC2C56F487009A6006 /* Fontisto.ttf in Resources */, + 13E4E0B92C56F487009A6006 /* FontAwesome6_Brands.ttf in Resources */, + 13E4E0BF2C56F487009A6006 /* MaterialCommunityIcons.ttf in Resources */, + 5D77BE8AE207588F066DF0A3 /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(SRCROOT)/.xcode.env.local", + "$(SRCROOT)/.xcode.env", + ); + name = "Bundle React Native code and images"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "set -e\n\nWITH_ENVIRONMENT=\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"$REACT_NATIVE_PATH/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; + }; + 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-gdal3jsMobile3/Pods-gdal3jsMobile3-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-gdal3jsMobile3/Pods-gdal3jsMobile3-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-gdal3jsMobile3/Pods-gdal3jsMobile3-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-gdal3jsMobile3-gdal3jsMobile3Tests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-gdal3jsMobile3-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-gdal3jsMobile3-gdal3jsMobile3Tests/Pods-gdal3jsMobile3-gdal3jsMobile3Tests-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-gdal3jsMobile3-gdal3jsMobile3Tests/Pods-gdal3jsMobile3-gdal3jsMobile3Tests-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-gdal3jsMobile3-gdal3jsMobile3Tests/Pods-gdal3jsMobile3-gdal3jsMobile3Tests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-gdal3jsMobile3/Pods-gdal3jsMobile3-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-gdal3jsMobile3/Pods-gdal3jsMobile3-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-gdal3jsMobile3/Pods-gdal3jsMobile3-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-gdal3jsMobile3-gdal3jsMobile3Tests/Pods-gdal3jsMobile3-gdal3jsMobile3Tests-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-gdal3jsMobile3-gdal3jsMobile3Tests/Pods-gdal3jsMobile3-gdal3jsMobile3Tests-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-gdal3jsMobile3-gdal3jsMobile3Tests/Pods-gdal3jsMobile3-gdal3jsMobile3Tests-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 00E356EA1AD99517003FC87E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 00E356F31AD99517003FC87E /* gdal3jsMobile3Tests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 13B07F871A680F5B00A75B9A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, + 13B07FC11A68108700A75B9A /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 13B07F861A680F5B00A75B9A /* gdal3jsMobile3 */; + targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 00E356F61AD99517003FC87E /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5B7EB9410499542E8C5724F5 /* Pods-gdal3jsMobile3-gdal3jsMobile3Tests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = gdal3jsMobile3Tests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + OTHER_LDFLAGS = ( + "-ObjC", + "-lc++", + "$(inherited)", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/gdal3jsMobile3.app/gdal3jsMobile3"; + }; + name = Debug; + }; + 00E356F71AD99517003FC87E /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 89C6BE57DB24E9ADA2F236DE /* Pods-gdal3jsMobile3-gdal3jsMobile3Tests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + COPY_PHASE_STRIP = NO; + INFOPLIST_FILE = gdal3jsMobile3Tests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + OTHER_LDFLAGS = ( + "-ObjC", + "-lc++", + "$(inherited)", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/gdal3jsMobile3.app/gdal3jsMobile3"; + }; + name = Release; + }; + 13B07F941A680F5B00A75B9A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-gdal3jsMobile3.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 102; + DEVELOPMENT_TEAM = 7ZZLDWBUVT; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = gdal3jsMobile3/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = gdal3.js; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0.2; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = org.js.gdal3; + PRODUCT_NAME = gdal3jsMobile3; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 13B07F951A680F5B00A75B9A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-gdal3jsMobile3.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 102; + DEVELOPMENT_TEAM = 7ZZLDWBUVT; + INFOPLIST_FILE = gdal3jsMobile3/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = gdal3.js; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0.2; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = org.js.gdal3; + PRODUCT_NAME = gdal3jsMobile3; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; + 83CBBA201A601CBA00E9B192 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CC = ""; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CXX = ""; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + LD = ""; + LDPLUSPLUS = ""; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + ); + LIBRARY_SEARCH_PATHS = ( + "\"$(SDKROOT)/usr/lib/swift\"", + "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", + "\"$(inherited)\"", + ); + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-DFOLLY_NO_CONFIG", + "-DFOLLY_MOBILE=1", + "-DFOLLY_USE_LIBCPP=1", + "-DFOLLY_CFG_NO_COROUTINES=1", + "-DFOLLY_HAVE_CLOCK_GETTIME=1", + ); + OTHER_LDFLAGS = "$(inherited) "; + REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; + SDKROOT = iphoneos; + USE_HERMES = true; + }; + name = Debug; + }; + 83CBBA211A601CBA00E9B192 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CC = ""; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + CXX = ""; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + LD = ""; + LDPLUSPLUS = ""; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + ); + LIBRARY_SEARCH_PATHS = ( + "\"$(SDKROOT)/usr/lib/swift\"", + "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", + "\"$(inherited)\"", + ); + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-DFOLLY_NO_CONFIG", + "-DFOLLY_MOBILE=1", + "-DFOLLY_USE_LIBCPP=1", + "-DFOLLY_CFG_NO_COROUTINES=1", + "-DFOLLY_HAVE_CLOCK_GETTIME=1", + ); + OTHER_LDFLAGS = "$(inherited) "; + REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; + SDKROOT = iphoneos; + USE_HERMES = true; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "gdal3jsMobile3Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 00E356F61AD99517003FC87E /* Debug */, + 00E356F71AD99517003FC87E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "gdal3jsMobile3" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 13B07F941A680F5B00A75B9A /* Debug */, + 13B07F951A680F5B00A75B9A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "gdal3jsMobile3" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 83CBBA201A601CBA00E9B192 /* Debug */, + 83CBBA211A601CBA00E9B192 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; +} diff --git a/apps/app-mobile/ios/gdal3jsMobile3.xcodeproj/xcshareddata/xcschemes/gdal3jsMobile3.xcscheme b/apps/app-mobile/ios/gdal3jsMobile3.xcodeproj/xcshareddata/xcschemes/gdal3jsMobile3.xcscheme new file mode 100644 index 0000000..7ee5d0d --- /dev/null +++ b/apps/app-mobile/ios/gdal3jsMobile3.xcodeproj/xcshareddata/xcschemes/gdal3jsMobile3.xcscheme @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/app-mobile/ios/gdal3jsMobile3.xcworkspace/contents.xcworkspacedata b/apps/app-mobile/ios/gdal3jsMobile3.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..a235da2 --- /dev/null +++ b/apps/app-mobile/ios/gdal3jsMobile3.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/apps/app-mobile/ios/gdal3jsMobile3.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/apps/app-mobile/ios/gdal3jsMobile3.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/apps/app-mobile/ios/gdal3jsMobile3.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/apps/app-mobile/ios/gdal3jsMobile3/AppDelegate.h b/apps/app-mobile/ios/gdal3jsMobile3/AppDelegate.h new file mode 100644 index 0000000..5d28082 --- /dev/null +++ b/apps/app-mobile/ios/gdal3jsMobile3/AppDelegate.h @@ -0,0 +1,6 @@ +#import +#import + +@interface AppDelegate : RCTAppDelegate + +@end diff --git a/apps/app-mobile/ios/gdal3jsMobile3/AppDelegate.mm b/apps/app-mobile/ios/gdal3jsMobile3/AppDelegate.mm new file mode 100644 index 0000000..b615367 --- /dev/null +++ b/apps/app-mobile/ios/gdal3jsMobile3/AppDelegate.mm @@ -0,0 +1,31 @@ +#import "AppDelegate.h" + +#import + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + self.moduleName = @"gdal3jsMobile3"; + // You can add your custom initial props in the dictionary below. + // They will be passed down to the ViewController used by React Native. + self.initialProps = @{}; + + return [super application:application didFinishLaunchingWithOptions:launchOptions]; +} + +- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge +{ + return [self bundleURL]; +} + +- (NSURL *)bundleURL +{ +#if DEBUG + return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"]; +#else + return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; +#endif +} + +@end diff --git a/apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/AppIcon-20@2x.png b/apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/AppIcon-20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3cb4fdfbac6215fcbfe5fda209f55cd037a96b64 GIT binary patch literal 1017 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 DIC@U! literal 0 HcmV?d00001 diff --git a/apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/AppIcon-29@3x.png b/apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/AppIcon-29@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9189b9502ceab840eab381d50fecf25ebdee66c1 GIT binary patch literal 2499 zcmcJR`9BkmAIF`QE$0_=mvVhvIm%I}m|PK}Wrjq#nJrghpBO90_{0?;r8`;r)L9@_haBemq{U$LpoDlZ`My4#301BW!02c0IX} z|Ie9ICp)r#I+TY;D9sLh(=FC}GZ*NV6{OUMvKvr+o9%%19l;G!=Q3DhWp@4>X^m-m zeto)fAE!k;)Yc_GjLJ}6MAH)}dNt`~K*ExdjHb}0^N@Z|fCT1~aMWUJwnzxsUarNRU@GTF8(seeU^2QTIyxFxR79Tbr_m}zEo8h{ zIw`5Tgi$=IZ=H|t@pw;iP@AxWg99QeswDCEfeVY0Syfs2BJtOPfTAe^U1T2bT^pd| zqhvqV&P_!ik$-3eX5Zf)iG7g-}>8AAIfC2xMR*Y8#pBNU}IV#Ei)58G2x%A z58@;|qX>QcLDo~UcxIcMJ1r?C^;!OFYDrFdz|IyktD?XnA+_NH?K`LI$e@5R$6R45 zD-Q-sw}a^75aLPzm7SwU0p z#kJ**=9|L|o5E(xsfWrzPK8%9%_&oQLNN@J2xx=9ex3F0axSXmWmj!jD;wzmIK!_69= z23fwZulL=`Ga1b)cRb{e7m?iDy8gM03?CO`ynoNWj3`sDbF{aYj@1pN&RgclYR1pZu1;db2X_E2oj&cG@TzH5tGZveKnwINFlPJaxb zDeVj!d-}|%z>LkFNzJw1B_-bdB*tL%i6SdCm`IelGzL>A#<$+z6+kPpq1VY{S8gqk zRd+XDE}J0PRQK&21wxlRLq%8jRxjh}RYt0?eA>+RnHu)-@54nflWs_Abvu225aAsFbZ&xHGVd6h_JQF(gTXdjP zqXES_7eF9Ts%zYY0I69T!}-y^^#UeNI``$hZ_$(W$yzxrkg2i(Lh(w_7+TazzO{8F z=%4R(;J*;Kj+v=SX~tjbcOrA~!dBEMc%atem_?CmE6`AYJ~NXiqF`ILJe<#w>!liqG|HCQ7x;Tst_xR#>Me{aT@9=9`-3$fc6`mM>yyxrXVKti4flKDxMODc&!| z{3`VY-lF+mDEHq=XVCw zc{ijgwZD~6$Y>X~rH8(LdzBStSNr#uFEs0B#%G>WqDtTpI%ydLxgF@@(thS8AYq@; ziYmw9+;r*Xceoe1zJb-ZysErrJFY&ceD*X?f zlAII3z0mLD6~;^;(9_PdIh2LMt2{v>2?YhnQm84Bzm5otKb$Nr;@n{|XY*)s$3;ayu(#!{(i}-KMyu z??0aPDQL!E+5=Ii;lcpFUj-mp*`7;r3uJ4#Ym+u8qqNv(a=k0ph{IH>MEG$>;3+k@ z2PO~Mhuw;`Fj`;G&*-sQfYf=jEjuEZ78g33Sf+tZ^`j+LURB5d_0Bi1UTMtZZ=lrj zBzy0pB^A!&(0i6^Wl^y+{u;D#Bsy@AhVUc_`w0ohgKM&WzgyP%BTl2O!OY%ip8It3 zlG4Va!Tr!BKm<%acB~f zw4dZdF7#t~m>3w`d+Im|omXdsrRo?~D>QzP;=W}??LIPECc7UUJ=^#H`E`A5Tz!W_ zqobjF2#jk!2G5$^`3%x(ozc+NmJCBYX@au9|CrWhe3x_OR7*I+RjVy~+~KMcuL7Ze zKzd%=-Y5+szyu)|cwd&kMo7V43aI4WqyB3Em)|Aj?9=^&+Xg4)jK|K}2~4tlkn}%x C64jId literal 0 HcmV?d00001 diff --git a/apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/AppIcon-40@2x.png b/apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/AppIcon-40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9a61d5e3f8368af662cb3ab61cc0e40ad679fe41 GIT binary patch literal 2275 zcmbW3=RX^Y8pjh9iB%diMywdEP0{pdkk*dPvC>q~s2Ww{)Gk4cs#T*#QLAdTW;NB; zF12R~N~syE_K4&D2lw6=zvub|B``_9)QSP?7hr#fLlaY&WqEmuK_ap?4;1kU zYj}@Fan}rWSYdvmR9bB5L?eoZub6210cN|>2veJthQ?lQwKTEKEegr5aq@lYx(`4ob@WRezE___NjI8O|y=U;T;lfw!> zn&r_*>LG_5q)dRRVz8A;NGU*{BhkkiYyl7l={8-xBpsGaCpP_ph7+krlf0q--<_Wu za84BJ;q;BB`wg-caB#}x-k!N!13G6iHO((|cD6<$v!$g)<*tE&fw!NBvHN6g{)5r7 z!M(L{sjFAxJjji%ey33^(4pOxdrml)IGy3i9+cs69|<3!$L!&as^HTqw-S$|^O3#~6)9TiDv_TUSx_+uPem z%59X&Ok1Ng4PPqTlu{E-C1qv%YCRmpG}~Y6JkNg>N?ojCz&ktZadD;XE)R-g8l{v- zCtGvcirg&|bQ(NYaOtX_E^iDKDYbXp`Qz4^5Nv?!OjuePtFSXQ8)9uCGq4p8AvO)) zC_-9~FJ5eWssB9zcbyOsp<|B6GcLUh4@ZcEl8lp*-qw+oL#Z_G91CgV7-+YNEQW-- z0w+~u(NoDj&sKt5H(!G2U=SQ3f&2p8cun*c$x5dIp|&B0k6@t}f@>ARJHf$2|7 zw{=3hCHz;0#BHmw>^64RuZs-0nJ)WE1Nd)gSP&+r%A4Mpw@M-qb`U~kt=C*oh@7x+ z((hh7EEo1h0TcNVO!>(oO9C1}C_9KP7gFspJnQsqR-Wl{bmKkk)Zfp$kd49&FBSg^dut`L zq}!TLPe-@Im**l^MZGyv=Qh6F7L(FX?{#+UJ5qC>&2M$QKP%*f;veEMUMUm2eVZ4e z&FJ}qLr1Q8SsyQc!`FKpu4sk2+=0QIb+xueX!A=GPU@>BwD}-}$$<6!KIehfz?7+st%#oDA!!p;Kr3&K7 z;ki?V39f}(vSEWxU4)NV`B$f#UT8+I0DXLXAYf|tAJ(v?rMvf33X=H>>2BI*4Ow}juEdk}-jjej3kT@4Lnoa-AUWE$$6xZig#8Lfkr78O|E3bZG65k`7uO0a@8DKI8Mw zle!c|po?o!%IvhOf2i(02`QmSh&#)vc+SN4z50x7ZjPwk%*mb{h-BghsdE&Ud|6ni zy3I5azE3fjYoXW17-Yc z;V2{~lDgIE8b#2L(x|$L6bpd>7C6Z~-j74)LoQnixqx9C@1j{L+H3n`jwst=KT2_cu zEBH&ZpFlr`4f~rHMqS#xWmxK2zc1JVd;zTn4Cf&w9jEI1)$c)>ndGirE4(1ZqpR~v zs%?1ouL3+Ep=iq=$;r+0j9-LlT<&!EPjdE;`&XMRJ#h$AaT^mWeSwr?g(0BY&`O@?MM`(`f4mfd_nIbhjt?Z_ebBPx6zC3fH;kloNsT zp2}VFVu7BURDyo&=9XJrgtnW4PA1rY!*E_(+cElH-|jB6yI^UB&T~PsS^n(zo}Q8v z31g1ycGR*M{wM`+Z|~*hLEO4$IT8CzjbF6^Ey6t&Tks^pQ^(cS6<*~72Z}fa1(67j z95yp*qgz|@d@8F(7|9*2qh~9EgSXautTEfdJ3v|qpQ`6HW zMh-;PZ`>e0|An)(=alAysT|F�!aphtF`he#;rAr5pSdC|AK$x@v1EEib>tV(OsH zsIQzFU>MJY@Q{d#3$>IuN1S=RJ=|)2zs3_HscU3Z^etsJ1rz>*pU7)(Z{Jq(37@)2 z%-#}cfSq5jY4Ak1Ml%pc%tgu`gYS-0nFFQ6LOW3BqY4n@w-igj{}jLfcX~^Lw%D-e WZqxhXK4}-_1)z5ujjGhbhW`r}lsvTn literal 0 HcmV?d00001 diff --git a/apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/AppIcon-40@3x.png b/apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/AppIcon-40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6d030ce507247dd5f3094a258b81ab1219916cca GIT binary patch literal 4050 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 TB^9z#ygI;8&qTLY8;SWJR6xYP literal 0 HcmV?d00001 diff --git a/apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/AppIcon-60@2x~car.png b/apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/AppIcon-60@2x~car.png new file mode 100644 index 0000000000000000000000000000000000000000..6d030ce507247dd5f3094a258b81ab1219916cca GIT binary patch literal 4050 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 TB^9z#ygI;8&qTLY8;SWJR6xYP literal 0 HcmV?d00001 diff --git a/apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/AppIcon-60@3x~car.png b/apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/AppIcon-60@3x~car.png new file mode 100644 index 0000000000000000000000000000000000000000..8b1176c816c2568eaafa635c2d12ba85e12f0453 GIT binary patch literal 5378 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 literal 0 HcmV?d00001 diff --git a/apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/AppIcon~ios-marketing.png b/apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/AppIcon~ios-marketing.png new file mode 100644 index 0000000000000000000000000000000000000000..8b16c3cb13a9af82c569530a1175b9be028dbfd4 GIT binary patch literal 56538 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 QNCuFdJIuCcZnF#hAI<#vE&u=k literal 0 HcmV?d00001 diff --git a/apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/Contents.json b/apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..502b7ad --- /dev/null +++ b/apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,62 @@ +{ + "images" : [ + { + "filename" : "AppIcon-20@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "filename" : "AppIcon-20@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "filename" : "AppIcon-29@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "AppIcon-29@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "filename" : "AppIcon-40@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "filename" : "AppIcon-40@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "filename" : "AppIcon-60@2x~car.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "filename" : "AppIcon-60@3x~car.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "filename" : "AppIcon~ios-marketing.png", + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/Contents.json b/apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/Contents.json new file mode 100644 index 0000000..2d92bd5 --- /dev/null +++ b/apps/app-mobile/ios/gdal3jsMobile3/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/apps/app-mobile/ios/gdal3jsMobile3/Info.plist b/apps/app-mobile/ios/gdal3jsMobile3/Info.plist new file mode 100644 index 0000000..342ed46 --- /dev/null +++ b/apps/app-mobile/ios/gdal3jsMobile3/Info.plist @@ -0,0 +1,81 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + gdal3.js + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(MARKETING_VERSION) + CFBundleSignature + ???? + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + NSAllowsLocalNetworking + + + NSDocumentsFolderUsageDescription + This app needs access to your documents folder to save files to the directory you choose. + NSLocationWhenInUseUsageDescription + + NSPhotoLibraryUsageDescription + This app needs access to your photo library to save files to the directory you choose. + UIAppFonts + + AntDesign.ttf + Entypo.ttf + EvilIcons.ttf + Feather.ttf + FontAwesome.ttf + FontAwesome5_Brands.ttf + FontAwesome5_Regular.ttf + FontAwesome5_Solid.ttf + FontAwesome6_Brands.ttf + FontAwesome6_Regular.ttf + FontAwesome6_Solid.ttf + Foundation.ttf + Ionicons.ttf + MaterialIcons.ttf + MaterialCommunityIcons.ttf + SimpleLineIcons.ttf + Octicons.ttf + Zocial.ttf + Fontisto.ttf + + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + UIInterfaceOrientationPortrait + + UIViewControllerBasedStatusBarAppearance + + + diff --git a/apps/app-mobile/ios/gdal3jsMobile3/LaunchScreen.storyboard b/apps/app-mobile/ios/gdal3jsMobile3/LaunchScreen.storyboard new file mode 100644 index 0000000..6b8c95f --- /dev/null +++ b/apps/app-mobile/ios/gdal3jsMobile3/LaunchScreen.storyboard @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/app-mobile/ios/gdal3jsMobile3/PrivacyInfo.xcprivacy b/apps/app-mobile/ios/gdal3jsMobile3/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..13d8f8a --- /dev/null +++ b/apps/app-mobile/ios/gdal3jsMobile3/PrivacyInfo.xcprivacy @@ -0,0 +1,47 @@ + + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPITypeReasons + + C617.1 + 0A2A.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategorySystemBootTime + NSPrivacyAccessedAPITypeReasons + + 35F9.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryDiskSpace + NSPrivacyAccessedAPITypeReasons + + 85F4.1 + E174.1 + + + + NSPrivacyCollectedDataTypes + + NSPrivacyTracking + + + diff --git a/apps/app-mobile/ios/gdal3jsMobile3/main.m b/apps/app-mobile/ios/gdal3jsMobile3/main.m new file mode 100644 index 0000000..d645c72 --- /dev/null +++ b/apps/app-mobile/ios/gdal3jsMobile3/main.m @@ -0,0 +1,10 @@ +#import + +#import "AppDelegate.h" + +int main(int argc, char *argv[]) +{ + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/apps/app-mobile/ios/gdal3jsMobile3Tests/Info.plist b/apps/app-mobile/ios/gdal3jsMobile3Tests/Info.plist new file mode 100644 index 0000000..ba72822 --- /dev/null +++ b/apps/app-mobile/ios/gdal3jsMobile3Tests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/apps/app-mobile/ios/gdal3jsMobile3Tests/gdal3jsMobile3Tests.m b/apps/app-mobile/ios/gdal3jsMobile3Tests/gdal3jsMobile3Tests.m new file mode 100644 index 0000000..dfc19e0 --- /dev/null +++ b/apps/app-mobile/ios/gdal3jsMobile3Tests/gdal3jsMobile3Tests.m @@ -0,0 +1,66 @@ +#import +#import + +#import +#import + +#define TIMEOUT_SECONDS 600 +#define TEXT_TO_LOOK_FOR @"Welcome to React" + +@interface gdal3jsMobile3Tests : XCTestCase + +@end + +@implementation gdal3jsMobile3Tests + +- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL (^)(UIView *view))test +{ + if (test(view)) { + return YES; + } + for (UIView *subview in [view subviews]) { + if ([self findSubviewInView:subview matching:test]) { + return YES; + } + } + return NO; +} + +- (void)testRendersWelcomeScreen +{ + UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController]; + NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; + BOOL foundElement = NO; + + __block NSString *redboxError = nil; +#ifdef DEBUG + RCTSetLogFunction( + ^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { + if (level >= RCTLogLevelError) { + redboxError = message; + } + }); +#endif + + while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { + [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; + [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; + + foundElement = [self findSubviewInView:vc.view + matching:^BOOL(UIView *view) { + if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { + return YES; + } + return NO; + }]; + } + +#ifdef DEBUG + RCTSetLogFunction(RCTDefaultLogFunction); +#endif + + XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); + XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); +} + +@end diff --git a/apps/app-mobile/jest.config.js b/apps/app-mobile/jest.config.js new file mode 100644 index 0000000..bae0df3 --- /dev/null +++ b/apps/app-mobile/jest.config.js @@ -0,0 +1,3 @@ +module.exports = { + preset: 'react-native', +}; diff --git a/apps/app-mobile/metro.config.js b/apps/app-mobile/metro.config.js new file mode 100644 index 0000000..bf32160 --- /dev/null +++ b/apps/app-mobile/metro.config.js @@ -0,0 +1,16 @@ +const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config'); +const CppjsMetroPlugin = require('cppjs-plugin-react-native/metro-plugin.cjs'); + +const defaultConfig = getDefaultConfig(__dirname); + +/** + * Metro configuration + * https://facebook.github.io/metro/docs/configuration + * + * @type {import('metro-config').MetroConfig} + */ +const config = { + ...CppjsMetroPlugin(defaultConfig), +}; + +module.exports = mergeConfig(defaultConfig, config); diff --git a/apps/app-mobile/package-lock.json b/apps/app-mobile/package-lock.json new file mode 100644 index 0000000..8515ac6 --- /dev/null +++ b/apps/app-mobile/package-lock.json @@ -0,0 +1,15788 @@ +{ + "name": "gdal3.js-mobile", + "version": "1.0.0-alpha.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "gdal3.js-mobile", + "version": "1.0.0-alpha.1", + "dependencies": { + "@gorhom/bottom-sheet": "^4.6.4", + "@react-navigation/bottom-tabs": "^6.6.0", + "@react-navigation/native": "^6.1.17", + "@rneui/base": "^4.0.0-rc.8", + "@rneui/themed": "^4.0.0-rc.8", + "@th3rdwave/react-navigation-bottom-sheet": "^0.3.2", + "cpp.js": "^1.0.0-alpha.3", + "cppjs-core-rn-embind": "^1.0.0-alpha.3", + "cppjs-package-expat": "^1.0.0-alpha.3", + "cppjs-package-gdal": "^1.0.0-alpha.4", + "cppjs-package-geos": "^1.0.0-alpha.3", + "cppjs-package-geotiff": "^1.0.0-alpha.3", + "cppjs-package-iconv": "^1.0.0-alpha.3", + "cppjs-package-proj": "^1.0.0-alpha.3", + "cppjs-package-spatialite": "^1.0.0-alpha.3", + "cppjs-package-sqlite3": "^1.0.0-alpha.3", + "cppjs-package-tiff": "^1.0.0-alpha.3", + "cppjs-package-webp": "^1.0.0-alpha.3", + "cppjs-package-zlib": "^1.0.0-alpha.3", + "cppjs-plugin-react-native": "1.0.0-alpha.16", + "cppjs-plugin-react-native-ios-helper": "^1.0.0-alpha.4", + "gdal3.js": "^3.0.0-alpha.5", + "mobx": "^6.13.1", + "mobx-react-lite": "^4.0.7", + "react": "18.2.0", + "react-native": "0.74.3", + "react-native-document-picker": "^9.3.0", + "react-native-dropdown-picker": "^5.4.6", + "react-native-fs": "^2.20.0", + "react-native-gesture-handler": "^2.18.0", + "react-native-json-tree": "^1.3.0", + "react-native-reanimated": "^3.14.0", + "react-native-safe-area-context": "^4.10.8", + "react-native-screens": "^3.32.0", + "react-native-toast-message": "^2.2.0", + "react-native-vector-icons": "^10.1.0", + "styled-components": "^6.1.11" + }, + "devDependencies": { + "@babel/core": "^7.20.0", + "@babel/preset-env": "^7.20.0", + "@babel/runtime": "^7.20.0", + "@react-native/babel-preset": "0.74.85", + "@react-native/eslint-config": "0.74.85", + "@react-native/metro-config": "0.74.85", + "@react-native/typescript-config": "0.74.85", + "@types/react": "^18.2.6", + "@types/react-test-renderer": "^18.0.0", + "babel-jest": "^29.6.3", + "eslint": "^8.19.0", + "jest": "^29.6.3", + "prettier": "2.8.8", + "react-test-renderer": "18.2.0", + "typescript": "5.0.4" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz", + "integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/eslint-parser": { + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.25.1.tgz", + "integrity": "sha512-Y956ghgTT4j7rKesabkh5WeqgSFZVFwaPR0IWFm7KFHFmmJ4afbG49SmfW4S+GyRPx0Dy5jxEWA5t0rpxfElWg==", + "dev": true, + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0", + "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz", + "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==", + "dependencies": { + "@babel/types": "^7.25.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "dependencies": { + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.0.tgz", + "integrity": "sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/traverse": "^7.25.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz", + "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", + "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", + "dependencies": { + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", + "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-wrap-function": "^7.25.0", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", + "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", + "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", + "dependencies": { + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz", + "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==", + "dependencies": { + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz", + "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==", + "dependencies": { + "@babel/types": "^7.25.2" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz", + "integrity": "sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz", + "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", + "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", + "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", + "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.", + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-default-from": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.24.7.tgz", + "integrity": "sha512-CcmFwUJ3tKhLjPdt4NP+SHMshebytF8ZTYOv5ZDpkzq2sin80Wb5vJrGt8fhPrORQCfoSa0LAxC/DW+GAC5+Hw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-export-default-from": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead.", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.", + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead.", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-default-from": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.24.7.tgz", + "integrity": "sha512-bTPz4/635WQ9WhwsyPdxUJDVpsi/X9BMmy/8Rf/UAlOO4jSql4CxUCjWI5PiM+jG+c4LVPTScoTw80geFj9+Bw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz", + "integrity": "sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", + "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", + "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", + "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz", + "integrity": "sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-remap-async-to-generator": "^7.25.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", + "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", + "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", + "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", + "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.0.tgz", + "integrity": "sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/traverse": "^7.25.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", + "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz", + "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", + "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", + "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.2.tgz", + "integrity": "sha512-InBZ0O8tew5V0K6cHcQ+wgxlrjOw1W4wDXLkOTjLRD8GYhTSkxTVBtdy3MMtvYBrbAWa1Qm3hNoTc1620Yj+Mg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/plugin-syntax-flow": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", + "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", + "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz", + "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", + "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", + "dependencies": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", + "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", + "dependencies": { + "@babel/helper-module-transforms": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-simple-access": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", + "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", + "dependencies": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", + "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", + "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", + "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", + "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", + "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz", + "integrity": "sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz", + "integrity": "sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/types": "^7.25.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz", + "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz", + "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz", + "integrity": "sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==", + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.1", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", + "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.2.tgz", + "integrity": "sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-syntax-typescript": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", + "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", + "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", + "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.3.tgz", + "integrity": "sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g==", + "dependencies": { + "@babel/compat-data": "^7.25.2", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.24.7", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.0", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoped-functions": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.24.7", + "@babel/plugin-transform-class-static-block": "^7.24.7", + "@babel/plugin-transform-classes": "^7.25.0", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-dotall-regex": "^7.24.7", + "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0", + "@babel/plugin-transform-dynamic-import": "^7.24.7", + "@babel/plugin-transform-exponentiation-operator": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.24.7", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.1", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-literals": "^7.25.2", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-member-expression-literals": "^7.24.7", + "@babel/plugin-transform-modules-amd": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-modules-systemjs": "^7.25.0", + "@babel/plugin-transform-modules-umd": "^7.24.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-new-target": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-object-super": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-property-literals": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-reserved-words": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-template-literals": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.8", + "@babel/plugin-transform-unicode-escapes": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.37.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-flow": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.7.tgz", + "integrity": "sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-transform-flow-strip-types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz", + "integrity": "sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.7", + "@babel/plugin-transform-typescript": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.24.6.tgz", + "integrity": "sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==", + "dependencies": { + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.6", + "source-map-support": "^0.5.16" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@babel/register/node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" + }, + "node_modules/@babel/runtime": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz", + "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.3.tgz", + "integrity": "sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.3", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.2", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz", + "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", + "dependencies": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@egjs/hammerjs": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz", + "integrity": "sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==", + "dependencies": { + "@types/hammerjs": "^2.0.36" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz", + "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==", + "dependencies": { + "@emotion/memoize": "^0.8.1" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@gorhom/bottom-sheet": { + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/@gorhom/bottom-sheet/-/bottom-sheet-4.6.4.tgz", + "integrity": "sha512-0itLMblLBvepE065w3a60S030c2rNUsGshPC7wbWDm31VyqoaU2xjzh/ojH62YIJOcobBr5QoC30IxBBKDGovQ==", + "dependencies": { + "@gorhom/portal": "1.0.14", + "invariant": "^2.2.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-native": "*", + "react": "*", + "react-native": "*", + "react-native-gesture-handler": ">=1.10.1", + "react-native-reanimated": ">=2.2.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-native": { + "optional": true + } + } + }, + "node_modules/@gorhom/portal": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@gorhom/portal/-/portal-1.0.14.tgz", + "integrity": "sha512-MXyL4xvCjmgaORr/rtryDNFy3kU4qUbKlwtQqqsygd0xX3mhKjOLn6mQK8wfu0RkoE0pBE0nAasRoHua+/QZ7A==", + "dependencies": { + "nanoid": "^3.3.1" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/ttlcache": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", + "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/core/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/create-cache-key-function": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz", + "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==", + "dependencies": { + "@jest/types": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dev": true, + "dependencies": { + "eslint-scope": "5.1.1" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@react-native-community/cli": { + "version": "13.6.9", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-13.6.9.tgz", + "integrity": "sha512-hFJL4cgLPxncJJd/epQ4dHnMg5Jy/7Q56jFvA3MHViuKpzzfTCJCB+pGY54maZbtym53UJON9WTGpM3S81UfjQ==", + "dependencies": { + "@react-native-community/cli-clean": "13.6.9", + "@react-native-community/cli-config": "13.6.9", + "@react-native-community/cli-debugger-ui": "13.6.9", + "@react-native-community/cli-doctor": "13.6.9", + "@react-native-community/cli-hermes": "13.6.9", + "@react-native-community/cli-server-api": "13.6.9", + "@react-native-community/cli-tools": "13.6.9", + "@react-native-community/cli-types": "13.6.9", + "chalk": "^4.1.2", + "commander": "^9.4.1", + "deepmerge": "^4.3.0", + "execa": "^5.0.0", + "find-up": "^4.1.0", + "fs-extra": "^8.1.0", + "graceful-fs": "^4.1.3", + "prompts": "^2.4.2", + "semver": "^7.5.2" + }, + "bin": { + "rnc-cli": "build/bin.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native-community/cli-clean": { + "version": "13.6.9", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-13.6.9.tgz", + "integrity": "sha512-7Dj5+4p9JggxuVNOjPbduZBAP1SUgNhLKVw5noBUzT/3ZpUZkDM+RCSwyoyg8xKWoE4OrdUAXwAFlMcFDPKykA==", + "dependencies": { + "@react-native-community/cli-tools": "13.6.9", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-glob": "^3.3.2" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@react-native-community/cli-clean/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-config": { + "version": "13.6.9", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-13.6.9.tgz", + "integrity": "sha512-rFfVBcNojcMm+KKHE/xqpqXg8HoKl4EC7bFHUrahMJ+y/tZll55+oX/PGG37rzB8QzP2UbMQ19DYQKC1G7kXeg==", + "dependencies": { + "@react-native-community/cli-tools": "13.6.9", + "chalk": "^4.1.2", + "cosmiconfig": "^5.1.0", + "deepmerge": "^4.3.0", + "fast-glob": "^3.3.2", + "joi": "^17.2.1" + } + }, + "node_modules/@react-native-community/cli-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@react-native-community/cli-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-debugger-ui": { + "version": "13.6.9", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-13.6.9.tgz", + "integrity": "sha512-TkN7IdFmGPPvTpAo3nCAH9uwGCPxWBEAwpqEZDrq0NWllI7Tdie8vDpGdrcuCcKalmhq6OYnkXzeBah7O1Ztpw==", + "dependencies": { + "serve-static": "^1.13.1" + } + }, + "node_modules/@react-native-community/cli-doctor": { + "version": "13.6.9", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-13.6.9.tgz", + "integrity": "sha512-5quFaLdWFQB+677GXh5dGU9I5eg2z6Vg4jOX9vKnc9IffwyIFAyJfCZHrxLSRPDGNXD7biDQUdoezXYGwb6P/A==", + "dependencies": { + "@react-native-community/cli-config": "13.6.9", + "@react-native-community/cli-platform-android": "13.6.9", + "@react-native-community/cli-platform-apple": "13.6.9", + "@react-native-community/cli-platform-ios": "13.6.9", + "@react-native-community/cli-tools": "13.6.9", + "chalk": "^4.1.2", + "command-exists": "^1.2.8", + "deepmerge": "^4.3.0", + "envinfo": "^7.10.0", + "execa": "^5.0.0", + "hermes-profile-transformer": "^0.0.6", + "node-stream-zip": "^1.9.1", + "ora": "^5.4.1", + "semver": "^7.5.2", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1", + "yaml": "^2.2.1" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@react-native-community/cli-doctor/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-hermes": { + "version": "13.6.9", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-13.6.9.tgz", + "integrity": "sha512-GvwiwgvFw4Ws+krg2+gYj8sR3g05evmNjAHkKIKMkDTJjZ8EdyxbkifRUs1ZCq3TMZy2oeblZBXCJVOH4W7ZbA==", + "dependencies": { + "@react-native-community/cli-platform-android": "13.6.9", + "@react-native-community/cli-tools": "13.6.9", + "chalk": "^4.1.2", + "hermes-profile-transformer": "^0.0.6" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@react-native-community/cli-hermes/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-android": { + "version": "13.6.9", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-13.6.9.tgz", + "integrity": "sha512-9KsYGdr08QhdvT3Ht7e8phQB3gDX9Fs427NJe0xnoBh+PDPTI2BD5ks5ttsH8CzEw8/P6H8tJCHq6hf2nxd9cw==", + "dependencies": { + "@react-native-community/cli-tools": "13.6.9", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-glob": "^3.3.2", + "fast-xml-parser": "^4.2.4", + "logkitty": "^0.7.1" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-apple": { + "version": "13.6.9", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-13.6.9.tgz", + "integrity": "sha512-KoeIHfhxMhKXZPXmhQdl6EE+jGKWwoO9jUVWgBvibpVmsNjo7woaG/tfJMEWfWF3najX1EkQAoJWpCDBMYWtlA==", + "dependencies": { + "@react-native-community/cli-tools": "13.6.9", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-glob": "^3.3.2", + "fast-xml-parser": "^4.0.12", + "ora": "^5.4.1" + } + }, + "node_modules/@react-native-community/cli-platform-apple/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-apple/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-apple/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-platform-apple/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@react-native-community/cli-platform-apple/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-apple/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-ios": { + "version": "13.6.9", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-13.6.9.tgz", + "integrity": "sha512-CiUcHlGs8vE0CAB4oi1f+dzniqfGuhWPNrDvae2nm8dewlahTBwIcK5CawyGezjcJoeQhjBflh9vloska+nlnw==", + "dependencies": { + "@react-native-community/cli-platform-apple": "13.6.9" + } + }, + "node_modules/@react-native-community/cli-server-api": { + "version": "13.6.9", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-13.6.9.tgz", + "integrity": "sha512-W8FSlCPWymO+tlQfM3E0JmM8Oei5HZsIk5S0COOl0MRi8h0NmHI4WSTF2GCfbFZkcr2VI/fRsocoN8Au4EZAug==", + "dependencies": { + "@react-native-community/cli-debugger-ui": "13.6.9", + "@react-native-community/cli-tools": "13.6.9", + "compression": "^1.7.1", + "connect": "^3.6.5", + "errorhandler": "^1.5.1", + "nocache": "^3.0.1", + "pretty-format": "^26.6.2", + "serve-static": "^1.13.1", + "ws": "^6.2.2" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/@types/yargs": { + "version": "15.0.19", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", + "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@react-native-community/cli-server-api/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + }, + "node_modules/@react-native-community/cli-server-api/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/@react-native-community/cli-tools": { + "version": "13.6.9", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-13.6.9.tgz", + "integrity": "sha512-OXaSjoN0mZVw3nrAwcY1PC0uMfyTd9fz7Cy06dh+EJc+h0wikABsVRzV8cIOPrVV+PPEEXE0DBrH20T2puZzgQ==", + "dependencies": { + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "mime": "^2.4.1", + "node-fetch": "^2.6.0", + "open": "^6.2.0", + "ora": "^5.4.1", + "semver": "^7.5.2", + "shell-quote": "^1.7.3", + "sudo-prompt": "^9.0.0" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@react-native-community/cli-tools/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-types": { + "version": "13.6.9", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-13.6.9.tgz", + "integrity": "sha512-RLxDppvRxXfs3hxceW/mShi+6o5yS+kFPnPqZTaMKKR5aSg7LwDpLQW4K2D22irEG8e6RKDkZUeH9aL3vO2O0w==", + "dependencies": { + "joi": "^17.2.1" + } + }, + "node_modules/@react-native-community/cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@react-native-community/cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native/assets-registry": { + "version": "0.74.85", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.74.85.tgz", + "integrity": "sha512-59YmIQxfGDw4aP9S/nAM+sjSFdW8fUP6fsqczCcXgL2YVEjyER9XCaUT0J1K+PdHep8pi05KUgIKUds8P3jbmA==", + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/babel-plugin-codegen": { + "version": "0.74.85", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.85.tgz", + "integrity": "sha512-48TSDclRB5OMXiImiJkLxyCfRyLsqkCgI8buugCZzvXcYslfV7gCvcyFyQldtcOmerV+CK4RAj7QS4hmB5Mr8Q==", + "dependencies": { + "@react-native/codegen": "0.74.85" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/babel-preset": { + "version": "0.74.85", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.74.85.tgz", + "integrity": "sha512-yMHUlN8INbK5BBwiBuQMftdWkpm1IgCsoJTKcGD2OpSgZhwwm8RUSvGhdRMzB2w7bsqqBmaEMleGtW6aCR7B9w==", + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.18.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", + "@babel/plugin-proposal-numeric-separator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.20.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.18.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.20.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.20.0", + "@babel/plugin-transform-flow-strip-types": "^7.20.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "@react-native/babel-plugin-codegen": "0.74.85", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/codegen": { + "version": "0.74.85", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.74.85.tgz", + "integrity": "sha512-N7QwoS4Hq/uQmoH83Ewedy6D0M7xbQsOU3OMcQf0eY3ltQ7S2hd9/R4UTalQWRn1OUJfXR6OG12QJ4FStKgV6Q==", + "dependencies": { + "@babel/parser": "^7.20.0", + "glob": "^7.1.1", + "hermes-parser": "0.19.1", + "invariant": "^2.2.4", + "jscodeshift": "^0.14.0", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" + } + }, + "node_modules/@react-native/community-cli-plugin": { + "version": "0.74.85", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.74.85.tgz", + "integrity": "sha512-ODzND33eA2owAY3g9jgCdqB+BjAh8qJ7dvmSotXgrgDYr3MJMpd8gvHTIPe2fg4Kab+wk8uipRhrE0i0RYMwtQ==", + "dependencies": { + "@react-native-community/cli-server-api": "13.6.9", + "@react-native-community/cli-tools": "13.6.9", + "@react-native/dev-middleware": "0.74.85", + "@react-native/metro-babel-transformer": "0.74.85", + "chalk": "^4.0.0", + "execa": "^5.1.1", + "metro": "^0.80.3", + "metro-config": "^0.80.3", + "metro-core": "^0.80.3", + "node-fetch": "^2.2.0", + "querystring": "^0.2.1", + "readline": "^1.3.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@react-native/community-cli-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native/debugger-frontend": { + "version": "0.74.85", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.74.85.tgz", + "integrity": "sha512-gUIhhpsYLUTYWlWw4vGztyHaX/kNlgVspSvKe2XaPA7o3jYKUoNLc3Ov7u70u/MBWfKdcEffWq44eSe3j3s5JQ==", + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/dev-middleware": { + "version": "0.74.85", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.74.85.tgz", + "integrity": "sha512-BRmgCK5vnMmHaKRO+h8PKJmHHH3E6JFuerrcfE3wG2eZ1bcSr+QTu8DAlpxsDWvJvHpCi8tRJGauxd+Ssj/c7w==", + "dependencies": { + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.74.85", + "@rnx-kit/chromium-edge-launcher": "^1.0.0", + "chrome-launcher": "^0.15.2", + "connect": "^3.6.5", + "debug": "^2.2.0", + "node-fetch": "^2.2.0", + "nullthrows": "^1.1.1", + "open": "^7.0.3", + "selfsigned": "^2.4.1", + "serve-static": "^1.13.1", + "temp-dir": "^2.0.0", + "ws": "^6.2.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/dev-middleware/node_modules/debug": { + "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" + } + }, + "node_modules/@react-native/dev-middleware/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/@react-native/dev-middleware/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native/dev-middleware/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/@react-native/eslint-config": { + "version": "0.74.85", + "resolved": "https://registry.npmjs.org/@react-native/eslint-config/-/eslint-config-0.74.85.tgz", + "integrity": "sha512-ylp+lFKfJAtfbb+3kqP7oBL9BMJcxBDIcX6ot16NXTkDXNGDC4YK1ViDkyZvmzTgAIlSCyq/+XZBD7xsNsVy2A==", + "dev": true, + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/eslint-parser": "^7.20.0", + "@react-native/eslint-plugin": "0.74.85", + "@typescript-eslint/eslint-plugin": "^7.1.1", + "@typescript-eslint/parser": "^7.1.1", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-eslint-comments": "^3.2.0", + "eslint-plugin-ft-flow": "^2.0.1", + "eslint-plugin-jest": "^27.9.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-react": "^7.30.1", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-native": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": ">=8", + "prettier": ">=2" + } + }, + "node_modules/@react-native/eslint-plugin": { + "version": "0.74.85", + "resolved": "https://registry.npmjs.org/@react-native/eslint-plugin/-/eslint-plugin-0.74.85.tgz", + "integrity": "sha512-FtyfgL8EOTddxm+DyjfsInqMtjmU0PWQIRdyET/uob8i6sCxS+HmBzhbtEVZUKwld2kNG1JGgdNLndcEejC81Q==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/gradle-plugin": { + "version": "0.74.85", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.74.85.tgz", + "integrity": "sha512-1VQSLukJzaVMn1MYcs8Weo1nUW8xCas2XU1KuoV7OJPk6xPnEBFJmapmEGP5mWeEy7kcTXJmddEgy1wwW0tcig==", + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/js-polyfills": { + "version": "0.74.85", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.74.85.tgz", + "integrity": "sha512-gp4Rg9le3lVZeW7Cie6qLfekvRKZuhJ3LKgi1SFB4N154z1wIclypAJXVXgWBsy8JKJfTwRI+sffC4qZDlvzrg==", + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/metro-babel-transformer": { + "version": "0.74.85", + "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.74.85.tgz", + "integrity": "sha512-JIrXqEwhTvWPtGArgMptIPGstMdXQIkwSjKVYt+7VC4a9Pw1GurIWanIJheEW6ZuCVvTc0VZkwglFz9JVjzDjA==", + "dependencies": { + "@babel/core": "^7.20.0", + "@react-native/babel-preset": "0.74.85", + "hermes-parser": "0.19.1", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/metro-config": { + "version": "0.74.85", + "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.74.85.tgz", + "integrity": "sha512-NQso5jKTdpwn0Ty0qzWb2ia9oc/w6NSno1SEiWer7ThUOu905rdHub0vRFOGFOmqvjwNIhp5GVqZ3Oi3QuGZ5w==", + "dev": true, + "dependencies": { + "@react-native/js-polyfills": "0.74.85", + "@react-native/metro-babel-transformer": "0.74.85", + "metro-config": "^0.80.3", + "metro-runtime": "^0.80.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/normalize-colors": { + "version": "0.74.85", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.74.85.tgz", + "integrity": "sha512-pcE4i0X7y3hsAE0SpIl7t6dUc0B0NZLd1yv7ssm4FrLhWG+CGyIq4eFDXpmPU1XHmL5PPySxTAjEMiwv6tAmOw==" + }, + "node_modules/@react-native/typescript-config": { + "version": "0.74.85", + "resolved": "https://registry.npmjs.org/@react-native/typescript-config/-/typescript-config-0.74.85.tgz", + "integrity": "sha512-FiMIWSRPCEW6yobrzAL2GR4a5PMyRpJEUsKkN7h5J2dpM/f33FLZdDon/ljIK2iPB4XOt6m1opUxep9ZqjToDg==", + "dev": true + }, + "node_modules/@react-native/virtualized-lists": { + "version": "0.74.85", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.74.85.tgz", + "integrity": "sha512-jx2Zw0qlZteoQ+0KxRc7s4drsljLBEP534FaNZ950e9+CN9nVkLsV6rigcTjDR8wjKMSBWhKf0C0C3egYz7Ehg==", + "dependencies": { + "invariant": "^2.2.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/react": "^18.2.6", + "react": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@react-navigation/bottom-tabs": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-6.6.1.tgz", + "integrity": "sha512-9oD4cypEBjPuaMiu9tevWGiQ4w/d6l3HNhcJ1IjXZ24xvYDSs0mqjUcdt8SWUolCvRrYc/DmNBLlT83bk0bHTw==", + "dependencies": { + "@react-navigation/elements": "^1.3.31", + "color": "^4.2.3", + "warn-once": "^0.1.0" + }, + "peerDependencies": { + "@react-navigation/native": "^6.0.0", + "react": "*", + "react-native": "*", + "react-native-safe-area-context": ">= 3.0.0", + "react-native-screens": ">= 3.0.0" + } + }, + "node_modules/@react-navigation/core": { + "version": "6.4.17", + "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-6.4.17.tgz", + "integrity": "sha512-Nd76EpomzChWAosGqWOYE3ItayhDzIEzzZsT7PfGcRFDgW5miHV2t4MZcq9YIK4tzxZjVVpYbIynOOQQd1e0Cg==", + "dependencies": { + "@react-navigation/routers": "^6.1.9", + "escape-string-regexp": "^4.0.0", + "nanoid": "^3.1.23", + "query-string": "^7.1.3", + "react-is": "^16.13.0", + "use-latest-callback": "^0.2.1" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/@react-navigation/elements": { + "version": "1.3.31", + "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-1.3.31.tgz", + "integrity": "sha512-bUzP4Awlljx5RKEExw8WYtif8EuQni2glDaieYROKTnaxsu9kEIA515sXQgUDZU4Ob12VoL7+z70uO3qrlfXcQ==", + "peerDependencies": { + "@react-navigation/native": "^6.0.0", + "react": "*", + "react-native": "*", + "react-native-safe-area-context": ">= 3.0.0" + } + }, + "node_modules/@react-navigation/native": { + "version": "6.1.18", + "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-6.1.18.tgz", + "integrity": "sha512-mIT9MiL/vMm4eirLcmw2h6h/Nm5FICtnYSdohq4vTLA2FF/6PNhByM7s8ffqoVfE5L0uAa6Xda1B7oddolUiGg==", + "dependencies": { + "@react-navigation/core": "^6.4.17", + "escape-string-regexp": "^4.0.0", + "fast-deep-equal": "^3.1.3", + "nanoid": "^3.1.23" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/@react-navigation/routers": { + "version": "6.1.9", + "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-6.1.9.tgz", + "integrity": "sha512-lTM8gSFHSfkJvQkxacGM6VJtBt61ip2XO54aNfswD+KMw6eeZ4oehl7m0me3CR9hnDE4+60iAZR8sAhvCiI3NA==", + "dependencies": { + "nanoid": "^3.1.23" + } + }, + "node_modules/@rneui/base": { + "version": "4.0.0-rc.8", + "resolved": "https://registry.npmjs.org/@rneui/base/-/base-4.0.0-rc.8.tgz", + "integrity": "sha512-teJ6bUki+TQ+r+abefEWYb2wRUaMgRhp1oxtKa84UfDqTiCF0ItyJ0L8FhMb6AAkTOkWC34301T7j3H4df6ueA==", + "dependencies": { + "@types/react-native-vector-icons": "^6.4.10", + "color": "^3.2.1", + "deepmerge": "^4.2.2", + "hoist-non-react-statics": "^3.3.2", + "react-native-ratings": "^8.1.0", + "react-native-size-matters": "^0.4.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/react-native-elements" + }, + "peerDependencies": { + "react-native-safe-area-context": ">= 3.0.0", + "react-native-vector-icons": ">7.0.0" + } + }, + "node_modules/@rneui/base/node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/@rneui/themed": { + "version": "4.0.0-rc.8", + "resolved": "https://registry.npmjs.org/@rneui/themed/-/themed-4.0.0-rc.8.tgz", + "integrity": "sha512-8L/XOrL9OK/r+/iBLvx63TbIdZOXF8SIjN9eArMYm6kRbMr8m4BitXllDN8nBhBsSPNYvL6EAgjk+i2MfY4sBA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/react-native-elements" + }, + "peerDependencies": { + "@rneui/base": "4.0.0-rc.7" + } + }, + "node_modules/@rnx-kit/chromium-edge-launcher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rnx-kit/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz", + "integrity": "sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg==", + "dependencies": { + "@types/node": "^18.0.0", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=14.15" + } + }, + "node_modules/@rnx-kit/chromium-edge-launcher/node_modules/@types/node": { + "version": "18.19.44", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz", + "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@rnx-kit/chromium-edge-launcher/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@rnx-kit/chromium-edge-launcher/node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/@rollup/plugin-virtual": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-virtual/-/plugin-virtual-3.0.2.tgz", + "integrity": "sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A==", + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.19.1.tgz", + "integrity": "sha512-XzqSg714++M+FXhHfXpS1tDnNZNpgxxuGZWlRG/jSj+VEPmZ0yg6jV4E0AL3uyBKxO8mO3xtOsP5mQ+XLfrlww==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.19.1.tgz", + "integrity": "sha512-thFUbkHteM20BGShD6P08aungq4irbIZKUNbG70LN8RkO7YztcGPiKTTGZS7Kw+x5h8hOXs0i4OaHwFxlpQN6A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.19.1.tgz", + "integrity": "sha512-8o6eqeFZzVLia2hKPUZk4jdE3zW7LCcZr+MD18tXkgBBid3lssGVAYuox8x6YHoEPDdDa9ixTaStcmx88lio5Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.19.1.tgz", + "integrity": "sha512-4T42heKsnbjkn7ovYiAdDVRRWZLU9Kmhdt6HafZxFcUdpjlBlxj4wDrt1yFWLk7G4+E+8p2C9tcmSu0KA6auGA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.19.1.tgz", + "integrity": "sha512-MXg1xp+e5GhZ3Vit1gGEyoC+dyQUBy2JgVQ+3hUrD9wZMkUw/ywgkpK7oZgnB6kPpGrxJ41clkPPnsknuD6M2Q==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.19.1.tgz", + "integrity": "sha512-DZNLwIY4ftPSRVkJEaxYkq7u2zel7aah57HESuNkUnz+3bZHxwkCUkrfS2IWC1sxK6F2QNIR0Qr/YXw7nkF3Pw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.19.1.tgz", + "integrity": "sha512-C7evongnjyxdngSDRRSQv5GvyfISizgtk9RM+z2biV5kY6S/NF/wta7K+DanmktC5DkuaJQgoKGf7KUDmA7RUw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.19.1.tgz", + "integrity": "sha512-89tFWqxfxLLHkAthAcrTs9etAoBFRduNfWdl2xUs/yLV+7XDrJ5yuXMHptNqf1Zw0UCA3cAutkAiAokYCkaPtw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.19.1.tgz", + "integrity": "sha512-PromGeV50sq+YfaisG8W3fd+Cl6mnOOiNv2qKKqKCpiiEke2KiKVyDqG/Mb9GWKbYMHj5a01fq/qlUR28PFhCQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.19.1.tgz", + "integrity": "sha512-/1BmHYh+iz0cNCP0oHCuF8CSiNj0JOGf0jRlSo3L/FAyZyG2rGBuKpkZVH9YF+x58r1jgWxvm1aRg3DHrLDt6A==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.19.1.tgz", + "integrity": "sha512-0cYP5rGkQWRZKy9/HtsWVStLXzCF3cCBTRI+qRL8Z+wkYlqN7zrSYm6FuY5Kd5ysS5aH0q5lVgb/WbG4jqXN1Q==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.19.1.tgz", + "integrity": "sha512-XUXeI9eM8rMP8aGvii/aOOiMvTs7xlCosq9xCjcqI9+5hBxtjDpD+7Abm1ZhVIFE1J2h2VIg0t2DX/gjespC2Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.19.1.tgz", + "integrity": "sha512-V7cBw/cKXMfEVhpSvVZhC+iGifD6U1zJ4tbibjjN+Xi3blSXaj/rJynAkCFFQfoG6VZrAiP7uGVzL440Q6Me2Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.19.1.tgz", + "integrity": "sha512-88brja2vldW/76jWATlBqHEoGjJLRnP0WOEKAUbMcXaAZnemNhlAHSyj4jIwMoP2T750LE9lblvD4e2jXleZsA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.19.1.tgz", + "integrity": "sha512-LdxxcqRVSXi6k6JUrTah1rHuaupoeuiv38du8Mt4r4IPer3kwlTo+RuvfE8KzZ/tL6BhaPlzJ3835i6CxrFIRQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.19.1.tgz", + "integrity": "sha512-2bIrL28PcK3YCqD9anGxDxamxdiJAxA+l7fWIwM5o8UqNy1t3d1NdAweO2XhA0KTDJ5aH1FsuiT5+7VhtHliXg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@th3rdwave/react-navigation-bottom-sheet": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@th3rdwave/react-navigation-bottom-sheet/-/react-navigation-bottom-sheet-0.3.2.tgz", + "integrity": "sha512-DEqC9tlAWE8qw5DDveyTwG0qjMJH3h8nup5Qi3TBlfW8hG9qx0N1/dfA1D+GKFEb4gw1C2/AWC6umc13z7ytoQ==", + "peerDependencies": { + "@gorhom/bottom-sheet": "*", + "@react-navigation/native": "*", + "react": "*", + "react-native": "*", + "react-native-safe-area-context": "*", + "react-native-screens": "*" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/base16": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/base16/-/base16-1.0.5.tgz", + "integrity": "sha512-OzOWrTluG9cwqidEzC/Q6FAmIPcnZfm8BFRlIx0+UIUqnuAmi5OS88O0RpT3Yz6qdmqObvUhasrbNsCofE4W9A==" + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/hammerjs": { + "version": "2.0.45", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.45.tgz", + "integrity": "sha512-qkcUlZmX6c4J8q45taBKTL3p+LbITgyx7qhlPYOdOHZB7B31K0mXbP5YA7i7SgDeEGuI9MnumiKPEMrxg8j3KQ==" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/lodash": { + "version": "4.17.7", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz", + "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==" + }, + "node_modules/@types/node": { + "version": "22.4.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.4.0.tgz", + "integrity": "sha512-49AbMDwYUz7EXxKU/r7mXOsxwFr4BYbvB7tWYxVuLdb2ibd30ijjXINSMAHiEEZk5PCRBmW1gUeisn2VMKt3cQ==", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" + }, + "node_modules/@types/react": { + "version": "18.3.3", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", + "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-native": { + "version": "0.70.19", + "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.70.19.tgz", + "integrity": "sha512-c6WbyCgWTBgKKMESj/8b4w+zWcZSsCforson7UdXtXMecG3MxCinYi6ihhrHVPyUrVzORsvEzK8zg32z4pK6Sg==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-native-vector-icons": { + "version": "6.4.18", + "resolved": "https://registry.npmjs.org/@types/react-native-vector-icons/-/react-native-vector-icons-6.4.18.tgz", + "integrity": "sha512-YGlNWb+k5laTBHd7+uZowB9DpIK3SXUneZqAiKQaj1jnJCZM0x71GDim5JCTMi4IFkhc9m8H/Gm28T5BjyivUw==", + "dependencies": { + "@types/react": "*", + "@types/react-native": "^0.70" + } + }, + "node_modules/@types/react-test-renderer": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-18.3.0.tgz", + "integrity": "sha512-HW4MuEYxfDbOHQsVlY/XtOvNHftCVEPhJF2pQXXwcUiUF+Oyb0usgp48HSgpK5rt8m9KZb22yqOeZm+rrVG8gw==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==" + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==" + }, + "node_modules/@types/stylis": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.5.tgz", + "integrity": "sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==" + }, + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", + "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/type-utils": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/anser": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", + "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==" + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-fragments": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", + "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", + "dependencies": { + "colorette": "^1.0.7", + "slice-ansi": "^2.0.0", + "strip-ansi": "^5.0.0" + } + }, + "node_modules/ansi-fragments/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-fragments/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/appdirsjs": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", + "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==" + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "node_modules/ast-types": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", + "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-transform-flow-enums": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz", + "integrity": "sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==", + "dependencies": { + "@babel/plugin-syntax-flow": "^7.12.1" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", + "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base-64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/base-64/-/base-64-0.1.0.tgz", + "integrity": "sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==" + }, + "node_modules/base16": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz", + "integrity": "sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "dependencies": { + "callsites": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-callsite/node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "dependencies": { + "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", + "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001651", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", + "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chrome-launcher": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", + "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0" + }, + "bin": { + "print-chrome-path": "bin/print-chrome-path.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", + "dev": true + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/color/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" + }, + "node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect/node_modules/debug": { + "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" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, + "node_modules/core-js-compat": { + "version": "3.38.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.0.tgz", + "integrity": "sha512-75LAicdLa4OJVwFxFbQR3NdnZjNgX6ILpVcVzcC4T2smerB5lELMrJQQQoWV6TiuC/vlaFqgU2tKQx9w5s0e0A==", + "dependencies": { + "browserslist": "^4.23.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cosmiconfig/node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cosmiconfig/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cosmiconfig/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/cpp.js": { + "version": "1.0.0-alpha.4", + "resolved": "https://registry.npmjs.org/cpp.js/-/cpp.js-1.0.0-alpha.4.tgz", + "integrity": "sha512-v0/G/hbTFV1CSWAQlgfON/s919ZTcD6DRHoJg7rdu2uV4rgjhiofCDGFy4890bobA2KcAl3QUNyZauR7DwvBHg==", + "dependencies": { + "@rollup/plugin-commonjs": "^26.0.1", + "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-virtual": "^3.0.2", + "commander": "^9.4.1", + "glob": "^8.0.3", + "rollup": "^4.18.0", + "rollup-plugin-uglify": "^6.0.4" + }, + "bin": { + "cpp.js": "src/bin.js" + } + }, + "node_modules/cpp.js/node_modules/@rollup/plugin-commonjs": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-26.0.1.tgz", + "integrity": "sha512-UnsKoZK6/aGIH6AdkptXhNvhaqftcjq3zZdT+LY5Ftms6JR06nADcDsYp5hTU9E2lbJUEOhdlY5J4DNTneM+jQ==", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "glob": "^10.4.1", + "is-reference": "1.2.1", + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=16.0.0 || 14 >= 14.17" + }, + "peerDependencies": { + "rollup": "^2.68.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/cpp.js/node_modules/@rollup/plugin-commonjs/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cpp.js/node_modules/@rollup/plugin-node-resolve": { + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", + "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-builtin-module": "^3.2.1", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/cpp.js/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cpp.js/node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cpp.js/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/cpp.js/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + }, + "node_modules/cpp.js/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cpp.js/node_modules/rollup": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.19.1.tgz", + "integrity": "sha512-K5vziVlg7hTpYfFBI+91zHBEMo6jafYXpkMlqZjg7/zhIG9iHqazBf4xz9AVdjS9BruRn280ROqLI7G3OFRIlw==", + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.19.1", + "@rollup/rollup-android-arm64": "4.19.1", + "@rollup/rollup-darwin-arm64": "4.19.1", + "@rollup/rollup-darwin-x64": "4.19.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.19.1", + "@rollup/rollup-linux-arm-musleabihf": "4.19.1", + "@rollup/rollup-linux-arm64-gnu": "4.19.1", + "@rollup/rollup-linux-arm64-musl": "4.19.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.19.1", + "@rollup/rollup-linux-riscv64-gnu": "4.19.1", + "@rollup/rollup-linux-s390x-gnu": "4.19.1", + "@rollup/rollup-linux-x64-gnu": "4.19.1", + "@rollup/rollup-linux-x64-musl": "4.19.1", + "@rollup/rollup-win32-arm64-msvc": "4.19.1", + "@rollup/rollup-win32-ia32-msvc": "4.19.1", + "@rollup/rollup-win32-x64-msvc": "4.19.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/cppjs-core-rn-embind": { + "version": "1.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/cppjs-core-rn-embind/-/cppjs-core-rn-embind-1.0.0-alpha.3.tgz", + "integrity": "sha512-TnFyVI6nRf823N1eShT/Rmhi3MVAkW9O59EfbRS1SppKnQ2dNjk3TsqIijattiddt3u7QwRzYjFixNwCf2kEIg==", + "dependencies": { + "cpp.js": "^1.0.0-alpha.3" + }, + "peerDependencies": { + "@babel/runtime": "^7.20.7", + "react-native": "^0.74.3" + } + }, + "node_modules/cppjs-package-expat": { + "version": "1.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/cppjs-package-expat/-/cppjs-package-expat-1.0.0-alpha.3.tgz", + "integrity": "sha512-S4q4jr3g1Z173twoV2f9ojVLYMo8TWHkI5UB/7o9SQ0YNKMvnn3xTatz5N2MFAkvN4W65hGJ+q349B0kYs3O2w==", + "hasInstallScript": true, + "dependencies": { + "cpp.js": "^1.0.0-alpha.3" + } + }, + "node_modules/cppjs-package-gdal": { + "version": "1.0.0-alpha.4", + "resolved": "https://registry.npmjs.org/cppjs-package-gdal/-/cppjs-package-gdal-1.0.0-alpha.4.tgz", + "integrity": "sha512-Awh8o55oX99z0yUjyfI6CA3eyMtdL7nQKlgLsSFR7SqPW3bVrQjnu3h6V2YvjkAq+Aq1aL9h2JEGVlGSY7Mvng==", + "hasInstallScript": true, + "dependencies": { + "cpp.js": "^1.0.0-alpha.3", + "cppjs-package-expat": "^1.0.0-alpha.3", + "cppjs-package-geos": "^1.0.0-alpha.3", + "cppjs-package-geotiff": "^1.0.0-alpha.3", + "cppjs-package-iconv": "^1.0.0-alpha.3", + "cppjs-package-proj": "^1.0.0-alpha.3", + "cppjs-package-spatialite": "^1.0.0-alpha.3", + "cppjs-package-sqlite3": "^1.0.0-alpha.3", + "cppjs-package-tiff": "^1.0.0-alpha.3", + "cppjs-package-webp": "^1.0.0-alpha.3", + "cppjs-package-zlib": "^1.0.0-alpha.3" + } + }, + "node_modules/cppjs-package-geos": { + "version": "1.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/cppjs-package-geos/-/cppjs-package-geos-1.0.0-alpha.3.tgz", + "integrity": "sha512-fl1je+8lV957rR8hEM53Gw0cVTBDA8BqyXvfo+cCSBQpybJY0inIkDwWtj2WopLcIbcSyyHx/PC9wRn1lecW4Q==", + "hasInstallScript": true, + "dependencies": { + "cpp.js": "^1.0.0-alpha.3" + } + }, + "node_modules/cppjs-package-geotiff": { + "version": "1.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/cppjs-package-geotiff/-/cppjs-package-geotiff-1.0.0-alpha.3.tgz", + "integrity": "sha512-Cxl5+HZ6Vfq0BTB/E9LCfBxBNVPZi13vBjc+P985C5DBoKoLAdLy8mbLtEAXPaseLurq+b2G7ovyOupYlZ9yZw==", + "hasInstallScript": true, + "dependencies": { + "cpp.js": "^1.0.0-alpha.3", + "cppjs-package-proj": "^1.0.0-alpha.3", + "cppjs-package-tiff": "^1.0.0-alpha.3", + "cppjs-package-zlib": "^1.0.0-alpha.3" + } + }, + "node_modules/cppjs-package-iconv": { + "version": "1.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/cppjs-package-iconv/-/cppjs-package-iconv-1.0.0-alpha.3.tgz", + "integrity": "sha512-bRv4HEb+dRgTosEJnDkkBs31Xe/3uXU3Gffa+8AY3K2k1SdnBOqtuMGVRfQPLhOdXMsXl1I26i+/P5Vexb9acg==", + "hasInstallScript": true, + "dependencies": { + "cpp.js": "^1.0.0-alpha.3" + } + }, + "node_modules/cppjs-package-proj": { + "version": "1.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/cppjs-package-proj/-/cppjs-package-proj-1.0.0-alpha.3.tgz", + "integrity": "sha512-pyvHyZi23kOlL8w6VpafMh+zF7B+XtxYbOVVqmi1Q1gCBWuVhkyzN/TC0Tstm33TZ1Ba7Nmv/mg7cHsYSsRySA==", + "hasInstallScript": true, + "dependencies": { + "cpp.js": "^1.0.0-alpha.3", + "cppjs-package-sqlite3": "^1.0.0-alpha.3", + "cppjs-package-tiff": "^1.0.0-alpha.3" + } + }, + "node_modules/cppjs-package-spatialite": { + "version": "1.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/cppjs-package-spatialite/-/cppjs-package-spatialite-1.0.0-alpha.3.tgz", + "integrity": "sha512-f68KndJ2i1uLihgvhUH3A5puhcYLcbanPiiLEEJi5jJfoc2QYONr0hbLx2bbgf7vAW84tZcdq79jfbx/oCiT0Q==", + "hasInstallScript": true, + "dependencies": { + "cpp.js": "^1.0.0-alpha.3", + "cppjs-package-geos": "^1.0.0-alpha.3", + "cppjs-package-iconv": "^1.0.0-alpha.3", + "cppjs-package-proj": "^1.0.0-alpha.3", + "cppjs-package-sqlite3": "^1.0.0-alpha.3", + "cppjs-package-zlib": "^1.0.0-alpha.3" + } + }, + "node_modules/cppjs-package-sqlite3": { + "version": "1.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/cppjs-package-sqlite3/-/cppjs-package-sqlite3-1.0.0-alpha.3.tgz", + "integrity": "sha512-zuetJGnUzwXeZDr5A+Qm4ZpG8FcjgRow5+uTIxfgmf6l4TDuVteQSKeUYA1HqGGL6tdV+dKD/bkAkjQNPyhELg==", + "hasInstallScript": true, + "dependencies": { + "cpp.js": "^1.0.0-alpha.3", + "cppjs-package-zlib": "^1.0.0-alpha.3" + } + }, + "node_modules/cppjs-package-tiff": { + "version": "1.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/cppjs-package-tiff/-/cppjs-package-tiff-1.0.0-alpha.3.tgz", + "integrity": "sha512-OB/owHwrXgl53qMCx8lwgdxLcGE5a3zywo0q3YSK8cOvUjN6quhFYuJevwyWHZhqQcIGklOusiqdVMaNjCY7Yw==", + "hasInstallScript": true, + "dependencies": { + "cpp.js": "^1.0.0-alpha.3", + "cppjs-package-zlib": "^1.0.0-alpha.3" + } + }, + "node_modules/cppjs-package-webp": { + "version": "1.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/cppjs-package-webp/-/cppjs-package-webp-1.0.0-alpha.3.tgz", + "integrity": "sha512-5mBM1eOR56VT7jUoFONSw/fFqjieN0MOIcdC+pE8f3PS/MtWHB12BstoH1o4nLSfhUe3Lam2I1swAb5EWcH2QA==", + "hasInstallScript": true, + "dependencies": { + "cpp.js": "^1.0.0-alpha.3" + } + }, + "node_modules/cppjs-package-zlib": { + "version": "1.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/cppjs-package-zlib/-/cppjs-package-zlib-1.0.0-alpha.3.tgz", + "integrity": "sha512-PrWGNQAwnu4oAjXpWJZf0J/Xjoq8MJDwWmX5aEjgNIpT3Y4/pOdNpXaVyHmFikvgD2IxPDQLWJuXIlw92+WPlQ==", + "hasInstallScript": true, + "dependencies": { + "cpp.js": "^1.0.0-alpha.3" + } + }, + "node_modules/cppjs-plugin-react-native": { + "version": "1.0.0-alpha.16", + "resolved": "https://registry.npmjs.org/cppjs-plugin-react-native/-/cppjs-plugin-react-native-1.0.0-alpha.16.tgz", + "integrity": "sha512-X3aNMZ6T5StUZHhVD4rcvRKIlE/NCXy8j4fjOss0Lyhp0BQyl+447NlE+H3HlvtA874GNbv2Ye19C6Tgn8yU7g==", + "dependencies": { + "@babel/runtime": "^7.20.7", + "@react-native/metro-babel-transformer": "^0.73.15", + "cpp.js": "^1.0.0-alpha.4", + "cppjs-core-rn-embind": "^1.0.0-alpha.3", + "glob": "^11.0.0" + }, + "peerDependencies": { + "metro": "^0.80.3", + "react-native": "^0.74.3" + } + }, + "node_modules/cppjs-plugin-react-native-ios-helper": { + "version": "1.0.0-alpha.4", + "resolved": "https://registry.npmjs.org/cppjs-plugin-react-native-ios-helper/-/cppjs-plugin-react-native-ios-helper-1.0.0-alpha.4.tgz", + "integrity": "sha512-a7DigTdnMGjO2za3IRRyd4bGI8HBBaLMnzyZvXoztEyZcUkNaWpd+dic3d5UlzIIL+5DS+S0K2+NYk16llbOoQ==" + }, + "node_modules/cppjs-plugin-react-native/node_modules/@react-native/babel-plugin-codegen": { + "version": "0.73.4", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.73.4.tgz", + "integrity": "sha512-XzRd8MJGo4Zc5KsphDHBYJzS1ryOHg8I2gOZDAUCGcwLFhdyGu1zBNDJYH2GFyDrInn9TzAbRIf3d4O+eltXQQ==", + "dependencies": { + "@react-native/codegen": "0.73.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/cppjs-plugin-react-native/node_modules/@react-native/babel-preset": { + "version": "0.73.21", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.73.21.tgz", + "integrity": "sha512-WlFttNnySKQMeujN09fRmrdWqh46QyJluM5jdtDNrkl/2Hx6N4XeDUGhABvConeK95OidVO7sFFf7sNebVXogA==", + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.18.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", + "@babel/plugin-proposal-numeric-separator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.20.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.18.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.20.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.20.0", + "@babel/plugin-transform-flow-strip-types": "^7.20.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "@react-native/babel-plugin-codegen": "0.73.4", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/cppjs-plugin-react-native/node_modules/@react-native/codegen": { + "version": "0.73.3", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.73.3.tgz", + "integrity": "sha512-sxslCAAb8kM06vGy9Jyh4TtvjhcP36k/rvj2QE2Jdhdm61KvfafCATSIsOfc0QvnduWFcpXUPvAVyYwuv7PYDg==", + "dependencies": { + "@babel/parser": "^7.20.0", + "flow-parser": "^0.206.0", + "glob": "^7.1.1", + "invariant": "^2.2.4", + "jscodeshift": "^0.14.0", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" + } + }, + "node_modules/cppjs-plugin-react-native/node_modules/@react-native/codegen/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/cppjs-plugin-react-native/node_modules/@react-native/codegen/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cppjs-plugin-react-native/node_modules/@react-native/codegen/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/cppjs-plugin-react-native/node_modules/@react-native/metro-babel-transformer": { + "version": "0.73.15", + "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.73.15.tgz", + "integrity": "sha512-LlkSGaXCz+xdxc9819plmpsl4P4gZndoFtpjN3GMBIu6f7TBV0GVbyJAU4GE8fuAWPVSVL5ArOcdkWKSbI1klw==", + "dependencies": { + "@babel/core": "^7.20.0", + "@react-native/babel-preset": "0.73.21", + "hermes-parser": "0.15.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/cppjs-plugin-react-native/node_modules/flow-parser": { + "version": "0.206.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.206.0.tgz", + "integrity": "sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/cppjs-plugin-react-native/node_modules/glob": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", + "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cppjs-plugin-react-native/node_modules/hermes-estree": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.15.0.tgz", + "integrity": "sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ==" + }, + "node_modules/cppjs-plugin-react-native/node_modules/hermes-parser": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.15.0.tgz", + "integrity": "sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q==", + "dependencies": { + "hermes-estree": "0.15.0" + } + }, + "node_modules/cppjs-plugin-react-native/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/create-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/create-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/create-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/create-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/create-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/create-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/css-to-react-native": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", + "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", + "dependencies": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dayjs": { + "version": "1.11.12", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.12.tgz", + "integrity": "sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==" + }, + "node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/denodeify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", + "integrity": "sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==" + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.11", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.11.tgz", + "integrity": "sha512-R1CccCDYqndR25CaXFd6hp/u9RaaMcftMkphmvuepXr5b1vfLkRml6aWVeBhXJ7rbevHkKEMJtz8XqPf7ffmew==" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/envinfo": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", + "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/errorhandler": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", + "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", + "dependencies": { + "accepts": "~1.3.7", + "escape-html": "~1.0.3" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-eslint-comments": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz", + "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5", + "ignore": "^5.0.5" + }, + "engines": { + "node": ">=6.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-eslint-comments/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-plugin-ft-flow": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-2.0.3.tgz", + "integrity": "sha512-Vbsd/b+LYA99jUbsL6viEUWShFaYQt2YQs3QN3f+aeszOhh2sgdcU0mjzDyD4yyBvMc8qy2uwvBBWfMzEX06tg==", + "dev": true, + "dependencies": { + "lodash": "^4.17.21", + "string-natural-compare": "^3.0.1" + }, + "engines": { + "node": ">=12.22.0" + }, + "peerDependencies": { + "@babel/eslint-parser": "^7.12.0", + "eslint": "^8.1.0" + } + }, + "node_modules/eslint-plugin-jest": { + "version": "27.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz", + "integrity": "sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^5.10.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0 || ^6.0.0 || ^7.0.0", + "eslint": "^7.0.0 || ^8.0.0", + "jest": "*" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-jest/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-jest/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.35.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz", + "integrity": "sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.19", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.0", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react-native": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-native/-/eslint-plugin-react-native-4.1.0.tgz", + "integrity": "sha512-QLo7rzTBOl43FvVqDdq5Ql9IoElIuTdjrz9SKAXCvULvBoRZ44JGSkx9z4999ZusCsb4rK3gjS8gOGyeYqZv2Q==", + "dev": true, + "dependencies": { + "eslint-plugin-react-native-globals": "^0.1.1" + }, + "peerDependencies": { + "eslint": "^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-native-globals": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-native-globals/-/eslint-plugin-react-native-globals-0.1.2.tgz", + "integrity": "sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g==", + "dev": true + }, + "node_modules/eslint-plugin-react/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-xml-parser": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", + "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/flow-enums-runtime": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz", + "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==" + }, + "node_modules/flow-parser": { + "version": "0.244.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.244.0.tgz", + "integrity": "sha512-Dkc88m5k8bx1VvHTO9HEJ7tvMcSb3Zvcv1PY4OHK7pHdtdY2aUjhmPy6vpjVJ2uUUOIybRlb91sXE8g4doChtA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gdal3.js": { + "version": "3.0.0-alpha.5", + "resolved": "https://registry.npmjs.org/gdal3.js/-/gdal3.js-3.0.0-alpha.5.tgz", + "integrity": "sha512-6IpCiYsRhZdIVDq0sLj/SkUgU2OYH9KxaJodV4btdGzn7tIWFQjwwgJCMXb5lgZ4HjhIOc6iWfyygnhGlRimdA==", + "hasInstallScript": true, + "dependencies": { + "cpp.js": "^1.0.0-alpha.4", + "cppjs-package-gdal": "^1.0.0-alpha.4" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hermes-estree": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.19.1.tgz", + "integrity": "sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==" + }, + "node_modules/hermes-parser": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.19.1.tgz", + "integrity": "sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==", + "dependencies": { + "hermes-estree": "0.19.1" + } + }, + "node_modules/hermes-profile-transformer": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz", + "integrity": "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==", + "dependencies": { + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/hermes-profile-transformer/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-errors": { + "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" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz", + "integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==", + "dependencies": { + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", + "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/jackspeak": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.1.tgz", + "integrity": "sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-circus/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-circus/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-resolve/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runtime/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-watcher/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/joi": { + "version": "17.13.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", + "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", + "dependencies": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsc-android": { + "version": "250231.0.0", + "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-250231.0.0.tgz", + "integrity": "sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==" + }, + "node_modules/jsc-safe-url": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz", + "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==" + }, + "node_modules/jscodeshift": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz", + "integrity": "sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==", + "dependencies": { + "@babel/core": "^7.13.16", + "@babel/parser": "^7.13.16", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", + "@babel/plugin-proposal-optional-chaining": "^7.13.12", + "@babel/plugin-transform-modules-commonjs": "^7.13.8", + "@babel/preset-flow": "^7.13.13", + "@babel/preset-typescript": "^7.13.0", + "@babel/register": "^7.13.16", + "babel-core": "^7.0.0-bridge.0", + "chalk": "^4.1.2", + "flow-parser": "0.*", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "neo-async": "^2.5.0", + "node-dir": "^0.1.17", + "recast": "^0.21.0", + "temp": "^0.8.4", + "write-file-atomic": "^2.3.0" + }, + "bin": { + "jscodeshift": "bin/jscodeshift.js" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" + } + }, + "node_modules/jscodeshift/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jscodeshift/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jscodeshift/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jscodeshift/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jscodeshift/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jscodeshift/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jscodeshift/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "engines": { + "node": ">=6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lighthouse-logger": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", + "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", + "dependencies": { + "debug": "^2.6.9", + "marky": "^1.2.2" + } + }, + "node_modules/lighthouse-logger/node_modules/debug": { + "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" + } + }, + "node_modules/lighthouse-logger/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.curry": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", + "integrity": "sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", + "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", + "dependencies": { + "ansi-fragments": "^0.2.1", + "dayjs": "^1.8.15", + "yargs": "^15.1.0" + }, + "bin": { + "logkitty": "bin/logkitty.js" + } + }, + "node_modules/logkitty/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/logkitty/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/logkitty/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/logkitty/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/logkitty/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/logkitty/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/marky": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", + "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==" + }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/metro": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.80.10.tgz", + "integrity": "sha512-FDPi0X7wpafmDREXe1lgg3WzETxtXh6Kpq8+IwsG35R2tMyp2kFIqDdshdohuvDt1J/qDARcEPq7V/jElTb1kA==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/parser": "^7.20.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.20.0", + "@babel/types": "^7.20.0", + "accepts": "^1.3.7", + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "connect": "^3.6.5", + "debug": "^2.2.0", + "denodeify": "^1.2.1", + "error-stack-parser": "^2.0.6", + "flow-enums-runtime": "^0.0.6", + "graceful-fs": "^4.2.4", + "hermes-parser": "0.23.0", + "image-size": "^1.0.2", + "invariant": "^2.2.4", + "jest-worker": "^29.6.3", + "jsc-safe-url": "^0.2.2", + "lodash.throttle": "^4.1.1", + "metro-babel-transformer": "0.80.10", + "metro-cache": "0.80.10", + "metro-cache-key": "0.80.10", + "metro-config": "0.80.10", + "metro-core": "0.80.10", + "metro-file-map": "0.80.10", + "metro-resolver": "0.80.10", + "metro-runtime": "0.80.10", + "metro-source-map": "0.80.10", + "metro-symbolicate": "0.80.10", + "metro-transform-plugins": "0.80.10", + "metro-transform-worker": "0.80.10", + "mime-types": "^2.1.27", + "node-fetch": "^2.2.0", + "nullthrows": "^1.1.1", + "serialize-error": "^2.1.0", + "source-map": "^0.5.6", + "strip-ansi": "^6.0.0", + "throat": "^5.0.0", + "ws": "^7.5.10", + "yargs": "^17.6.2" + }, + "bin": { + "metro": "src/cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-babel-transformer": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.80.10.tgz", + "integrity": "sha512-GXHueUzgzcazfzORDxDzWS9jVVRV6u+cR6TGvHOfGdfLzJCj7/D0PretLfyq+MwN20twHxLW+BUXkoaB8sCQBg==", + "dependencies": { + "@babel/core": "^7.20.0", + "flow-enums-runtime": "^0.0.6", + "hermes-parser": "0.23.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-babel-transformer/node_modules/hermes-estree": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.23.0.tgz", + "integrity": "sha512-Rkp0PNLGpORw4ktsttkVbpYJbrYKS3hAnkxu8D9nvQi6LvSbuPa+tYw/t2u3Gjc35lYd/k95YkjqyTcN4zspag==" + }, + "node_modules/metro-babel-transformer/node_modules/hermes-parser": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.23.0.tgz", + "integrity": "sha512-xLwM4ylfHGwrm+2qXfO1JT/fnqEDGSnpS/9hQ4VLtqTexSviu2ZpBgz07U8jVtndq67qdb/ps0qvaWDZ3fkTyg==", + "dependencies": { + "hermes-estree": "0.23.0" + } + }, + "node_modules/metro-cache": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.80.10.tgz", + "integrity": "sha512-8CBtDJwMguIE5RvV3PU1QtxUG8oSSX54mIuAbRZmcQ0MYiOl9JdrMd4JCBvIyhiZLoSStph425SMyCSnjtJsdA==", + "dependencies": { + "exponential-backoff": "^3.1.1", + "flow-enums-runtime": "^0.0.6", + "metro-core": "0.80.10" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-cache-key": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.80.10.tgz", + "integrity": "sha512-57qBhO3zQfoU/hP4ZlLW5hVej2jVfBX6B4NcSfMj4LgDPL3YknWg80IJBxzQfjQY/m+fmMLmPy8aUMHzUp/guA==", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-config": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.80.10.tgz", + "integrity": "sha512-0GYAw0LkmGbmA81FepKQepL1KU/85Cyv7sAiWm6QWeV6AcVCpsKg6jGLqGHJ0LLPL60rWzA4TV1DQAlzdJAEtA==", + "dependencies": { + "connect": "^3.6.5", + "cosmiconfig": "^5.0.5", + "flow-enums-runtime": "^0.0.6", + "jest-validate": "^29.6.3", + "metro": "0.80.10", + "metro-cache": "0.80.10", + "metro-core": "0.80.10", + "metro-runtime": "0.80.10" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-core": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.80.10.tgz", + "integrity": "sha512-nwBB6HbpGlNsZMuzxVqxqGIOsn5F3JKpsp8PziS7Z4mV8a/jA1d44mVOgYmDa2q5WlH5iJfRIIhdz24XRNDlLA==", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "lodash.throttle": "^4.1.1", + "metro-resolver": "0.80.10" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-file-map": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.80.10.tgz", + "integrity": "sha512-ytsUq8coneaN7ZCVk1IogojcGhLIbzWyiI2dNmw2nnBgV/0A+M5WaTTgZ6dJEz3dzjObPryDnkqWPvIGLCPtiw==", + "dependencies": { + "anymatch": "^3.0.3", + "debug": "^2.2.0", + "fb-watchman": "^2.0.0", + "flow-enums-runtime": "^0.0.6", + "graceful-fs": "^4.2.4", + "invariant": "^2.2.4", + "jest-worker": "^29.6.3", + "micromatch": "^4.0.4", + "node-abort-controller": "^3.1.1", + "nullthrows": "^1.1.1", + "walker": "^1.0.7" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/metro-file-map/node_modules/debug": { + "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" + } + }, + "node_modules/metro-file-map/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/metro-minify-terser": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.80.10.tgz", + "integrity": "sha512-Xyv9pEYpOsAerrld7cSLIcnCCpv8ItwysOmTA+AKf1q4KyE9cxrH2O2SA0FzMCkPzwxzBWmXwHUr+A89BpEM6g==", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "terser": "^5.15.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-resolver": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.80.10.tgz", + "integrity": "sha512-EYC5CL7f+bSzrqdk1bylKqFNGabfiI5PDctxoPx70jFt89Jz+ThcOscENog8Jb4LEQFG6GkOYlwmPpsi7kx3QA==", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-runtime": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.80.10.tgz", + "integrity": "sha512-Xh0N589ZmSIgJYAM+oYwlzTXEHfASZac9TYPCNbvjNTn0EHKqpoJ/+Im5G3MZT4oZzYv4YnvzRtjqS5k0tK94A==", + "dependencies": { + "@babel/runtime": "^7.0.0", + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-source-map": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.80.10.tgz", + "integrity": "sha512-EyZswqJW8Uukv/HcQr6K19vkMXW1nzHAZPWJSEyJFKIbgp708QfRZ6vnZGmrtFxeJEaFdNup4bGnu8/mIOYlyA==", + "dependencies": { + "@babel/traverse": "^7.20.0", + "@babel/types": "^7.20.0", + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "metro-symbolicate": "0.80.10", + "nullthrows": "^1.1.1", + "ob1": "0.80.10", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-source-map/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro-symbolicate": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.80.10.tgz", + "integrity": "sha512-qAoVUoSxpfZ2DwZV7IdnQGXCSsf2cAUExUcZyuCqGlY5kaWBb0mx2BL/xbMFDJ4wBp3sVvSBPtK/rt4J7a0xBA==", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "metro-source-map": "0.80.10", + "nullthrows": "^1.1.1", + "source-map": "^0.5.6", + "through2": "^2.0.1", + "vlq": "^1.0.0" + }, + "bin": { + "metro-symbolicate": "src/index.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-symbolicate/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro-transform-plugins": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.80.10.tgz", + "integrity": "sha512-leAx9gtA+2MHLsCeWK6XTLBbv2fBnNFu/QiYhWzMq8HsOAP4u1xQAU0tSgPs8+1vYO34Plyn79xTLUtQCRSSUQ==", + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.20.0", + "flow-enums-runtime": "^0.0.6", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-transform-worker": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.80.10.tgz", + "integrity": "sha512-zNfNLD8Rz99U+JdOTqtF2o7iTjcDMMYdVS90z6+81Tzd2D0lDWVpls7R1hadS6xwM+ymgXFQTjM6V6wFoZaC0g==", + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/parser": "^7.20.0", + "@babel/types": "^7.20.0", + "flow-enums-runtime": "^0.0.6", + "metro": "0.80.10", + "metro-babel-transformer": "0.80.10", + "metro-cache": "0.80.10", + "metro-cache-key": "0.80.10", + "metro-minify-terser": "0.80.10", + "metro-source-map": "0.80.10", + "metro-transform-plugins": "0.80.10", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/metro/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/metro/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/metro/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/metro/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/metro/node_modules/debug": { + "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" + } + }, + "node_modules/metro/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/metro/node_modules/hermes-estree": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.23.0.tgz", + "integrity": "sha512-Rkp0PNLGpORw4ktsttkVbpYJbrYKS3hAnkxu8D9nvQi6LvSbuPa+tYw/t2u3Gjc35lYd/k95YkjqyTcN4zspag==" + }, + "node_modules/metro/node_modules/hermes-parser": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.23.0.tgz", + "integrity": "sha512-xLwM4ylfHGwrm+2qXfO1JT/fnqEDGSnpS/9hQ4VLtqTexSviu2ZpBgz07U8jVtndq67qdb/ps0qvaWDZ3fkTyg==", + "dependencies": { + "hermes-estree": "0.23.0" + } + }, + "node_modules/metro/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/metro/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mobx": { + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.13.1.tgz", + "integrity": "sha512-ekLRxgjWJr8hVxj9ZKuClPwM/iHckx3euIJ3Np7zLVNtqJvfbbq7l370W/98C8EabdQ1pB5Jd3BbDWxJPNnaOg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mobx" + } + }, + "node_modules/mobx-react-lite": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/mobx-react-lite/-/mobx-react-lite-4.0.7.tgz", + "integrity": "sha512-RjwdseshK9Mg8On5tyJZHtGD+J78ZnCnRaxeQDSiciKVQDUbfZcXhmld0VMxAwvcTnPEHZySGGewm467Fcpreg==", + "dependencies": { + "use-sync-external-store": "^1.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mobx" + }, + "peerDependencies": { + "mobx": "^6.9.0", + "react": "^16.8.0 || ^17 || ^18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/nocache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", + "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==" + }, + "node_modules/node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", + "dependencies": { + "minimatch": "^3.0.2" + }, + "engines": { + "node": ">= 0.10.5" + } + }, + "node_modules/node-dir/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/node-dir/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" + }, + "node_modules/node-stream-zip": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", + "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", + "engines": { + "node": ">=0.12.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/antelle" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" + }, + "node_modules/ob1": { + "version": "0.80.10", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.80.10.tgz", + "integrity": "sha512-dJHyB0S6JkMorUSfSGcYGkkg9kmq3qDUu3ygZUKIfkr47XOPuG35r2Sk6tbwtHXbdKIXmcMvM8DF2CwgdyaHfQ==", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/open/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", + "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "node_modules/query-string": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", + "dependencies": { + "decode-uri-component": "^0.2.2", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/querystring": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", + "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "dependencies": { + "inherits": "~2.0.3" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-base16-styling": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.8.2.tgz", + "integrity": "sha512-5bxHCNKT/FfU9yMzNB/CaCQLGqZ/Nr4FnaIRJUTkwwPTRaCfYAP+/3opeQb61XvesmofJ4FloTSYW9aw1tMXqQ==", + "dependencies": { + "@types/base16": "^1.0.2", + "@types/lodash": "^4.14.178", + "base16": "^1.0.0", + "color": "^3.2.1", + "csstype": "^3.0.10", + "lodash.curry": "^4.1.1" + } + }, + "node_modules/react-base16-styling/node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/react-devtools-core": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-5.3.1.tgz", + "integrity": "sha512-7FSb9meX0btdBQLwdFOwt6bGqvRPabmVMMslv8fgoSPqXyuGpgQe36kx8gR86XPw7aV1yVouTp6fyZ0EH+NfUw==", + "dependencies": { + "shell-quote": "^1.6.1", + "ws": "^7" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-freeze": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.4.tgz", + "integrity": "sha512-r4F0Sec0BLxWicc7HEyo2x3/2icUTrRmDjaaRyzzn+7aDyFZliszMDOgLVwSnQnYENOlL1o569Ze2HZefk8clA==", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=17.0.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-native": { + "version": "0.74.3", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.74.3.tgz", + "integrity": "sha512-UFutCC6WEw6HkxlcpQ2BemKqi0JkwrgDchYB5Svi8Sp4Xwt4HA6LGEjNQgZ+3KM44bjyFRpofQym0uh0jACGng==", + "dependencies": { + "@jest/create-cache-key-function": "^29.6.3", + "@react-native-community/cli": "13.6.9", + "@react-native-community/cli-platform-android": "13.6.9", + "@react-native-community/cli-platform-ios": "13.6.9", + "@react-native/assets-registry": "0.74.85", + "@react-native/codegen": "0.74.85", + "@react-native/community-cli-plugin": "0.74.85", + "@react-native/gradle-plugin": "0.74.85", + "@react-native/js-polyfills": "0.74.85", + "@react-native/normalize-colors": "0.74.85", + "@react-native/virtualized-lists": "0.74.85", + "abort-controller": "^3.0.0", + "anser": "^1.4.9", + "ansi-regex": "^5.0.0", + "base64-js": "^1.5.1", + "chalk": "^4.0.0", + "event-target-shim": "^5.0.1", + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "jest-environment-node": "^29.6.3", + "jsc-android": "^250231.0.0", + "memoize-one": "^5.0.0", + "metro-runtime": "^0.80.3", + "metro-source-map": "^0.80.3", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1", + "pretty-format": "^26.5.2", + "promise": "^8.3.0", + "react-devtools-core": "^5.0.0", + "react-refresh": "^0.14.0", + "react-shallow-renderer": "^16.15.0", + "regenerator-runtime": "^0.13.2", + "scheduler": "0.24.0-canary-efb381bbf-20230505", + "stacktrace-parser": "^0.1.10", + "whatwg-fetch": "^3.0.0", + "ws": "^6.2.2", + "yargs": "^17.6.2" + }, + "bin": { + "react-native": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/react": "^18.2.6", + "react": "18.2.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-native-document-picker": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/react-native-document-picker/-/react-native-document-picker-9.3.0.tgz", + "integrity": "sha512-X/j0xKn8cObckpHTNwE/hW9WzBiP6oKx820FYu1Nat43QnnHmmT6uozFgAUDcJfxmZGcEdLlbv0lNhnyRXJyyA==", + "dependencies": { + "invariant": "^2.2.4" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-windows": "*" + }, + "peerDependenciesMeta": { + "react-native-windows": { + "optional": true + } + } + }, + "node_modules/react-native-dropdown-picker": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/react-native-dropdown-picker/-/react-native-dropdown-picker-5.4.6.tgz", + "integrity": "sha512-T1XBHbE++M6aRU3wFYw3MvcOuabhWZ29RK/Ivdls2r1ZkZ62iEBZknLUPeVLMX3x6iUxj4Zgr3X2DGlEGXeHsA==", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-fs": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/react-native-fs/-/react-native-fs-2.20.0.tgz", + "integrity": "sha512-VkTBzs7fIDUiy/XajOSNk0XazFE9l+QlMAce7lGuebZcag5CnjszB+u4BdqzwaQOdcYb5wsJIsqq4kxInIRpJQ==", + "dependencies": { + "base-64": "^0.1.0", + "utf8": "^3.0.0" + }, + "peerDependencies": { + "react-native": "*", + "react-native-windows": "*" + }, + "peerDependenciesMeta": { + "react-native-windows": { + "optional": true + } + } + }, + "node_modules/react-native-gesture-handler": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.18.0.tgz", + "integrity": "sha512-NA77wlyTIXBZcPsZY2mUfvTrXp9/eTfwmIViakfDUGMYZTRdT/3cp9ugCIX44CHq5GlYdjy63mIjjCs1qMJ3Jg==", + "dependencies": { + "@egjs/hammerjs": "^2.0.17", + "hoist-non-react-statics": "^3.3.0", + "invariant": "^2.2.4", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-json-tree": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-native-json-tree/-/react-native-json-tree-1.3.0.tgz", + "integrity": "sha512-bsxQfe/3JNluA358X/lu5sIev6bDwaRMEus1ebHBcSjqGtcxDTp4lsLz1t8sFONNiLtWqHdrdEx+4WTmNl7ayw==", + "dependencies": { + "prop-types": "^15.7.2", + "react-base16-styling": "^0.8.0" + }, + "peerDependencies": { + "react": "15.x || >=16.0.0-alpha.6", + "react-native": ">=0.43.2" + } + }, + "node_modules/react-native-ratings": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/react-native-ratings/-/react-native-ratings-8.1.0.tgz", + "integrity": "sha512-+QOJ4G3NjVkI1D+tk4EGx1dCvVfbD2nQdkrj9cXrcAoEiwmbep4z4bZbCKmWMpQ5h2dqbxABU8/eBnbDmvAc3g==", + "dependencies": { + "lodash": "^4.17.15" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-reanimated": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-3.14.0.tgz", + "integrity": "sha512-TAxLtCfRyC/nOLeWoX/8MhdIF+Fi1e1NbLhIgEm5Kv9/gioAwSNaqLUYxjIClU1RaLwSTE8iaiHNVhTU4TS9DA==", + "dependencies": { + "@babel/plugin-transform-arrow-functions": "^7.0.0-0", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.0.0-0", + "@babel/plugin-transform-optional-chaining": "^7.0.0-0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0-0", + "@babel/plugin-transform-template-literals": "^7.0.0-0", + "@babel/preset-typescript": "^7.16.7", + "convert-source-map": "^2.0.0", + "invariant": "^2.2.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0", + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-safe-area-context": { + "version": "4.10.8", + "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.10.8.tgz", + "integrity": "sha512-Jx1lovhvIdYygg0UsMCBUJN0Wvj9GlA5bbcBLzjZf93uJpNHzaiHC4hR280+sNVK1+/pMHEyEkXVHDZE5JWn0w==", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-screens": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-3.32.0.tgz", + "integrity": "sha512-wybqZAHX7v8ipOXhh90CqGLkBHw5JYqKNRBX7R/b0c2WQisTOgu0M0yGwBMM6LyXRBT+4k3NTGHdDbpJVpq0yQ==", + "dependencies": { + "react-freeze": "^1.0.0", + "warn-once": "^0.1.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-size-matters": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/react-native-size-matters/-/react-native-size-matters-0.4.2.tgz", + "integrity": "sha512-DKE3f/sdcozd24oASgkP1iGg+YU3HoajRa5k3a4wkRzpiqREq8SGX12Y5zBgAt/8IivLQoTMYkyQu1/Giuy+zQ==", + "peerDependencies": { + "react-native": "*" + } + }, + "node_modules/react-native-toast-message": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/react-native-toast-message/-/react-native-toast-message-2.2.0.tgz", + "integrity": "sha512-AFti8VzUk6JvyGAlLm9/BknTNDXrrhqnUk7ak/pM7uCTxDPveAu2ekszU0on6vnUPFnG04H/QfYE2IlETqeaWw==", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-vector-icons": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-10.1.0.tgz", + "integrity": "sha512-fdQjCHIdoXmRoTZ5gvN1FmT4sGLQ2wmQiNZHKJQUYnE2tkIwjGnxNch+6Nd4lHAACvMWO7LOzBNot2u/zlOmkw==", + "dependencies": { + "prop-types": "^15.7.2", + "yargs": "^16.1.1" + }, + "bin": { + "fa-upgrade.sh": "bin/fa-upgrade.sh", + "fa5-upgrade": "bin/fa5-upgrade.sh", + "fa6-upgrade": "bin/fa6-upgrade.sh", + "generate-icon": "bin/generate-icon.js" + } + }, + "node_modules/react-native-vector-icons/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/react-native-vector-icons/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/react-native-vector-icons/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + }, + "node_modules/react-native/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/react-native/node_modules/@types/yargs": { + "version": "15.0.19", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", + "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/react-native/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/react-native/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/react-native/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/react-native/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/react-native/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/react-native/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/react-native/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + }, + "node_modules/react-native/node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/react-native/node_modules/scheduler": { + "version": "0.24.0-canary-efb381bbf-20230505", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz", + "integrity": "sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/react-native/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-native/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-shallow-renderer": { + "version": "16.15.0", + "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", + "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==", + "dependencies": { + "object-assign": "^4.1.1", + "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-test-renderer": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.2.0.tgz", + "integrity": "sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==", + "dev": true, + "dependencies": { + "react-is": "^18.2.0", + "react-shallow-renderer": "^16.15.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-test-renderer/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readline": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", + "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==" + }, + "node_modules/recast": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz", + "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==", + "dependencies": { + "ast-types": "0.15.2", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "1.32.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz", + "integrity": "sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==", + "peer": true, + "dependencies": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + }, + "bin": { + "rollup": "dist/bin/rollup" + } + }, + "node_modules/rollup-plugin-uglify": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/rollup-plugin-uglify/-/rollup-plugin-uglify-6.0.4.tgz", + "integrity": "sha512-ddgqkH02klveu34TF0JqygPwZnsbhHVI6t8+hGTcYHngPkQb5MIHI0XiztXIN/d6V9j+efwHAqEL7LspSxQXGw==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "jest-worker": "^24.0.0", + "serialize-javascript": "^2.1.2", + "uglify-js": "^3.4.9" + }, + "peerDependencies": { + "rollup": ">=0.66.0 <2" + } + }, + "node_modules/rollup-plugin-uglify/node_modules/jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dependencies": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/rollup-plugin-uglify/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/rollup/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/send/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serialize-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dependencies": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" + }, + "node_modules/stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "dependencies": { + "type-fest": "^0.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stacktrace-parser/node_modules/type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-natural-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", + "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", + "dev": true + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" + }, + "node_modules/styled-components": { + "version": "6.1.12", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.12.tgz", + "integrity": "sha512-n/O4PzRPhbYI0k1vKKayfti3C/IGcPf+DqcrOB7O/ab9x4u/zjqraneT5N45+sIe87cxrCApXM8Bna7NYxwoTA==", + "dependencies": { + "@emotion/is-prop-valid": "1.2.2", + "@emotion/unitless": "0.8.1", + "@types/stylis": "4.2.5", + "css-to-react-native": "3.2.0", + "csstype": "3.1.3", + "postcss": "8.4.38", + "shallowequal": "1.1.0", + "stylis": "4.3.2", + "tslib": "2.6.2" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/styled-components" + }, + "peerDependencies": { + "react": ">= 16.8.0", + "react-dom": ">= 16.8.0" + } + }, + "node_modules/styled-components/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/stylis": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz", + "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==" + }, + "node_modules/sudo-prompt": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", + "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==" + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/temp": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", + "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", + "dependencies": { + "rimraf": "~2.6.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/temp/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/terser": { + "version": "5.31.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", + "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/terser/node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==" + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/through2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/through2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/through2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/uglify-js": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.0.tgz", + "integrity": "sha512-wNKHUY2hYYkf6oSFfhwwiHo4WCHzHmzcXsqXYTN9ja3iApYIFbb2U6ics9hBcYLHcYGQoAlwnZlTrf3oF+BL/Q==", + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "6.19.6", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.6.tgz", + "integrity": "sha512-e/vggGopEfTKSvj4ihnOLTsqhrKRN3LeO6qSN/GxohhuRv8qH9bNQ4B8W7e/vFL+0XTnmHPB4/kegunZGA4Org==" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-latest-callback": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.2.1.tgz", + "integrity": "sha512-QWlq8Is8BGWBf883QOEQP5HWYX/kMI+JTbJ5rdtvJLmXTIh9XoHIO3PQcmQl8BU44VKxow1kbQUHa6mQSMALDQ==", + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", + "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vlq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", + "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==" + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/warn-once": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/warn-once/-/warn-once-0.1.1.tgz", + "integrity": "sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==" + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", + "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yaml": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz", + "integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/apps/app-mobile/package.json b/apps/app-mobile/package.json new file mode 100644 index 0000000..1870cc7 --- /dev/null +++ b/apps/app-mobile/package.json @@ -0,0 +1,72 @@ +{ + "name": "gdal3.js-mobile", + "version": "1.0.0-alpha.1", + "private": true, + "scripts": { + "android": "react-native run-android", + "ios": "react-native run-ios", + "lint": "eslint .", + "start": "react-native start", + "test": "jest" + }, + "dependencies": { + "react": "18.2.0", + "react-native": "0.74.3", + "cpp.js": "^1.0.0-alpha.3", + "cppjs-core-rn-embind": "^1.0.0-alpha.3", + "cppjs-plugin-react-native": "1.0.0-alpha.16", + "cppjs-plugin-react-native-ios-helper": "^1.0.0-alpha.4", + "gdal3.js": "^3.0.0-alpha.5", + "cppjs-package-gdal": "^1.0.0-alpha.4", + "cppjs-package-expat": "^1.0.0-alpha.3", + "cppjs-package-geos": "^1.0.0-alpha.3", + "cppjs-package-geotiff": "^1.0.0-alpha.3", + "cppjs-package-iconv": "^1.0.0-alpha.3", + "cppjs-package-proj": "^1.0.0-alpha.3", + "cppjs-package-spatialite": "^1.0.0-alpha.3", + "cppjs-package-sqlite3": "^1.0.0-alpha.3", + "cppjs-package-tiff": "^1.0.0-alpha.3", + "cppjs-package-webp": "^1.0.0-alpha.3", + "cppjs-package-zlib": "^1.0.0-alpha.3", + "mobx": "^6.13.1", + "mobx-react-lite": "^4.0.7", + "styled-components": "^6.1.11", + "react-native-document-picker": "^9.3.0", + "react-native-fs":"^2.20.0", + "react-native-json-tree": "^1.3.0", + "react-native-screens": "^3.32.0", + "react-native-safe-area-context": "^4.10.8", + "react-native-vector-icons": "^10.1.0", + "@react-navigation/bottom-tabs": "^6.6.0", + "@react-navigation/native": "^6.1.17", + "@rneui/themed": "^4.0.0-rc.8", + "@rneui/base": "^4.0.0-rc.8", + "@gorhom/bottom-sheet": "^4.6.4", + "react-native-reanimated": "^3.14.0", + "react-native-gesture-handler": "^2.18.0", + "@th3rdwave/react-navigation-bottom-sheet": "^0.3.2", + "react-native-dropdown-picker": "^5.4.6", + "react-native-toast-message": "^2.2.0" + }, + "devDependencies": { + "@babel/core": "^7.20.0", + "@babel/preset-env": "^7.20.0", + "@babel/runtime": "^7.20.0", + "@react-native/babel-preset": "0.74.85", + "@react-native/eslint-config": "0.74.85", + "@react-native/metro-config": "0.74.85", + "@react-native/typescript-config": "0.74.85", + "@types/react": "^18.2.6", + "@types/react-test-renderer": "^18.0.0", + "babel-jest": "^29.6.3", + "eslint": "^8.19.0", + "jest": "^29.6.3", + "prettier": "2.8.8", + "react-test-renderer": "18.2.0", + "typescript": "5.0.4" + }, + "engines": { + "node": ">=18" + }, + "packageManager": "yarn@3.6.4" +} diff --git a/apps/app-mobile/react-native.config.js b/apps/app-mobile/react-native.config.js new file mode 100644 index 0000000..8912c8a --- /dev/null +++ b/apps/app-mobile/react-native.config.js @@ -0,0 +1,9 @@ +module.exports = { + dependencies: { + 'react-native-vector-icons': { + platforms: { + ios: null, + }, + }, + }, +}; diff --git a/apps/app-mobile/src/App.jsx b/apps/app-mobile/src/App.jsx new file mode 100644 index 0000000..6cea7c2 --- /dev/null +++ b/apps/app-mobile/src/App.jsx @@ -0,0 +1,98 @@ +import { GestureHandlerRootView } from 'react-native-gesture-handler'; +import React from 'react'; +import Toast from 'react-native-toast-message'; +import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons'; +import Ionicons from 'react-native-vector-icons/Ionicons'; +import { NavigationContainer } from '@react-navigation/native'; +import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'; +import { createBottomSheetNavigator } from '@th3rdwave/react-navigation-bottom-sheet'; +import { SafeAreaProvider } from 'react-native-safe-area-context'; +import AboutScreen from './screens/AboutScreen'; +import AllFilesScreen from './screens/AllFilesScreen'; +import ConvertScreen from './screens/ConvertScreen'; +import SelectFilesScreen from './screens/SelectFilesScreen'; +import InfoScreen from './screens/InfoScreen'; +import LicensesScreen from './screens/Licenses'; + +const Tab = createBottomTabNavigator(); +const BottomSheet = createBottomSheetNavigator(); + +function TabNavigator() { + return ( + ({ + headerShown: false, + tabBarActiveTintColor: 'tomato', + tabBarInactiveTintColor: 'gray', + })}> + { + return ; + }, + }} + /> + { + return ; + }, + }} + /> + { + return ; + }, + }} + /> + { + return ; + }, + }} + /> + + ); +} + +export default function App() { + return ( + + + + + + + + + + + + + ); +} diff --git a/apps/app-mobile/src/assets/polygon-line-point.json b/apps/app-mobile/src/assets/polygon-line-point.json new file mode 100644 index 0000000..636a94e --- /dev/null +++ b/apps/app-mobile/src/assets/polygon-line-point.json @@ -0,0 +1,235 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "properties": { + "test": "test", + "test2": 123 + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 32.77521014213562, + 39.91034110890503 + ], + [ + 32.77553200721741, + 39.90883920013071 + ], + [ + 32.77599334716797, + 39.908983220207695 + ], + [ + 32.77604162693024, + 39.908946186502526 + ], + [ + 32.77641177177429, + 39.90909843605133 + ], + [ + 32.776862382888794, + 39.90908609150592 + ], + [ + 32.776851654052734, + 39.90917661812053 + ], + [ + 32.77723252773285, + 39.90918484780686 + ], + [ + 32.77724325656891, + 39.91080607672691 + ], + [ + 32.776588797569275, + 39.91081842096233 + ], + [ + 32.776610255241394, + 39.91091306002687 + ], + [ + 32.77642786502838, + 39.91094597793172 + ], + [ + 32.77600944042206, + 39.91098712529052 + ], + [ + 32.775832414627075, + 39.91087191262357 + ], + [ + 32.775827050209045, + 39.91056742107098 + ], + [ + 32.77521014213562, + 39.91034110890503 + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 32.77742028236389, + 39.910287616829294 + ], + [ + 32.77747392654419, + 39.910110681204216 + ], + [ + 32.77774751186371, + 39.91025058382932 + ], + [ + 32.77742028236389, + 39.910287616829294 + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -0.362548828125, + 51.699799849741936 + ], + [ + -0.32958984375, + 51.440312757160115 + ], + [ + 0.1483154296875, + 51.46427482966439 + ], + [ + 0.22521972656249997, + 51.71001238595862 + ], + [ + -0.362548828125, + 51.699799849741936 + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "z": 0 + }, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -0.0933837890625, + 51.42147659056747 + ], + [ + -0.0494384765625, + 51.42147659056747 + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "z": 0 + }, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + 32.7775114774704, + 39.90928360396543 + ], + [ + 32.77750611305237, + 39.90971154567404 + ], + [ + 32.77752220630646, + 39.91014359949465 + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "z": 0 + }, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + 32.77753293514252, + 39.910933633719246 + ], + [ + 32.77739882469177, + 39.9113821386774 + ] + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "Point", + "coordinates": [ + 32.77591824531555, + 39.90934532649222 + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "Point", + "coordinates": [ + 32.77673900127411, + 39.91032053503469 + ] + } + }, + { + "type": "Feature", + "properties": {}, + "geometry": { + "type": "Point", + "coordinates": [ + -0.087890625, + 51.508742458803326 + ] + } + } + ] +} diff --git a/apps/app-mobile/src/constants/DropdownLightTheme.js b/apps/app-mobile/src/constants/DropdownLightTheme.js new file mode 100644 index 0000000..4667353 --- /dev/null +++ b/apps/app-mobile/src/constants/DropdownLightTheme.js @@ -0,0 +1,171 @@ +import { StyleSheet } from 'react-native'; +export { ICONS } from 'react-native-dropdown-picker/src/themes/light'; + +const Colors = { + WHITE: '#fff', + BLACK: '#44506d', + ALTO: '#dfdfdf', + GREY: '#808080', + EBONY_CLAY: '#292d3e', + HEATHER: '#bfc7d5', + LYNCH: '#697098', + SHARK: '#242526', + SHUTTLE_GREY: '#565E67', +}; + +export default StyleSheet.create({ + container: { + width: '100%', + }, + style: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + width: '100%', + minHeight: 44, + borderRadius: 8, + borderWidth: 1, + borderColor: '#dedede', + paddingHorizontal: 10, + paddingVertical: 3, + backgroundColor: Colors.WHITE, + }, + label: { + flex: 1, + color: Colors.BLACK, + }, + labelContainer: { + flex: 1, + flexDirection: 'row', + }, + arrowIcon: { + width: 20, + height: 20, + }, + tickIcon: { + width: 20, + height: 20, + }, + closeIcon: { + width: 30, + height: 30, + }, + badgeStyle: { + flexDirection: 'row', + alignItems: 'center', + borderRadius: 10, + backgroundColor: Colors.ALTO, + paddingHorizontal: 10, + paddingVertical: 5, + }, + badgeDotStyle: { + width: 10, + height: 10, + borderRadius: 10 / 2, + marginRight: 8, + backgroundColor: Colors.GREY, + }, + badgeSeparator: { + width: 5, + }, + listBody: { + height: '100%', + }, + listBodyContainer: { + flexGrow: 1, + alignItems: 'center', + }, + dropDownContainer: { + position: 'absolute', + backgroundColor: Colors.WHITE, + borderRadius: 8, + borderColor: Colors.BLACK, + borderWidth: 1, + width: '100%', + overflow: 'hidden', + zIndex: 1000, + }, + modalContentContainer: { + flexGrow: 1, + }, + listItemContainer: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + paddingHorizontal: 10, + height: 40, + }, + listItemLabel: { + flex: 1, + color: Colors.BLACK, + }, + iconContainer: { + marginRight: 10, + }, + arrowIconContainer: { + marginLeft: 10, + }, + tickIconContainer: { + marginLeft: 10, + }, + closeIconContainer: { + marginLeft: 10, + }, + listParentLabel: {}, + listChildLabel: {}, + listParentContainer: {}, + listChildContainer: { + paddingLeft: 40, + }, + searchContainer: { + flexDirection: 'row', + alignItems: 'center', + padding: 10, + borderBottomColor: Colors.BLACK, + borderBottomWidth: 1, + }, + searchTextInput: { + flexGrow: 1, + flexShrink: 1, + margin: 0, + paddingHorizontal: 10, + paddingVertical: 5, + borderRadius: 8, + borderColor: Colors.BLACK, + borderWidth: 1, + color: Colors.BLACK, + }, + itemSeparator: { + height: 1, + backgroundColor: Colors.BLACK, + }, + flatListContentContainer: { + flexGrow: 1, + }, + customItemContainer: {}, + customItemLabel: { + fontStyle: 'italic', + }, + listMessageContainer: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + padding: 10, + }, + listMessageText: {}, + selectedItemContainer: {}, + selectedItemLabel: {}, + modalTitle: { + fontSize: 18, + color: Colors.BLACK, + }, + extendableBadgeContainer: { + flexDirection: 'row', + flexWrap: 'wrap', + flex: 1, + }, + extendableBadgeItemContainer: { + marginVertical: 3, + marginEnd: 7, + }, +}); diff --git a/apps/app-mobile/src/constants/crs.json b/apps/app-mobile/src/constants/crs.json new file mode 100644 index 0000000..9016ccd --- /dev/null +++ b/apps/app-mobile/src/constants/crs.json @@ -0,0 +1,6611 @@ +[ + {"name": "HD1909", "code": 3819}, + {"name": "TWD67", "code": 3821}, + {"name": "TWD97", "code": 3822}, + {"name": "TWD97", "code": 3823}, + {"name": "TWD97", "code": 3824}, + {"name": "IGRS", "code": 3887}, + {"name": "IGRS", "code": 3888}, + {"name": "IGRS", "code": 3889}, + {"name": "MGI 1901", "code": 3906}, + {"name": "MOLDREF99", "code": 4000}, + {"name": "Unknown datum based upon the Airy 1830 ellipsoid", "code": 4001}, + {"name": "Unknown datum based upon the Airy Modified 1849 ellipsoid", "code": 4002}, + {"name": "Unknown datum based upon the Australian National Spheroid", "code": 4003}, + {"name": "Unknown datum based upon the Bessel 1841 ellipsoid", "code": 4004}, + {"name": "Unknown datum based upon the Bessel Modified ellipsoid", "code": 4005}, + {"name": "Unknown datum based upon the Bessel Namibia ellipsoid", "code": 4006}, + {"name": "Unknown datum based upon the Clarke 1858 ellipsoid", "code": 4007}, + {"name": "Unknown datum based upon the Clarke 1866 ellipsoid", "code": 4008}, + {"name": "Unknown datum based upon the Clarke 1866 Michigan ellipsoid", "code": 4009}, + {"name": "Unknown datum based upon the Clarke 1880 (Benoit) ellipsoid", "code": 4010}, + {"name": "Unknown datum based upon the Clarke 1880 (IGN) ellipsoid", "code": 4011}, + {"name": "Unknown datum based upon the Clarke 1880 (RGS) ellipsoid", "code": 4012}, + {"name": "Unknown datum based upon the Clarke 1880 (Arc) ellipsoid", "code": 4013}, + {"name": "Unknown datum based upon the Clarke 1880 (SGA 1922) ellipsoid", "code": 4014}, + {"name": "Unknown datum based upon the Everest 1830 (1937 Adjustment) ellipsoid", "code": 4015}, + {"name": "Unknown datum based upon the Everest 1830 (1967 Definition) ellipsoid", "code": 4016}, + {"name": "MOLDREF99", "code": 4017}, + {"name": "Unknown datum based upon the Everest 1830 Modified ellipsoid", "code": 4018}, + {"name": "Unknown datum based upon the GRS 1980 ellipsoid", "code": 4019}, + {"name": "Unknown datum based upon the Helmert 1906 ellipsoid", "code": 4020}, + {"name": "Unknown datum based upon the Indonesian National Spheroid", "code": 4021}, + {"name": "Unknown datum based upon the International 1924 ellipsoid", "code": 4022}, + {"name": "MOLDREF99", "code": 4023}, + {"name": "Unknown datum based upon the Krassowsky 1940 ellipsoid", "code": 4024}, + {"name": "Unknown datum based upon the NWL 9D ellipsoid", "code": 4025}, + {"name": "Unknown datum based upon the Plessis 1817 ellipsoid", "code": 4027}, + {"name": "Unknown datum based upon the Struve 1860 ellipsoid", "code": 4028}, + {"name": "Unknown datum based upon the War Office ellipsoid", "code": 4029}, + {"name": "Unknown datum based upon the WGS 84 ellipsoid", "code": 4030}, + {"name": "Unknown datum based upon the GEM 10C ellipsoid", "code": 4031}, + {"name": "Unknown datum based upon the OSU86F ellipsoid", "code": 4032}, + {"name": "Unknown datum based upon the OSU91A ellipsoid", "code": 4033}, + {"name": "Unknown datum based upon the Clarke 1880 ellipsoid", "code": 4034}, + {"name": "Unknown datum based upon the Authalic Sphere", "code": 4035}, + {"name": "Unknown datum based upon the GRS 1967 ellipsoid", "code": 4036}, + {"name": "RGRDC 2005", "code": 4039}, + {"name": "RGRDC 2005", "code": 4040}, + {"name": "Unknown datum based upon the Average Terrestrial System 1977 ellipsoid", "code": 4041}, + {"name": "Unknown datum based upon the Everest (1830 Definition) ellipsoid", "code": 4042}, + {"name": "Unknown datum based upon the WGS 72 ellipsoid", "code": 4043}, + {"name": "Unknown datum based upon the Everest 1830 (1962 Definition) ellipsoid", "code": 4044}, + {"name": "Unknown datum based upon the Everest 1830 (1975 Definition) ellipsoid", "code": 4045}, + {"name": "RGRDC 2005", "code": 4046}, + {"name": "Unspecified datum based upon the GRS 1980 Authalic Sphere", "code": 4047}, + {"name": "Unspecified datum based upon the Clarke 1866 Authalic Sphere", "code": 4052}, + {"name": "Unspecified datum based upon the International 1924 Authalic Sphere", "code": 4053}, + {"name": "Unspecified datum based upon the Hughes 1980 ellipsoid", "code": 4054}, + {"name": "Popular Visualisation CRS", "code": 4055}, + {"name": "SREF98", "code": 4073}, + {"name": "SREF98", "code": 4074}, + {"name": "SREF98", "code": 4075}, + {"name": "REGCAN95", "code": 4079}, + {"name": "REGCAN95", "code": 4080}, + {"name": "REGCAN95", "code": 4081}, + {"name": "Greek", "code": 4120}, + {"name": "GGRS87", "code": 4121}, + {"name": "ATS77", "code": 4122}, + {"name": "KKJ", "code": 4123}, + {"name": "RT90", "code": 4124}, + {"name": "Samboja", "code": 4125}, + {"name": "LKS94 (ETRS89)", "code": 4126}, + {"name": "Tete", "code": 4127}, + {"name": "Madzansua", "code": 4128}, + {"name": "Observatario", "code": 4129}, + {"name": "Moznet", "code": 4130}, + {"name": "Indian 1960", "code": 4131}, + {"name": "FD58", "code": 4132}, + {"name": "EST92", "code": 4133}, + {"name": "PSD93", "code": 4134}, + {"name": "Old Hawaiian", "code": 4135}, + {"name": "St. Lawrence Island", "code": 4136}, + {"name": "St. Paul Island", "code": 4137}, + {"name": "St. George Island", "code": 4138}, + {"name": "Puerto Rico", "code": 4139}, + {"name": "NAD83(CSRS98)", "code": 4140}, + {"name": "Israel 1993", "code": 4141}, + {"name": "Locodjo 1965", "code": 4142}, + {"name": "Abidjan 1987", "code": 4143}, + {"name": "Kalianpur 1937", "code": 4144}, + {"name": "Kalianpur 1962", "code": 4145}, + {"name": "Kalianpur 1975", "code": 4146}, + {"name": "Hanoi 1972", "code": 4147}, + {"name": "Hartebeesthoek94", "code": 4148}, + {"name": "CH1903", "code": 4149}, + {"name": "CH1903+", "code": 4150}, + {"name": "CHTRF95", "code": 4151}, + {"name": "NAD83(HARN)", "code": 4152}, + {"name": "Rassadiran", "code": 4153}, + {"name": "ED50(ED77)", "code": 4154}, + {"name": "Dabola 1981", "code": 4155}, + {"name": "S-JTSK", "code": 4156}, + {"name": "Mount Dillon", "code": 4157}, + {"name": "Naparima 1955", "code": 4158}, + {"name": "ELD79", "code": 4159}, + {"name": "Chos Malal 1914", "code": 4160}, + {"name": "Pampa del Castillo", "code": 4161}, + {"name": "Korean 1985", "code": 4162}, + {"name": "Yemen NGN96", "code": 4163}, + {"name": "South Yemen", "code": 4164}, + {"name": "Bissau", "code": 4165}, + {"name": "Korean 1995", "code": 4166}, + {"name": "NZGD2000", "code": 4167}, + {"name": "Accra", "code": 4168}, + {"name": "American Samoa 1962", "code": 4169}, + {"name": "SIRGAS 1995", "code": 4170}, + {"name": "RGF93", "code": 4171}, + {"name": "POSGAR", "code": 4172}, + {"name": "IRENET95", "code": 4173}, + {"name": "Sierra Leone 1924", "code": 4174}, + {"name": "Sierra Leone 1968", "code": 4175}, + {"name": "Australian Antarctic", "code": 4176}, + {"name": "Pulkovo 1942(83)", "code": 4178}, + {"name": "Pulkovo 1942(58)", "code": 4179}, + {"name": "EST97", "code": 4180}, + {"name": "Luxembourg 1930", "code": 4181}, + {"name": "Azores Occidental 1939", "code": 4182}, + {"name": "Azores Central 1948", "code": 4183}, + {"name": "Azores Oriental 1940", "code": 4184}, + {"name": "Madeira 1936", "code": 4185}, + {"name": "OSNI 1952", "code": 4188}, + {"name": "REGVEN", "code": 4189}, + {"name": "POSGAR 98", "code": 4190}, + {"name": "Albanian 1987", "code": 4191}, + {"name": "Douala 1948", "code": 4192}, + {"name": "Manoca 1962", "code": 4193}, + {"name": "Qornoq 1927", "code": 4194}, + {"name": "Scoresbysund 1952", "code": 4195}, + {"name": "Ammassalik 1958", "code": 4196}, + {"name": "Garoua", "code": 4197}, + {"name": "Kousseri", "code": 4198}, + {"name": "Egypt 1930", "code": 4199}, + {"name": "Pulkovo 1995", "code": 4200}, + {"name": "Adindan", "code": 4201}, + {"name": "AGD66", "code": 4202}, + {"name": "AGD84", "code": 4203}, + {"name": "Ain el Abd", "code": 4204}, + {"name": "Afgooye", "code": 4205}, + {"name": "Agadez", "code": 4206}, + {"name": "Lisbon", "code": 4207}, + {"name": "Aratu", "code": 4208}, + {"name": "Arc 1950", "code": 4209}, + {"name": "Arc 1960", "code": 4210}, + {"name": "Batavia", "code": 4211}, + {"name": "Barbados 1938", "code": 4212}, + {"name": "Beduaram", "code": 4213}, + {"name": "Beijing 1954", "code": 4214}, + {"name": "Belge 1950", "code": 4215}, + {"name": "Bermuda 1957", "code": 4216}, + {"name": "Bogota 1975", "code": 4218}, + {"name": "Bukit Rimpah", "code": 4219}, + {"name": "Camacupa 1948", "code": 4220}, + {"name": "Campo Inchauspe", "code": 4221}, + {"name": "Cape", "code": 4222}, + {"name": "Carthage", "code": 4223}, + {"name": "Chua", "code": 4224}, + {"name": "Corrego Alegre 1970-72", "code": 4225}, + {"name": "Cote d'Ivoire", "code": 4226}, + {"name": "Deir ez Zor", "code": 4227}, + {"name": "Douala", "code": 4228}, + {"name": "Egypt 1907", "code": 4229}, + {"name": "ED50", "code": 4230}, + {"name": "ED87", "code": 4231}, + {"name": "Fahud", "code": 4232}, + {"name": "Gandajika 1970", "code": 4233}, + {"name": "Garoua", "code": 4234}, + {"name": "Guyane Francaise", "code": 4235}, + {"name": "Hu Tzu Shan 1950", "code": 4236}, + {"name": "HD72", "code": 4237}, + {"name": "ID74", "code": 4238}, + {"name": "Indian 1954", "code": 4239}, + {"name": "Indian 1975", "code": 4240}, + {"name": "Jamaica 1875", "code": 4241}, + {"name": "JAD69", "code": 4242}, + {"name": "Kalianpur 1880", "code": 4243}, + {"name": "Kandawala", "code": 4244}, + {"name": "Kertau 1968", "code": 4245}, + {"name": "KOC", "code": 4246}, + {"name": "La Canoa", "code": 4247}, + {"name": "PSAD56", "code": 4248}, + {"name": "Lake", "code": 4249}, + {"name": "Leigon", "code": 4250}, + {"name": "Liberia 1964", "code": 4251}, + {"name": "Lome", "code": 4252}, + {"name": "Luzon 1911", "code": 4253}, + {"name": "Hito XVIII 1963", "code": 4254}, + {"name": "Herat North", "code": 4255}, + {"name": "Mahe 1971", "code": 4256}, + {"name": "Makassar", "code": 4257}, + {"name": "ETRS89", "code": 4258}, + {"name": "Malongo 1987", "code": 4259}, + {"name": "Manoca", "code": 4260}, + {"name": "Merchich", "code": 4261}, + {"name": "Massawa", "code": 4262}, + {"name": "Minna", "code": 4263}, + {"name": "Mhast", "code": 4264}, + {"name": "Monte Mario", "code": 4265}, + {"name": "M'poraloko", "code": 4266}, + {"name": "NAD27", "code": 4267}, + {"name": "NAD27 Michigan", "code": 4268}, + {"name": "NAD83", "code": 4269}, + {"name": "Nahrwan 1967", "code": 4270}, + {"name": "Naparima 1972", "code": 4271}, + {"name": "NZGD49", "code": 4272}, + {"name": "NGO 1948", "code": 4273}, + {"name": "Datum 73", "code": 4274}, + {"name": "NTF", "code": 4275}, + {"name": "NSWC 9Z-2", "code": 4276}, + {"name": "OSGB 1936", "code": 4277}, + {"name": "OSGB70", "code": 4278}, + {"name": "OS(SN)80", "code": 4279}, + {"name": "Padang", "code": 4280}, + {"name": "Palestine 1923", "code": 4281}, + {"name": "Pointe Noire", "code": 4282}, + {"name": "GDA94", "code": 4283}, + {"name": "Pulkovo 1942", "code": 4284}, + {"name": "Qatar 1974", "code": 4285}, + {"name": "Qatar 1948", "code": 4286}, + {"name": "Qornoq", "code": 4287}, + {"name": "Loma Quintana", "code": 4288}, + {"name": "Amersfoort", "code": 4289}, + {"name": "SAD69", "code": 4291}, + {"name": "Sapper Hill 1943", "code": 4292}, + {"name": "Schwarzeck", "code": 4293}, + {"name": "Segora", "code": 4294}, + {"name": "Serindung", "code": 4295}, + {"name": "Sudan", "code": 4296}, + {"name": "Tananarive", "code": 4297}, + {"name": "Timbalai 1948", "code": 4298}, + {"name": "TM65", "code": 4299}, + {"name": "TM75", "code": 4300}, + {"name": "Tokyo", "code": 4301}, + {"name": "Trinidad 1903", "code": 4302}, + {"name": "TC(1948)", "code": 4303}, + {"name": "Voirol 1875", "code": 4304}, + {"name": "Bern 1938", "code": 4306}, + {"name": "Nord Sahara 1959", "code": 4307}, + {"name": "RT38", "code": 4308}, + {"name": "Yacare", "code": 4309}, + {"name": "Yoff", "code": 4310}, + {"name": "Zanderij", "code": 4311}, + {"name": "MGI", "code": 4312}, + {"name": "Belge 1972", "code": 4313}, + {"name": "DHDN", "code": 4314}, + {"name": "Conakry 1905", "code": 4315}, + {"name": "Dealul Piscului 1930", "code": 4316}, + {"name": "Dealul Piscului 1970", "code": 4317}, + {"name": "NGN", "code": 4318}, + {"name": "KUDAMS", "code": 4319}, + {"name": "WGS 72", "code": 4322}, + {"name": "WGS 72BE", "code": 4324}, + {"name": "WGS 84", "code": 4326}, + {"name": "WGS 84 (geographic 3D)", "code": 4327}, + {"name": "WGS 84 (geocentric)", "code": 4328}, + {"name": "WGS 84 (3D)", "code": 4329}, + {"name": "ITRF88 (geocentric)", "code": 4330}, + {"name": "ITRF89 (geocentric)", "code": 4331}, + {"name": "ITRF90 (geocentric)", "code": 4332}, + {"name": "ITRF91 (geocentric)", "code": 4333}, + {"name": "ITRF92 (geocentric)", "code": 4334}, + {"name": "ITRF93 (geocentric)", "code": 4335}, + {"name": "ITRF94 (geocentric)", "code": 4336}, + {"name": "ITRF96 (geocentric)", "code": 4337}, + {"name": "ITRF97 (geocentric)", "code": 4338}, + {"name": "Australian Antarctic (3D)", "code": 4339}, + {"name": "Australian Antarctic (geocentric)", "code": 4340}, + {"name": "EST97 (3D)", "code": 4341}, + {"name": "EST97 (geocentric)", "code": 4342}, + {"name": "CHTRF95 (3D)", "code": 4343}, + {"name": "CHTRF95 (geocentric)", "code": 4344}, + {"name": "ETRS89 (3D)", "code": 4345}, + {"name": "ETRS89 (geocentric)", "code": 4346}, + {"name": "GDA94 (3D)", "code": 4347}, + {"name": "GDA94 (geocentric)", "code": 4348}, + {"name": "Hartebeesthoek94 (3D)", "code": 4349}, + {"name": "Hartebeesthoek94 (geocentric)", "code": 4350}, + {"name": "IRENET95 (3D)", "code": 4351}, + {"name": "IRENET95 (geocentric)", "code": 4352}, + {"name": "JGD2000 (3D)", "code": 4353}, + {"name": "JGD2000 (geocentric)", "code": 4354}, + {"name": "LKS94 (ETRS89) (3D)", "code": 4355}, + {"name": "LKS94 (ETRS89) (geocentric)", "code": 4356}, + {"name": "Moznet (3D)", "code": 4357}, + {"name": "Moznet (geocentric)", "code": 4358}, + {"name": "NAD83(CSRS) (3D)", "code": 4359}, + {"name": "NAD83(CSRS) (geocentric)", "code": 4360}, + {"name": "NAD83(HARN) (3D)", "code": 4361}, + {"name": "NAD83(HARN) (geocentric)", "code": 4362}, + {"name": "NZGD2000 (3D)", "code": 4363}, + {"name": "NZGD2000 (geocentric)", "code": 4364}, + {"name": "POSGAR 98 (3D)", "code": 4365}, + {"name": "POSGAR 98 (geocentric)", "code": 4366}, + {"name": "REGVEN (3D)", "code": 4367}, + {"name": "REGVEN (geocentric)", "code": 4368}, + {"name": "RGF93 (3D)", "code": 4369}, + {"name": "RGF93 (geocentric)", "code": 4370}, + {"name": "RGFG95 (3D)", "code": 4371}, + {"name": "RGFG95 (geocentric)", "code": 4372}, + {"name": "RGR92 (3D)", "code": 4373}, + {"name": "RGR92 (geocentric)", "code": 4374}, + {"name": "SIRGAS (3D)", "code": 4375}, + {"name": "SIRGAS (geocentric)", "code": 4376}, + {"name": "SWEREF99 (3D)", "code": 4377}, + {"name": "SWEREF99 (geocentric)", "code": 4378}, + {"name": "Yemen NGN96 (3D)", "code": 4379}, + {"name": "Yemen NGN96 (geocentric)", "code": 4380}, + {"name": "RGNC 1991 (3D)", "code": 4381}, + {"name": "RGNC 1991 (geocentric)", "code": 4382}, + {"name": "RRAF 1991 (3D)", "code": 4383}, + {"name": "RRAF 1991 (geocentric)", "code": 4384}, + {"name": "ITRF2000 (geocentric)", "code": 4385}, + {"name": "ISN93 (3D)", "code": 4386}, + {"name": "ISN93 (geocentric)", "code": 4387}, + {"name": "LKS92 (3D)", "code": 4388}, + {"name": "LKS92 (geocentric)", "code": 4389}, + {"name": "RGSPM06", "code": 4463}, + {"name": "RGSPM06", "code": 4465}, + {"name": "RGSPM06", "code": 4466}, + {"name": "RGM04", "code": 4468}, + {"name": "RGM04", "code": 4469}, + {"name": "RGM04", "code": 4470}, + {"name": "Cadastre 1997", "code": 4472}, + {"name": "Cadastre 1997", "code": 4473}, + {"name": "Cadastre 1997", "code": 4475}, + {"name": "China Geodetic Coordinate System 2000", "code": 4479}, + {"name": "China Geodetic Coordinate System 2000", "code": 4480}, + {"name": "Mexico ITRF92", "code": 4481}, + {"name": "Mexico ITRF92", "code": 4482}, + {"name": "Mexico ITRF92", "code": 4483}, + {"name": "China Geodetic Coordinate System 2000", "code": 4490}, + {"name": "New Beijing", "code": 4555}, + {"name": "RRAF 1991", "code": 4556}, + {"name": "RRAF 1991", "code": 4557}, + {"name": "RRAF 1991", "code": 4558}, + {"name": "Anguilla 1957", "code": 4600}, + {"name": "Antigua 1943", "code": 4601}, + {"name": "Dominica 1945", "code": 4602}, + {"name": "Grenada 1953", "code": 4603}, + {"name": "Montserrat 1958", "code": 4604}, + {"name": "St. Kitts 1955", "code": 4605}, + {"name": "St. Lucia 1955", "code": 4606}, + {"name": "St. Vincent 1945", "code": 4607}, + {"name": "NAD27(76)", "code": 4608}, + {"name": "NAD27(CGQ77)", "code": 4609}, + {"name": "Xian 1980", "code": 4610}, + {"name": "Hong Kong 1980", "code": 4611}, + {"name": "JGD2000", "code": 4612}, + {"name": "Segara", "code": 4613}, + {"name": "QND95", "code": 4614}, + {"name": "Porto Santo", "code": 4615}, + {"name": "Selvagem Grande", "code": 4616}, + {"name": "NAD83(CSRS)", "code": 4617}, + {"name": "SAD69", "code": 4618}, + {"name": "SWEREF99", "code": 4619}, + {"name": "Point 58", "code": 4620}, + {"name": "Fort Marigot", "code": 4621}, + {"name": "Guadeloupe 1948", "code": 4622}, + {"name": "CSG67", "code": 4623}, + {"name": "RGFG95", "code": 4624}, + {"name": "Martinique 1938", "code": 4625}, + {"name": "Reunion 1947", "code": 4626}, + {"name": "RGR92", "code": 4627}, + {"name": "Tahiti 52", "code": 4628}, + {"name": "Tahaa 54", "code": 4629}, + {"name": "IGN72 Nuku Hiva", "code": 4630}, + {"name": "K0 1949", "code": 4631}, + {"name": "Combani 1950", "code": 4632}, + {"name": "IGN56 Lifou", "code": 4633}, + {"name": "IGN72 Grand Terre", "code": 4634}, + {"name": "ST87 Ouvea", "code": 4635}, + {"name": "Petrels 1972", "code": 4636}, + {"name": "Perroud 1950", "code": 4637}, + {"name": "Saint Pierre et Miquelon 1950", "code": 4638}, + {"name": "MOP78", "code": 4639}, + {"name": "RRAF 1991", "code": 4640}, + {"name": "IGN53 Mare", "code": 4641}, + {"name": "ST84 Ile des Pins", "code": 4642}, + {"name": "ST71 Belep", "code": 4643}, + {"name": "NEA74 Noumea", "code": 4644}, + {"name": "RGNC 1991", "code": 4645}, + {"name": "Grand Comoros", "code": 4646}, + {"name": "Reykjavik 1900", "code": 4657}, + {"name": "Hjorsey 1955", "code": 4658}, + {"name": "ISN93", "code": 4659}, + {"name": "Helle 1954", "code": 4660}, + {"name": "LKS92", "code": 4661}, + {"name": "IGN72 Grande Terre", "code": 4662}, + {"name": "Porto Santo 1995", "code": 4663}, + {"name": "Azores Oriental 1995", "code": 4664}, + {"name": "Azores Central 1995", "code": 4665}, + {"name": "Lisbon 1890", "code": 4666}, + {"name": "IKBD-92", "code": 4667}, + {"name": "ED79", "code": 4668}, + {"name": "LKS94", "code": 4669}, + {"name": "IGM95", "code": 4670}, + {"name": "Voirol 1879", "code": 4671}, + {"name": "Chatham Islands 1971", "code": 4672}, + {"name": "Chatham Islands 1979", "code": 4673}, + {"name": "SIRGAS 2000", "code": 4674}, + {"name": "Guam 1963", "code": 4675}, + {"name": "Vientiane 1982", "code": 4676}, + {"name": "Lao 1993", "code": 4677}, + {"name": "Lao 1997", "code": 4678}, + {"name": "Jouik 1961", "code": 4679}, + {"name": "Nouakchott 1965", "code": 4680}, + {"name": "Mauritania 1999", "code": 4681}, + {"name": "Gulshan 303", "code": 4682}, + {"name": "PRS92", "code": 4683}, + {"name": "Gan 1970", "code": 4684}, + {"name": "Gandajika", "code": 4685}, + {"name": "MAGNA-SIRGAS", "code": 4686}, + {"name": "RGPF", "code": 4687}, + {"name": "Fatu Iva 72", "code": 4688}, + {"name": "IGN63 Hiva Oa", "code": 4689}, + {"name": "Tahiti 79", "code": 4690}, + {"name": "Moorea 87", "code": 4691}, + {"name": "Maupiti 83", "code": 4692}, + {"name": "Nakhl-e Ghanem", "code": 4693}, + {"name": "POSGAR 94", "code": 4694}, + {"name": "Katanga 1955", "code": 4695}, + {"name": "Kasai 1953", "code": 4696}, + {"name": "IGC 1962 6th Parallel South", "code": 4697}, + {"name": "IGN 1962 Kerguelen", "code": 4698}, + {"name": "Le Pouce 1934", "code": 4699}, + {"name": "IGN Astro 1960", "code": 4700}, + {"name": "IGCB 1955", "code": 4701}, + {"name": "Mauritania 1999", "code": 4702}, + {"name": "Mhast 1951", "code": 4703}, + {"name": "Mhast (onshore)", "code": 4704}, + {"name": "Mhast (offshore)", "code": 4705}, + {"name": "Egypt Gulf of Suez S-650 TL", "code": 4706}, + {"name": "Tern Island 1961", "code": 4707}, + {"name": "Cocos Islands 1965", "code": 4708}, + {"name": "Iwo Jima 1945", "code": 4709}, + {"name": "Astro DOS 71", "code": 4710}, + {"name": "Marcus Island 1952", "code": 4711}, + {"name": "Ascension Island 1958", "code": 4712}, + {"name": "Ayabelle Lighthouse", "code": 4713}, + {"name": "Bellevue", "code": 4714}, + {"name": "Camp Area Astro", "code": 4715}, + {"name": "Phoenix Islands 1966", "code": 4716}, + {"name": "Cape Canaveral", "code": 4717}, + {"name": "Solomon 1968", "code": 4718}, + {"name": "Easter Island 1967", "code": 4719}, + {"name": "Fiji 1986", "code": 4720}, + {"name": "Fiji 1956", "code": 4721}, + {"name": "South Georgia 1968", "code": 4722}, + {"name": "GCGD59", "code": 4723}, + {"name": "Diego Garcia 1969", "code": 4724}, + {"name": "Johnston Island 1961", "code": 4725}, + {"name": "SIGD61", "code": 4726}, + {"name": "Midway 1961", "code": 4727}, + {"name": "Pico de las Nieves 1984", "code": 4728}, + {"name": "Pitcairn 1967", "code": 4729}, + {"name": "Santo 1965", "code": 4730}, + {"name": "Viti Levu 1916", "code": 4731}, + {"name": "Marshall Islands 1960", "code": 4732}, + {"name": "Wake Island 1952", "code": 4733}, + {"name": "Tristan 1968", "code": 4734}, + {"name": "Kusaie 1951", "code": 4735}, + {"name": "Deception Island", "code": 4736}, + {"name": "Korea 2000", "code": 4737}, + {"name": "Hong Kong 1963", "code": 4738}, + {"name": "Hong Kong 1963(67)", "code": 4739}, + {"name": "PZ-90", "code": 4740}, + {"name": "FD54", "code": 4741}, + {"name": "GDM2000", "code": 4742}, + {"name": "Karbala 1979", "code": 4743}, + {"name": "Nahrwan 1934", "code": 4744}, + {"name": "RD/83", "code": 4745}, + {"name": "PD/83", "code": 4746}, + {"name": "GR96", "code": 4747}, + {"name": "Vanua Levu 1915", "code": 4748}, + {"name": "RGNC91-93", "code": 4749}, + {"name": "ST87 Ouvea", "code": 4750}, + {"name": "Kertau (RSO)", "code": 4751}, + {"name": "Viti Levu 1912", "code": 4752}, + {"name": "fk89", "code": 4753}, + {"name": "LGD2006", "code": 4754}, + {"name": "DGN95", "code": 4755}, + {"name": "VN-2000", "code": 4756}, + {"name": "SVY21", "code": 4757}, + {"name": "JAD2001", "code": 4758}, + {"name": "NAD83(NSRS2007)", "code": 4759}, + {"name": "WGS 66", "code": 4760}, + {"name": "HTRS96", "code": 4761}, + {"name": "BDA2000", "code": 4762}, + {"name": "Pitcairn 2006", "code": 4763}, + {"name": "RSRGD2000", "code": 4764}, + {"name": "Slovenia 1996", "code": 4765}, + {"name": "Bern 1898 (Bern)", "code": 4801}, + {"name": "Bogota 1975 (Bogota)", "code": 4802}, + {"name": "Lisbon (Lisbon)", "code": 4803}, + {"name": "Makassar (Jakarta)", "code": 4804}, + {"name": "MGI (Ferro)", "code": 4805}, + {"name": "Monte Mario (Rome)", "code": 4806}, + {"name": "NTF (Paris)", "code": 4807}, + {"name": "Padang (Jakarta)", "code": 4808}, + {"name": "Belge 1950 (Brussels)", "code": 4809}, + {"name": "Tananarive (Paris)", "code": 4810}, + {"name": "Voirol 1875 (Paris)", "code": 4811}, + {"name": "Batavia (Jakarta)", "code": 4813}, + {"name": "RT38 (Stockholm)", "code": 4814}, + {"name": "Greek (Athens)", "code": 4815}, + {"name": "Carthage (Paris)", "code": 4816}, + {"name": "NGO 1948 (Oslo)", "code": 4817}, + {"name": "S-JTSK (Ferro)", "code": 4818}, + {"name": "Nord Sahara 1959 (Paris)", "code": 4819}, + {"name": "Segara (Jakarta)", "code": 4820}, + {"name": "Voirol 1879 (Paris)", "code": 4821}, + {"name": "Sao Tome", "code": 4823}, + {"name": "Principe", "code": 4824}, + {"name": "Slovenia 1996", "code": 4882}, + {"name": "Slovenia 1996", "code": 4883}, + {"name": "RSRGD2000", "code": 4884}, + {"name": "RSRGD2000", "code": 4885}, + {"name": "BDA2000", "code": 4886}, + {"name": "BDA2000", "code": 4887}, + {"name": "HTRS96", "code": 4888}, + {"name": "HTRS96", "code": 4889}, + {"name": "WGS 66", "code": 4890}, + {"name": "WGS 66", "code": 4891}, + {"name": "NAD83(NSRS2007)", "code": 4892}, + {"name": "NAD83(NSRS2007)", "code": 4893}, + {"name": "JAD2001", "code": 4894}, + {"name": "JAD2001", "code": 4895}, + {"name": "ITRF2005", "code": 4896}, + {"name": "DGN95", "code": 4897}, + {"name": "DGN95", "code": 4898}, + {"name": "LGD2006", "code": 4899}, + {"name": "LGD2006", "code": 4900}, + {"name": "ATF (Paris)", "code": 4901}, + {"name": "NDG (Paris)", "code": 4902}, + {"name": "Madrid 1870 (Madrid)", "code": 4903}, + {"name": "Lisbon 1890 (Lisbon)", "code": 4904}, + {"name": "RGNC91-93", "code": 4906}, + {"name": "RGNC91-93", "code": 4907}, + {"name": "GR96", "code": 4908}, + {"name": "GR96", "code": 4909}, + {"name": "ITRF88", "code": 4910}, + {"name": "ITRF89", "code": 4911}, + {"name": "ITRF90", "code": 4912}, + {"name": "ITRF91", "code": 4913}, + {"name": "ITRF92", "code": 4914}, + {"name": "ITRF93", "code": 4915}, + {"name": "ITRF94", "code": 4916}, + {"name": "ITRF96", "code": 4917}, + {"name": "ITRF97", "code": 4918}, + {"name": "ITRF2000", "code": 4919}, + {"name": "GDM2000", "code": 4920}, + {"name": "GDM2000", "code": 4921}, + {"name": "PZ-90", "code": 4922}, + {"name": "PZ-90", "code": 4923}, + {"name": "Mauritania 1999", "code": 4924}, + {"name": "Mauritania 1999", "code": 4925}, + {"name": "Korea 2000", "code": 4926}, + {"name": "Korea 2000", "code": 4927}, + {"name": "POSGAR 94", "code": 4928}, + {"name": "POSGAR 94", "code": 4929}, + {"name": "Australian Antarctic", "code": 4930}, + {"name": "Australian Antarctic", "code": 4931}, + {"name": "CHTRF95", "code": 4932}, + {"name": "CHTRF95", "code": 4933}, + {"name": "EST97", "code": 4934}, + {"name": "EST97", "code": 4935}, + {"name": "ETRS89", "code": 4936}, + {"name": "ETRS89", "code": 4937}, + {"name": "GDA94", "code": 4938}, + {"name": "GDA94", "code": 4939}, + {"name": "Hartebeesthoek94", "code": 4940}, + {"name": "Hartebeesthoek94", "code": 4941}, + {"name": "IRENET95", "code": 4942}, + {"name": "IRENET95", "code": 4943}, + {"name": "ISN93", "code": 4944}, + {"name": "ISN93", "code": 4945}, + {"name": "JGD2000", "code": 4946}, + {"name": "JGD2000", "code": 4947}, + {"name": "LKS92", "code": 4948}, + {"name": "LKS92", "code": 4949}, + {"name": "LKS94", "code": 4950}, + {"name": "LKS94", "code": 4951}, + {"name": "Moznet", "code": 4952}, + {"name": "Moznet", "code": 4953}, + {"name": "NAD83(CSRS)", "code": 4954}, + {"name": "NAD83(CSRS)", "code": 4955}, + {"name": "NAD83(HARN)", "code": 4956}, + {"name": "NAD83(HARN)", "code": 4957}, + {"name": "NZGD2000", "code": 4958}, + {"name": "NZGD2000", "code": 4959}, + {"name": "POSGAR 98", "code": 4960}, + {"name": "POSGAR 98", "code": 4961}, + {"name": "REGVEN", "code": 4962}, + {"name": "REGVEN", "code": 4963}, + {"name": "RGF93", "code": 4964}, + {"name": "RGF93", "code": 4965}, + {"name": "RGFG95", "code": 4966}, + {"name": "RGFG95", "code": 4967}, + {"name": "RGNC 1991", "code": 4968}, + {"name": "RGNC 1991", "code": 4969}, + {"name": "RGR92", "code": 4970}, + {"name": "RGR92", "code": 4971}, + {"name": "RRAF 1991", "code": 4972}, + {"name": "RRAF 1991", "code": 4973}, + {"name": "SIRGAS 1995", "code": 4974}, + {"name": "SIRGAS 1995", "code": 4975}, + {"name": "SWEREF99", "code": 4976}, + {"name": "SWEREF99", "code": 4977}, + {"name": "WGS 84", "code": 4978}, + {"name": "WGS 84", "code": 4979}, + {"name": "Yemen NGN96", "code": 4980}, + {"name": "Yemen NGN96", "code": 4981}, + {"name": "IGM95", "code": 4982}, + {"name": "IGM95", "code": 4983}, + {"name": "WGS 72", "code": 4984}, + {"name": "WGS 72", "code": 4985}, + {"name": "WGS 72BE", "code": 4986}, + {"name": "WGS 72BE", "code": 4987}, + {"name": "SIRGAS 2000", "code": 4988}, + {"name": "SIRGAS 2000", "code": 4989}, + {"name": "Lao 1993", "code": 4990}, + {"name": "Lao 1993", "code": 4991}, + {"name": "Lao 1997", "code": 4992}, + {"name": "Lao 1997", "code": 4993}, + {"name": "PRS92", "code": 4994}, + {"name": "PRS92", "code": 4995}, + {"name": "MAGNA-SIRGAS", "code": 4996}, + {"name": "MAGNA-SIRGAS", "code": 4997}, + {"name": "RGPF", "code": 4998}, + {"name": "RGPF", "code": 4999}, + {"name": "PTRA08", "code": 5011}, + {"name": "PTRA08", "code": 5012}, + {"name": "PTRA08", "code": 5013}, + {"name": "Tokyo 1892", "code": 5132}, + {"name": "S-JTSK/05", "code": 5228}, + {"name": "S-JTSK/05 (Ferro)", "code": 5229}, + {"name": "SLD99", "code": 5233}, + {"name": "GDBD2009", "code": 5244}, + {"name": "GDBD2009", "code": 5245}, + {"name": "GDBD2009", "code": 5246}, + {"name": "TUREF", "code": 5250}, + {"name": "TUREF", "code": 5251}, + {"name": "TUREF", "code": 5252}, + {"name": "DRUKREF 03", "code": 5262}, + {"name": "DRUKREF 03", "code": 5263}, + {"name": "DRUKREF 03", "code": 5264}, + {"name": "ISN2004", "code": 5322}, + {"name": "ISN2004", "code": 5323}, + {"name": "ISN2004", "code": 5324}, + {"name": "ITRF2008", "code": 5332}, + {"name": "POSGAR 2007", "code": 5340}, + {"name": "POSGAR 2007", "code": 5341}, + {"name": "POSGAR 2007", "code": 5342}, + {"name": "MARGEN", "code": 5352}, + {"name": "MARGEN", "code": 5353}, + {"name": "MARGEN", "code": 5354}, + {"name": "SIRGAS-Chile 2002", "code": 5358}, + {"name": "SIRGAS-Chile 2002", "code": 5359}, + {"name": "SIRGAS-Chile 2002", "code": 5360}, + {"name": "CR05", "code": 5363}, + {"name": "CR05", "code": 5364}, + {"name": "CR05", "code": 5365}, + {"name": "MACARIO SOLIS", "code": 5368}, + {"name": "Peru96", "code": 5369}, + {"name": "MACARIO SOLIS", "code": 5370}, + {"name": "MACARIO SOLIS", "code": 5371}, + {"name": "Peru96", "code": 5372}, + {"name": "Peru96", "code": 5373}, + {"name": "SIRGAS-ROU98", "code": 5379}, + {"name": "SIRGAS-ROU98", "code": 5380}, + {"name": "SIRGAS-ROU98", "code": 5381}, + {"name": "SIRGAS_ES2007.8", "code": 5391}, + {"name": "SIRGAS_ES2007.8", "code": 5392}, + {"name": "SIRGAS_ES2007.8", "code": 5393}, + {"name": "Ocotepeque 1935", "code": 5451}, + {"name": "Sibun Gorge 1922", "code": 5464}, + {"name": "Panama-Colon 1911", "code": 5467}, + {"name": "RGAF09", "code": 5487}, + {"name": "RGAF09", "code": 5488}, + {"name": "RGAF09", "code": 5489}, + {"name": "Corrego Alegre 1961", "code": 5524}, + {"name": "SAD69(96)", "code": 5527}, + {"name": "PNG94", "code": 5544}, + {"name": "PNG94", "code": 5545}, + {"name": "PNG94", "code": 5546}, + {"name": "UCS-2000", "code": 5558}, + {"name": "UCS-2000", "code": 5560}, + {"name": "UCS-2000", "code": 5561}, + {"name": "FEH2010", "code": 5591}, + {"name": "FEH2010", "code": 5592}, + {"name": "FEH2010", "code": 5593}, + {"name": "DB_REF", "code": 5681}, + {"name": "DB_REF", "code": 5828}, + {"name": "DB_REF", "code": 5830}, + {"name": "TGD2005", "code": 5884}, + {"name": "TGD2005", "code": 5885}, + {"name": "TGD2005", "code": 5886}, + {"name": "CIGD11", "code": 6133}, + {"name": "CIGD11", "code": 6134}, + {"name": "CIGD11", "code": 6135}, + {"name": "Nepal 1981", "code": 6207}, + {"name": "CGRS93", "code": 6309}, + {"name": "CGRS93", "code": 6310}, + {"name": "CGRS93", "code": 6311}, + {"name": "NAD83(2011)", "code": 6317}, + {"name": "NAD83(2011)", "code": 6318}, + {"name": "NAD83(2011)", "code": 6319}, + {"name": "NAD83(PA11)", "code": 6320}, + {"name": "NAD83(PA11)", "code": 6321}, + {"name": "NAD83(PA11)", "code": 6322}, + {"name": "NAD83(MA11)", "code": 6323}, + {"name": "NAD83(MA11)", "code": 6324}, + {"name": "NAD83(MA11)", "code": 6325}, + {"name": "Mexico ITRF2008", "code": 6363}, + {"name": "Mexico ITRF2008", "code": 6364}, + {"name": "Mexico ITRF2008", "code": 6365}, + {"name": "JGD2011", "code": 6666}, + {"name": "JGD2011", "code": 6667}, + {"name": "JGD2011", "code": 6668}, + {"name": "RDN2008", "code": 6704}, + {"name": "RDN2008", "code": 6705}, + {"name": "RDN2008", "code": 6706}, + {"name": "NAD83(CORS96)", "code": 6781}, + {"name": "NAD83(CORS96)", "code": 6782}, + {"name": "NAD83(CORS96)", "code": 6783}, + {"name": "Aden 1925", "code": 6881}, + {"name": "Bekaa Valley 1920", "code": 6882}, + {"name": "Bioko", "code": 6883}, + {"name": "South East Island 1943", "code": 6892}, + {"name": "Gambia", "code": 6894}, + {"name": "IGS08", "code": 6934}, + {"name": "IGD05", "code": 6978}, + {"name": "IGD05", "code": 6979}, + {"name": "IGD05", "code": 6980}, + {"name": "IG05 Intermediate CRS", "code": 6981}, + {"name": "IG05 Intermediate CRS", "code": 6982}, + {"name": "IG05 Intermediate CRS", "code": 6983}, + {"name": "IGD05/12", "code": 6985}, + {"name": "IGD05/12", "code": 6986}, + {"name": "IGD05/12", "code": 6987}, + {"name": "IG05/12 Intermediate CRS", "code": 6988}, + {"name": "IG05/12 Intermediate CRS", "code": 6989}, + {"name": "IG05/12 Intermediate CRS", "code": 6990}, + {"name": "RGSPM06 (lon-lat)", "code": 7034}, + {"name": "RGSPM06 (lon-lat)", "code": 7035}, + {"name": "RGR92 (lon-lat)", "code": 7036}, + {"name": "RGR92 (lon-lat)", "code": 7037}, + {"name": "RGM04 (lon-lat)", "code": 7038}, + {"name": "RGM04 (lon-lat)", "code": 7039}, + {"name": "RGFG95 (lon-lat)", "code": 7040}, + {"name": "RGFG95 (lon-lat)", "code": 7041}, + {"name": "RGF93 (lon-lat)", "code": 7042}, + {"name": "RGTAAF07", "code": 7071}, + {"name": "RGTAAF07", "code": 7072}, + {"name": "RGTAAF07", "code": 7073}, + {"name": "RGF93 (lon-lat)", "code": 7084}, + {"name": "RGAF09 (lon-lat)", "code": 7085}, + {"name": "RGAF09 (lon-lat)", "code": 7086}, + {"name": "RGTAAF07 (lon-lat)", "code": 7087}, + {"name": "RGTAAF07 (lon-lat)", "code": 7088}, + {"name": "RGTAAF07 (lon-lat)", "code": 7133}, + {"name": "IGD05", "code": 7134}, + {"name": "IGD05", "code": 7135}, + {"name": "IGD05", "code": 7136}, + {"name": "IGD05/12", "code": 7137}, + {"name": "IGD05/12", "code": 7138}, + {"name": "IGD05/12", "code": 7139}, + {"name": "ONGD14", "code": 7371}, + {"name": "ONGD14", "code": 7372}, + {"name": "ONGD14", "code": 7373}, + {"name": "WGS 84 (G730)", "code": 7656}, + {"name": "WGS 84 (G730)", "code": 7657}, + {"name": "WGS 84 (G873)", "code": 7658}, + {"name": "WGS 84 (G873)", "code": 7659}, + {"name": "WGS 84 (G1150)", "code": 7660}, + {"name": "WGS 84 (G1150)", "code": 7661}, + {"name": "WGS 84 (G1674)", "code": 7662}, + {"name": "WGS 84 (G1674)", "code": 7663}, + {"name": "WGS 84 (G1762)", "code": 7664}, + {"name": "WGS 84 (G1762)", "code": 7665}, + {"name": "PZ-90.02", "code": 7677}, + {"name": "PZ-90.02", "code": 7678}, + {"name": "PZ-90.11", "code": 7679}, + {"name": "PZ-90.11", "code": 7680}, + {"name": "GSK-2011", "code": 7681}, + {"name": "GSK-2011", "code": 7682}, + {"name": "GSK-2011", "code": 7683}, + {"name": "Kyrg-06", "code": 7684}, + {"name": "Kyrg-06", "code": 7685}, + {"name": "Kyrg-06", "code": 7686}, + {"name": "ITRF2014", "code": 7789}, + {"name": "BGS2005", "code": 7796}, + {"name": "BGS2005", "code": 7797}, + {"name": "BGS2005", "code": 7798}, + {"name": "WGS 84 (Transit)", "code": 7815}, + {"name": "WGS 84 (Transit)", "code": 7816}, + {"name": "GDA2020", "code": 7842}, + {"name": "GDA2020", "code": 7843}, + {"name": "GDA2020", "code": 7844}, + {"name": "St. Helena Tritan", "code": 7879}, + {"name": "St. Helena Tritan", "code": 7880}, + {"name": "St. Helena Tritan", "code": 7881}, + {"name": "SHGD2015", "code": 7884}, + {"name": "SHGD2015", "code": 7885}, + {"name": "SHGD2015", "code": 7886}, + {"name": "ITRF88", "code": 7900}, + {"name": "ITRF89", "code": 7901}, + {"name": "ITRF90", "code": 7902}, + {"name": "ITRF91", "code": 7903}, + {"name": "ITRF92", "code": 7904}, + {"name": "ITRF93", "code": 7905}, + {"name": "ITRF94", "code": 7906}, + {"name": "ITRF96", "code": 7907}, + {"name": "ITRF97", "code": 7908}, + {"name": "ITRF2000", "code": 7909}, + {"name": "ITRF2005", "code": 7910}, + {"name": "ITRF2008", "code": 7911}, + {"name": "ITRF2014", "code": 7912}, + {"name": "ETRF89", "code": 7914}, + {"name": "ETRF89", "code": 7915}, + {"name": "ETRF90", "code": 7916}, + {"name": "ETRF90", "code": 7917}, + {"name": "ETRF91", "code": 7918}, + {"name": "ETRF91", "code": 7919}, + {"name": "ETRF92", "code": 7920}, + {"name": "ETRF92", "code": 7921}, + {"name": "ETRF93", "code": 7922}, + {"name": "ETRF93", "code": 7923}, + {"name": "ETRF94", "code": 7924}, + {"name": "ETRF94", "code": 7925}, + {"name": "ETRF96", "code": 7926}, + {"name": "ETRF96", "code": 7927}, + {"name": "ETRF97", "code": 7928}, + {"name": "ETRF97", "code": 7929}, + {"name": "ETRF2000", "code": 7930}, + {"name": "ETRF2000", "code": 7931}, + {"name": "Gusterberg (Ferro)", "code": 8042}, + {"name": "St. Stephen (Ferro)", "code": 8043}, + {"name": "ISN2016", "code": 8084}, + {"name": "ISN2016", "code": 8085}, + {"name": "ISN2016", "code": 8086}, + {"name": "IGS14", "code": 8227}, + {"name": "NAD83(CSRS96)", "code": 8230}, + {"name": "NAD83(CSRS96)", "code": 8231}, + {"name": "NAD83(CSRS96)", "code": 8232}, + {"name": "NAD83(CSRS)v2", "code": 8233}, + {"name": "NAD83(CSRS)v2", "code": 8235}, + {"name": "NAD83(CSRS)v2", "code": 8237}, + {"name": "NAD83(CSRS)v3", "code": 8238}, + {"name": "NAD83(CSRS)v3", "code": 8239}, + {"name": "NAD83(CSRS)v3", "code": 8240}, + {"name": "NAD83(CSRS)v4", "code": 8242}, + {"name": "NAD83(CSRS)v4", "code": 8244}, + {"name": "NAD83(CSRS)v4", "code": 8246}, + {"name": "NAD83(CSRS)v5", "code": 8247}, + {"name": "NAD83(CSRS)v5", "code": 8248}, + {"name": "NAD83(CSRS)v5", "code": 8249}, + {"name": "NAD83(CSRS)v6", "code": 8250}, + {"name": "NAD83(CSRS)v6", "code": 8251}, + {"name": "NAD83(CSRS)v6", "code": 8252}, + {"name": "NAD83(CSRS)v7", "code": 8253}, + {"name": "NAD83(CSRS)v7", "code": 8254}, + {"name": "NAD83(CSRS)v7", "code": 8255}, + {"name": "S-JTSK [JTSK03]", "code": 8351}, + {"name": "ETRF2005", "code": 8397}, + {"name": "ETRF2005", "code": 8399}, + {"name": "ETRF2014", "code": 8401}, + {"name": "ETRF2014", "code": 8403}, + {"name": "Hong Kong Geodetic CS", "code": 8425}, + {"name": "Hong Kong Geodetic CS", "code": 8426}, + {"name": "Hong Kong Geodetic CS", "code": 8427}, + {"name": "Macao 1920", "code": 8428}, + {"name": "Macao 2008", "code": 8429}, + {"name": "Macao 2008", "code": 8430}, + {"name": "Macao 2008", "code": 8431}, + {"name": "NAD83(FBN)", "code": 8449}, + {"name": "NAD83(FBN)", "code": 8541}, + {"name": "NAD83(FBN)", "code": 8542}, + {"name": "NAD83(HARN Corrected)", "code": 8543}, + {"name": "NAD83(HARN Corrected)", "code": 8544}, + {"name": "NAD83(HARN Corrected)", "code": 8545}, + {"name": "SRB_ETRS89", "code": 8683}, + {"name": "SRB_ETRS89", "code": 8684}, + {"name": "SRB_ETRS89", "code": 8685}, + {"name": "Camacupa 2015", "code": 8694}, + {"name": "RSAO13", "code": 8697}, + {"name": "RSAO13", "code": 8698}, + {"name": "RSAO13", "code": 8699}, + {"name": "MTRF-2000", "code": 8816}, + {"name": "MTRF-2000", "code": 8817}, + {"name": "MTRF-2000", "code": 8818}, + {"name": "NAD83(FBN)", "code": 8860}, + {"name": "WGS 84 (Transit)", "code": 8888}, + {"name": "RGWF96", "code": 8898}, + {"name": "RGWF96", "code": 8899}, + {"name": "RGWF96", "code": 8900}, + {"name": "RGWF96 (lon-lat)", "code": 8901}, + {"name": "RGWF96 (lon-lat)", "code": 8902}, + {"name": "CR-SIRGAS", "code": 8905}, + {"name": "CR-SIRGAS", "code": 8906}, + {"name": "CR-SIRGAS", "code": 8907}, + {"name": "SIRGAS-CON DGF00P01", "code": 8915}, + {"name": "SIRGAS-CON DGF00P01", "code": 8916}, + {"name": "SIRGAS-CON DGF01P01", "code": 8917}, + {"name": "SIRGAS-CON DGF01P01", "code": 8918}, + {"name": "SIRGAS-CON DGF01P02", "code": 8919}, + {"name": "SIRGAS-CON DGF01P02", "code": 8920}, + {"name": "SIRGAS-CON DGF02P01", "code": 8921}, + {"name": "SIRGAS-CON DGF02P01", "code": 8922}, + {"name": "SIRGAS-CON DGF04P01", "code": 8923}, + {"name": "SIRGAS-CON DGF04P01", "code": 8924}, + {"name": "SIRGAS-CON DGF05P01", "code": 8925}, + {"name": "SIRGAS-CON DGF05P01", "code": 8926}, + {"name": "SIRGAS-CON DGF06P01", "code": 8927}, + {"name": "SIRGAS-CON DGF06P01", "code": 8928}, + {"name": "SIRGAS-CON DGF07P01", "code": 8929}, + {"name": "SIRGAS-CON DGF07P01", "code": 8930}, + {"name": "SIRGAS-CON DGF08P01", "code": 8931}, + {"name": "SIRGAS-CON DGF08P01", "code": 8932}, + {"name": "SIRGAS-CON SIR09P01", "code": 8933}, + {"name": "SIRGAS-CON SIR09P01", "code": 8934}, + {"name": "SIRGAS-CON SIR10P01", "code": 8935}, + {"name": "SIRGAS-CON SIR10P01", "code": 8936}, + {"name": "SIRGAS-CON SIR11P01", "code": 8937}, + {"name": "SIRGAS-CON SIR11P01", "code": 8938}, + {"name": "SIRGAS-CON SIR13P01", "code": 8939}, + {"name": "SIRGAS-CON SIR13P01", "code": 8940}, + {"name": "SIRGAS-CON SIR14P01", "code": 8941}, + {"name": "SIRGAS-CON SIR14P01", "code": 8942}, + {"name": "SIRGAS-CON SIR15P01", "code": 8943}, + {"name": "SIRGAS-CON SIR15P01", "code": 8944}, + {"name": "SIRGAS-CON SIR17P01", "code": 8945}, + {"name": "SIRGAS-CON SIR17P01", "code": 8946}, + {"name": "SIRGAS-Chile 2010", "code": 8947}, + {"name": "SIRGAS-Chile 2010", "code": 8948}, + {"name": "SIRGAS-Chile 2010", "code": 8949}, + {"name": "SIRGAS-CON DGF00P01", "code": 8972}, + {"name": "SIRGAS-CON DGF01P01", "code": 8973}, + {"name": "SIRGAS-CON DGF01P02", "code": 8974}, + {"name": "SIRGAS-CON DGF02P01", "code": 8975}, + {"name": "SIRGAS-CON DGF04P01", "code": 8976}, + {"name": "SIRGAS-CON DGF05P01", "code": 8977}, + {"name": "SIRGAS-CON DGF06P01", "code": 8978}, + {"name": "SIRGAS-CON DGF07P01", "code": 8979}, + {"name": "SIRGAS-CON DGF08P01", "code": 8980}, + {"name": "SIRGAS-CON SIR09P01", "code": 8981}, + {"name": "SIRGAS-CON SIR10P01", "code": 8982}, + {"name": "SIRGAS-CON SIR11P01", "code": 8983}, + {"name": "SIRGAS-CON SIR13P01", "code": 8984}, + {"name": "SIRGAS-CON SIR14P01", "code": 8985}, + {"name": "SIRGAS-CON SIR15P01", "code": 8986}, + {"name": "SIRGAS-CON SIR17P01", "code": 8987}, + {"name": "ITRF88", "code": 8988}, + {"name": "ITRF89", "code": 8989}, + {"name": "ITRF90", "code": 8990}, + {"name": "ITRF91", "code": 8991}, + {"name": "ITRF92", "code": 8992}, + {"name": "ITRF93", "code": 8993}, + {"name": "ITRF94", "code": 8994}, + {"name": "ITRF96", "code": 8995}, + {"name": "ITRF97", "code": 8996}, + {"name": "ITRF2000", "code": 8997}, + {"name": "ITRF2005", "code": 8998}, + {"name": "ITRF2008", "code": 8999}, + {"name": "ITRF2014", "code": 9000}, + {"name": "IGS97", "code": 9001}, + {"name": "IGS97", "code": 9002}, + {"name": "IGS97", "code": 9003}, + {"name": "IGS00", "code": 9004}, + {"name": "IGS00", "code": 9005}, + {"name": "IGS00", "code": 9006}, + {"name": "IGb00", "code": 9007}, + {"name": "IGb00", "code": 9008}, + {"name": "IGb00", "code": 9009}, + {"name": "IGS05", "code": 9010}, + {"name": "IGS05", "code": 9011}, + {"name": "IGS05", "code": 9012}, + {"name": "IGS08", "code": 9013}, + {"name": "IGS08", "code": 9014}, + {"name": "IGb08", "code": 9015}, + {"name": "IGb08", "code": 9016}, + {"name": "IGb08", "code": 9017}, + {"name": "IGS14", "code": 9018}, + {"name": "IGS14", "code": 9019}, + {"name": "WGS 84 (G730)", "code": 9053}, + {"name": "WGS 84 (G873)", "code": 9054}, + {"name": "WGS 84 (G1150)", "code": 9055}, + {"name": "WGS 84 (G1674)", "code": 9056}, + {"name": "WGS 84 (G1762)", "code": 9057}, + {"name": "ETRF89", "code": 9059}, + {"name": "ETRF90", "code": 9060}, + {"name": "ETRF91", "code": 9061}, + {"name": "ETRF92", "code": 9062}, + {"name": "ETRF93", "code": 9063}, + {"name": "ETRF94", "code": 9064}, + {"name": "ETRF96", "code": 9065}, + {"name": "ETRF97", "code": 9066}, + {"name": "ETRF2000", "code": 9067}, + {"name": "ETRF2005", "code": 9068}, + {"name": "ETRF2014", "code": 9069}, + {"name": "NAD83(MARP00)", "code": 9070}, + {"name": "NAD83(MARP00)", "code": 9071}, + {"name": "NAD83(MARP00)", "code": 9072}, + {"name": "NAD83(PACP00)", "code": 9073}, + {"name": "NAD83(PACP00)", "code": 9074}, + {"name": "NAD83(PACP00)", "code": 9075}, + {"name": "KOSOVAREF01", "code": 9138}, + {"name": "KOSOVAREF01", "code": 9139}, + {"name": "KOSOVAREF01", "code": 9140}, + {"name": "SIRGAS-Chile 2013", "code": 9146}, + {"name": "SIRGAS-Chile 2013", "code": 9147}, + {"name": "SIRGAS-Chile 2013", "code": 9148}, + {"name": "SIRGAS-Chile 2016", "code": 9151}, + {"name": "SIRGAS-Chile 2016", "code": 9152}, + {"name": "SIRGAS-Chile 2016", "code": 9153}, + {"name": "SIRGAS-Chile", "code": 9182}, + {"name": "SIRGAS-Chile", "code": 9183}, + {"name": "SIRGAS-Chile", "code": 9184}, + {"name": "Tapi Aike", "code": 9248}, + {"name": "MMN", "code": 9251}, + {"name": "MMS", "code": 9253}, + {"name": "MGI", "code": 9266}, + {"name": "MGI", "code": 9267}, + {"name": "KSA-GRF17", "code": 9331}, + {"name": "KSA-GRF17", "code": 9332}, + {"name": "KSA-GRF17", "code": 9333}, + {"name": "Anguilla 1957 / British West Indies Grid", "code": 2000}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 4", "code": 20004}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 5", "code": 20005}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 6", "code": 20006}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 7", "code": 20007}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 8", "code": 20008}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 9", "code": 20009}, + {"name": "Antigua 1943 / British West Indies Grid", "code": 2001}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 10", "code": 20010}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 11", "code": 20011}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 12", "code": 20012}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 13", "code": 20013}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 14", "code": 20014}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 15", "code": 20015}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 16", "code": 20016}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 17", "code": 20017}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 18", "code": 20018}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 19", "code": 20019}, + {"name": "Dominica 1945 / British West Indies Grid", "code": 2002}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 20", "code": 20020}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 21", "code": 20021}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 22", "code": 20022}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 23", "code": 20023}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 24", "code": 20024}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 25", "code": 20025}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 26", "code": 20026}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 27", "code": 20027}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 28", "code": 20028}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 29", "code": 20029}, + {"name": "Grenada 1953 / British West Indies Grid", "code": 2003}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 30", "code": 20030}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 31", "code": 20031}, + {"name": "Pulkovo 1995 / Gauss-Kruger zone 32", "code": 20032}, + {"name": "Montserrat 1958 / British West Indies Grid", "code": 2004}, + {"name": "St. Kitts 1955 / British West Indies Grid", "code": 2005}, + {"name": "St. Lucia 1955 / British West Indies Grid", "code": 2006}, + {"name": "Pulkovo 1995 / Gauss-Kruger 4N", "code": 20064}, + {"name": "Pulkovo 1995 / Gauss-Kruger 5N", "code": 20065}, + {"name": "Pulkovo 1995 / Gauss-Kruger 6N", "code": 20066}, + {"name": "Pulkovo 1995 / Gauss-Kruger 7N", "code": 20067}, + {"name": "Pulkovo 1995 / Gauss-Kruger 8N", "code": 20068}, + {"name": "Pulkovo 1995 / Gauss-Kruger 9N", "code": 20069}, + {"name": "St. Vincent 45 / British West Indies Grid", "code": 2007}, + {"name": "Pulkovo 1995 / Gauss-Kruger 10N", "code": 20070}, + {"name": "Pulkovo 1995 / Gauss-Kruger 11N", "code": 20071}, + {"name": "Pulkovo 1995 / Gauss-Kruger 12N", "code": 20072}, + {"name": "Pulkovo 1995 / Gauss-Kruger 13N", "code": 20073}, + {"name": "Pulkovo 1995 / Gauss-Kruger 14N", "code": 20074}, + {"name": "Pulkovo 1995 / Gauss-Kruger 15N", "code": 20075}, + {"name": "Pulkovo 1995 / Gauss-Kruger 16N", "code": 20076}, + {"name": "Pulkovo 1995 / Gauss-Kruger 17N", "code": 20077}, + {"name": "Pulkovo 1995 / Gauss-Kruger 18N", "code": 20078}, + {"name": "Pulkovo 1995 / Gauss-Kruger 19N", "code": 20079}, + {"name": "NAD27(CGQ77) / SCoPQ zone 2", "code": 2008}, + {"name": "Pulkovo 1995 / Gauss-Kruger 20N", "code": 20080}, + {"name": "Pulkovo 1995 / Gauss-Kruger 21N", "code": 20081}, + {"name": "Pulkovo 1995 / Gauss-Kruger 22N", "code": 20082}, + {"name": "Pulkovo 1995 / Gauss-Kruger 23N", "code": 20083}, + {"name": "Pulkovo 1995 / Gauss-Kruger 24N", "code": 20084}, + {"name": "Pulkovo 1995 / Gauss-Kruger 25N", "code": 20085}, + {"name": "Pulkovo 1995 / Gauss-Kruger 26N", "code": 20086}, + {"name": "Pulkovo 1995 / Gauss-Kruger 27N", "code": 20087}, + {"name": "Pulkovo 1995 / Gauss-Kruger 28N", "code": 20088}, + {"name": "Pulkovo 1995 / Gauss-Kruger 29N", "code": 20089}, + {"name": "NAD27(CGQ77) / SCoPQ zone 3", "code": 2009}, + {"name": "Pulkovo 1995 / Gauss-Kruger 30N", "code": 20090}, + {"name": "Pulkovo 1995 / Gauss-Kruger 31N", "code": 20091}, + {"name": "Pulkovo 1995 / Gauss-Kruger 32N", "code": 20092}, + {"name": "NAD27(CGQ77) / SCoPQ zone 4", "code": 2010}, + {"name": "NAD27(CGQ77) / SCoPQ zone 5", "code": 2011}, + {"name": "NAD27(CGQ77) / SCoPQ zone 6", "code": 2012}, + {"name": "NAD27(CGQ77) / SCoPQ zone 7", "code": 2013}, + {"name": "Adindan / UTM zone 35N", "code": 20135}, + {"name": "Adindan / UTM zone 36N", "code": 20136}, + {"name": "Adindan / UTM zone 37N", "code": 20137}, + {"name": "Adindan / UTM zone 38N", "code": 20138}, + {"name": "NAD27(CGQ77) / SCoPQ zone 8", "code": 2014}, + {"name": "NAD27(CGQ77) / SCoPQ zone 9", "code": 2015}, + {"name": "NAD27(CGQ77) / SCoPQ zone 10", "code": 2016}, + {"name": "NAD27(76) / MTM zone 8", "code": 2017}, + {"name": "NAD27(76) / MTM zone 9", "code": 2018}, + {"name": "NAD27(76) / MTM zone 10", "code": 2019}, + {"name": "NAD27(76) / MTM zone 11", "code": 2020}, + {"name": "NAD27(76) / MTM zone 12", "code": 2021}, + {"name": "NAD27(76) / MTM zone 13", "code": 2022}, + {"name": "NAD27(76) / MTM zone 14", "code": 2023}, + {"name": "NAD27(76) / MTM zone 15", "code": 2024}, + {"name": "AGD66 / AMG zone 48", "code": 20248}, + {"name": "AGD66 / AMG zone 49", "code": 20249}, + {"name": "NAD27(76) / MTM zone 16", "code": 2025}, + {"name": "AGD66 / AMG zone 50", "code": 20250}, + {"name": "AGD66 / AMG zone 51", "code": 20251}, + {"name": "AGD66 / AMG zone 52", "code": 20252}, + {"name": "AGD66 / AMG zone 53", "code": 20253}, + {"name": "AGD66 / AMG zone 54", "code": 20254}, + {"name": "AGD66 / AMG zone 55", "code": 20255}, + {"name": "AGD66 / AMG zone 56", "code": 20256}, + {"name": "AGD66 / AMG zone 57", "code": 20257}, + {"name": "AGD66 / AMG zone 58", "code": 20258}, + {"name": "NAD27(76) / MTM zone 17", "code": 2026}, + {"name": "NAD27(76) / UTM zone 15N", "code": 2027}, + {"name": "NAD27(76) / UTM zone 16N", "code": 2028}, + {"name": "NAD27(76) / UTM zone 17N", "code": 2029}, + {"name": "NAD27(76) / UTM zone 18N", "code": 2030}, + {"name": "NAD27(CGQ77) / UTM zone 17N", "code": 2031}, + {"name": "NAD27(CGQ77) / UTM zone 18N", "code": 2032}, + {"name": "NAD27(CGQ77) / UTM zone 19N", "code": 2033}, + {"name": "NAD27(CGQ77) / UTM zone 20N", "code": 2034}, + {"name": "AGD84 / AMG zone 48", "code": 20348}, + {"name": "AGD84 / AMG zone 49", "code": 20349}, + {"name": "NAD27(CGQ77) / UTM zone 21N", "code": 2035}, + {"name": "AGD84 / AMG zone 50", "code": 20350}, + {"name": "AGD84 / AMG zone 51", "code": 20351}, + {"name": "AGD84 / AMG zone 52", "code": 20352}, + {"name": "AGD84 / AMG zone 53", "code": 20353}, + {"name": "AGD84 / AMG zone 54", "code": 20354}, + {"name": "AGD84 / AMG zone 55", "code": 20355}, + {"name": "AGD84 / AMG zone 56", "code": 20356}, + {"name": "AGD84 / AMG zone 57", "code": 20357}, + {"name": "AGD84 / AMG zone 58", "code": 20358}, + {"name": "NAD83(CSRS98) / New Brunswick Stereo", "code": 2036}, + {"name": "NAD83(CSRS98) / UTM zone 19N", "code": 2037}, + {"name": "NAD83(CSRS98) / UTM zone 20N", "code": 2038}, + {"name": "Israel 1993 / Israeli TM Grid", "code": 2039}, + {"name": "Locodjo 1965 / UTM zone 30N", "code": 2040}, + {"name": "Abidjan 1987 / UTM zone 30N", "code": 2041}, + {"name": "Locodjo 1965 / UTM zone 29N", "code": 2042}, + {"name": "Abidjan 1987 / UTM zone 29N", "code": 2043}, + {"name": "Ain el Abd / UTM zone 36N", "code": 20436}, + {"name": "Ain el Abd / UTM zone 37N", "code": 20437}, + {"name": "Ain el Abd / UTM zone 38N", "code": 20438}, + {"name": "Ain el Abd / UTM zone 39N", "code": 20439}, + {"name": "Hanoi 1972 / Gauss-Kruger zone 18", "code": 2044}, + {"name": "Ain el Abd / UTM zone 40N", "code": 20440}, + {"name": "Hanoi 1972 / Gauss-Kruger zone 19", "code": 2045}, + {"name": "Hartebeesthoek94 / Lo15", "code": 2046}, + {"name": "Hartebeesthoek94 / Lo17", "code": 2047}, + {"name": "Hartebeesthoek94 / Lo19", "code": 2048}, + {"name": "Hartebeesthoek94 / Lo21", "code": 2049}, + {"name": "Ain el Abd / Bahrain Grid", "code": 20499}, + {"name": "Hartebeesthoek94 / Lo23", "code": 2050}, + {"name": "Hartebeesthoek94 / Lo25", "code": 2051}, + {"name": "Hartebeesthoek94 / Lo27", "code": 2052}, + {"name": "Hartebeesthoek94 / Lo29", "code": 2053}, + {"name": "Afgooye / UTM zone 38N", "code": 20538}, + {"name": "Afgooye / UTM zone 39N", "code": 20539}, + {"name": "Hartebeesthoek94 / Lo31", "code": 2054}, + {"name": "Hartebeesthoek94 / Lo33", "code": 2055}, + {"name": "CH1903+ / LV95", "code": 2056}, + {"name": "Rassadiran / Nakhl e Taqi", "code": 2057}, + {"name": "ED50(ED77) / UTM zone 38N", "code": 2058}, + {"name": "ED50(ED77) / UTM zone 39N", "code": 2059}, + {"name": "ED50(ED77) / UTM zone 40N", "code": 2060}, + {"name": "ED50(ED77) / UTM zone 41N", "code": 2061}, + {"name": "Madrid 1870 (Madrid) / Spain", "code": 2062}, + {"name": "Dabola 1981 / UTM zone 28N", "code": 2063}, + {"name": "Dabola 1981 / UTM zone 29N", "code": 2064}, + {"name": "S-JTSK (Ferro) / Krovak", "code": 2065}, + {"name": "Mount Dillon / Tobago Grid", "code": 2066}, + {"name": "Naparima 1955 / UTM zone 20N", "code": 2067}, + {"name": "ELD79 / Libya zone 5", "code": 2068}, + {"name": "ELD79 / Libya zone 6", "code": 2069}, + {"name": "ELD79 / Libya zone 7", "code": 2070}, + {"name": "ELD79 / Libya zone 8", "code": 2071}, + {"name": "ELD79 / Libya zone 9", "code": 2072}, + {"name": "ELD79 / Libya zone 10", "code": 2073}, + {"name": "ELD79 / Libya zone 11", "code": 2074}, + {"name": "ELD79 / Libya zone 12", "code": 2075}, + {"name": "ELD79 / Libya zone 13", "code": 2076}, + {"name": "ELD79 / UTM zone 32N", "code": 2077}, + {"name": "ELD79 / UTM zone 33N", "code": 2078}, + {"name": "ELD79 / UTM zone 34N", "code": 2079}, + {"name": "Lisbon (Lisbon) / Portuguese National Grid", "code": 20790}, + {"name": "Lisbon (Lisbon) / Portuguese Grid", "code": 20791}, + {"name": "ELD79 / UTM zone 35N", "code": 2080}, + {"name": "Chos Malal 1914 / Argentina 2", "code": 2081}, + {"name": "Pampa del Castillo / Argentina 2", "code": 2082}, + {"name": "Aratu / UTM zone 22S", "code": 20822}, + {"name": "Aratu / UTM zone 23S", "code": 20823}, + {"name": "Aratu / UTM zone 24S", "code": 20824}, + {"name": "Hito XVIII 1963 / Argentina 2", "code": 2083}, + {"name": "Hito XVIII 1963 / UTM zone 19S", "code": 2084}, + {"name": "NAD27 / Cuba Norte", "code": 2085}, + {"name": "NAD27 / Cuba Sur", "code": 2086}, + {"name": "ELD79 / TM 12 NE", "code": 2087}, + {"name": "Carthage / TM 11 NE", "code": 2088}, + {"name": "Yemen NGN96 / UTM zone 38N", "code": 2089}, + {"name": "Yemen NGN96 / UTM zone 39N", "code": 2090}, + {"name": "South Yemen / Gauss Kruger zone 8", "code": 2091}, + {"name": "South Yemen / Gauss Kruger zone 9", "code": 2092}, + {"name": "Hanoi 1972 / GK 106 NE", "code": 2093}, + {"name": "Arc 1950 / UTM zone 34S", "code": 20934}, + {"name": "Arc 1950 / UTM zone 35S", "code": 20935}, + {"name": "Arc 1950 / UTM zone 36S", "code": 20936}, + {"name": "WGS 72BE / TM 106 NE", "code": 2094}, + {"name": "Bissau / UTM zone 28N", "code": 2095}, + {"name": "Korean 1985 / East Belt", "code": 2096}, + {"name": "Korean 1985 / Central Belt", "code": 2097}, + {"name": "Korean 1985 / West Belt", "code": 2098}, + {"name": "Qatar 1948 / Qatar Grid", "code": 2099}, + {"name": "GGRS87 / Greek Grid", "code": 2100}, + {"name": "Lake / Maracaibo Grid M1", "code": 2101}, + {"name": "Lake / Maracaibo Grid", "code": 2102}, + {"name": "Lake / Maracaibo Grid M3", "code": 2103}, + {"name": "Arc 1960 / UTM zone 35S", "code": 21035}, + {"name": "Arc 1960 / UTM zone 36S", "code": 21036}, + {"name": "Arc 1960 / UTM zone 37S", "code": 21037}, + {"name": "Lake / Maracaibo La Rosa Grid", "code": 2104}, + {"name": "NZGD2000 / Mount Eden 2000", "code": 2105}, + {"name": "NZGD2000 / Bay of Plenty 2000", "code": 2106}, + {"name": "NZGD2000 / Poverty Bay 2000", "code": 2107}, + {"name": "NZGD2000 / Hawkes Bay 2000", "code": 2108}, + {"name": "NZGD2000 / Taranaki 2000", "code": 2109}, + {"name": "Arc 1960 / UTM zone 35N", "code": 21095}, + {"name": "Arc 1960 / UTM zone 36N", "code": 21096}, + {"name": "Arc 1960 / UTM zone 37N", "code": 21097}, + {"name": "NZGD2000 / Tuhirangi 2000", "code": 2110}, + {"name": "Batavia (Jakarta) / NEIEZ", "code": 21100}, + {"name": "NZGD2000 / Wanganui 2000", "code": 2111}, + {"name": "NZGD2000 / Wairarapa 2000", "code": 2112}, + {"name": "NZGD2000 / Wellington 2000", "code": 2113}, + {"name": "NZGD2000 / Collingwood 2000", "code": 2114}, + {"name": "Batavia / UTM zone 48S", "code": 21148}, + {"name": "Batavia / UTM zone 49S", "code": 21149}, + {"name": "NZGD2000 / Nelson 2000", "code": 2115}, + {"name": "Batavia / UTM zone 50S", "code": 21150}, + {"name": "NZGD2000 / Karamea 2000", "code": 2116}, + {"name": "NZGD2000 / Buller 2000", "code": 2117}, + {"name": "NZGD2000 / Grey 2000", "code": 2118}, + {"name": "NZGD2000 / Amuri 2000", "code": 2119}, + {"name": "NZGD2000 / Marlborough 2000", "code": 2120}, + {"name": "NZGD2000 / Hokitika 2000", "code": 2121}, + {"name": "NZGD2000 / Okarito 2000", "code": 2122}, + {"name": "NZGD2000 / Jacksons Bay 2000", "code": 2123}, + {"name": "NZGD2000 / Mount Pleasant 2000", "code": 2124}, + {"name": "NZGD2000 / Gawler 2000", "code": 2125}, + {"name": "NZGD2000 / Timaru 2000", "code": 2126}, + {"name": "NZGD2000 / Lindis Peak 2000", "code": 2127}, + {"name": "NZGD2000 / Mount Nicholas 2000", "code": 2128}, + {"name": "NZGD2000 / Mount York 2000", "code": 2129}, + {"name": "Barbados 1938 / British West Indies Grid", "code": 21291}, + {"name": "Barbados 1938 / Barbados National Grid", "code": 21292}, + {"name": "NZGD2000 / Observation Point 2000", "code": 2130}, + {"name": "NZGD2000 / North Taieri 2000", "code": 2131}, + {"name": "NZGD2000 / Bluff 2000", "code": 2132}, + {"name": "NZGD2000 / UTM zone 58S", "code": 2133}, + {"name": "NZGD2000 / UTM zone 59S", "code": 2134}, + {"name": "NZGD2000 / UTM zone 60S", "code": 2135}, + {"name": "Accra / Ghana National Grid", "code": 2136}, + {"name": "Accra / TM 1 NW", "code": 2137}, + {"name": "NAD27(CGQ77) / Quebec Lambert", "code": 2138}, + {"name": "NAD83(CSRS98) / SCoPQ zone 2", "code": 2139}, + {"name": "NAD83(CSRS98) / MTM zone 3", "code": 2140}, + {"name": "NAD83(CSRS98) / MTM zone 4", "code": 2141}, + {"name": "Beijing 1954 / Gauss-Kruger zone 13", "code": 21413}, + {"name": "Beijing 1954 / Gauss-Kruger zone 14", "code": 21414}, + {"name": "Beijing 1954 / Gauss-Kruger zone 15", "code": 21415}, + {"name": "Beijing 1954 / Gauss-Kruger zone 16", "code": 21416}, + {"name": "Beijing 1954 / Gauss-Kruger zone 17", "code": 21417}, + {"name": "Beijing 1954 / Gauss-Kruger zone 18", "code": 21418}, + {"name": "Beijing 1954 / Gauss-Kruger zone 19", "code": 21419}, + {"name": "NAD83(CSRS98) / MTM zone 5", "code": 2142}, + {"name": "Beijing 1954 / Gauss-Kruger zone 20", "code": 21420}, + {"name": "Beijing 1954 / Gauss-Kruger zone 21", "code": 21421}, + {"name": "Beijing 1954 / Gauss-Kruger zone 22", "code": 21422}, + {"name": "Beijing 1954 / Gauss-Kruger zone 23", "code": 21423}, + {"name": "NAD83(CSRS98) / MTM zone 6", "code": 2143}, + {"name": "NAD83(CSRS98) / MTM zone 7", "code": 2144}, + {"name": "NAD83(CSRS98) / MTM zone 8", "code": 2145}, + {"name": "Beijing 1954 / Gauss-Kruger CM 75E", "code": 21453}, + {"name": "Beijing 1954 / Gauss-Kruger CM 81E", "code": 21454}, + {"name": "Beijing 1954 / Gauss-Kruger CM 87E", "code": 21455}, + {"name": "Beijing 1954 / Gauss-Kruger CM 93E", "code": 21456}, + {"name": "Beijing 1954 / Gauss-Kruger CM 99E", "code": 21457}, + {"name": "Beijing 1954 / Gauss-Kruger CM 105E", "code": 21458}, + {"name": "Beijing 1954 / Gauss-Kruger CM 111E", "code": 21459}, + {"name": "NAD83(CSRS98) / MTM zone 9", "code": 2146}, + {"name": "Beijing 1954 / Gauss-Kruger CM 117E", "code": 21460}, + {"name": "Beijing 1954 / Gauss-Kruger CM 123E", "code": 21461}, + {"name": "Beijing 1954 / Gauss-Kruger CM 129E", "code": 21462}, + {"name": "Beijing 1954 / Gauss-Kruger CM 135E", "code": 21463}, + {"name": "NAD83(CSRS98) / MTM zone 10", "code": 2147}, + {"name": "Beijing 1954 / Gauss-Kruger 13N", "code": 21473}, + {"name": "Beijing 1954 / Gauss-Kruger 14N", "code": 21474}, + {"name": "Beijing 1954 / Gauss-Kruger 15N", "code": 21475}, + {"name": "Beijing 1954 / Gauss-Kruger 16N", "code": 21476}, + {"name": "Beijing 1954 / Gauss-Kruger 17N", "code": 21477}, + {"name": "Beijing 1954 / Gauss-Kruger 18N", "code": 21478}, + {"name": "Beijing 1954 / Gauss-Kruger 19N", "code": 21479}, + {"name": "NAD83(CSRS98) / UTM zone 21N", "code": 2148}, + {"name": "Beijing 1954 / Gauss-Kruger 20N", "code": 21480}, + {"name": "Beijing 1954 / Gauss-Kruger 21N", "code": 21481}, + {"name": "Beijing 1954 / Gauss-Kruger 22N", "code": 21482}, + {"name": "Beijing 1954 / Gauss-Kruger 23N", "code": 21483}, + {"name": "NAD83(CSRS98) / UTM zone 18N", "code": 2149}, + {"name": "NAD83(CSRS98) / UTM zone 17N", "code": 2150}, + {"name": "Belge 1950 (Brussels) / Belge Lambert 50", "code": 21500}, + {"name": "NAD83(CSRS98) / UTM zone 13N", "code": 2151}, + {"name": "NAD83(CSRS98) / UTM zone 12N", "code": 2152}, + {"name": "NAD83(CSRS98) / UTM zone 11N", "code": 2153}, + {"name": "RGF93 / Lambert-93", "code": 2154}, + {"name": "American Samoa 1962 / American Samoa Lambert", "code": 2155}, + {"name": "NAD83(HARN) / UTM zone 59S", "code": 2156}, + {"name": "IRENET95 / Irish Transverse Mercator", "code": 2157}, + {"name": "IRENET95 / UTM zone 29N", "code": 2158}, + {"name": "Sierra Leone 1924 / New Colony Grid", "code": 2159}, + {"name": "Sierra Leone 1924 / New War Office Grid", "code": 2160}, + {"name": "Sierra Leone 1968 / UTM zone 28N", "code": 2161}, + {"name": "Sierra Leone 1968 / UTM zone 29N", "code": 2162}, + {"name": "US National Atlas Equal Area", "code": 2163}, + {"name": "Locodjo 1965 / TM 5 NW", "code": 2164}, + {"name": "Abidjan 1987 / TM 5 NW", "code": 2165}, + {"name": "Pulkovo 1942(83) / Gauss Kruger zone 3", "code": 2166}, + {"name": "Pulkovo 1942(83) / Gauss Kruger zone 4", "code": 2167}, + {"name": "Pulkovo 1942(83) / Gauss Kruger zone 5", "code": 2168}, + {"name": "Luxembourg 1930 / Gauss", "code": 2169}, + {"name": "MGI / Slovenia Grid", "code": 2170}, + {"name": "Pulkovo 1942(58) / Poland zone I", "code": 2171}, + {"name": "Pulkovo 1942(58) / Poland zone II", "code": 2172}, + {"name": "Pulkovo 1942(58) / Poland zone III", "code": 2173}, + {"name": "Pulkovo 1942(58) / Poland zone IV", "code": 2174}, + {"name": "Pulkovo 1942(58) / Poland zone V", "code": 2175}, + {"name": "ETRS89 / Poland CS2000 zone 5", "code": 2176}, + {"name": "ETRS89 / Poland CS2000 zone 6", "code": 2177}, + {"name": "ETRS89 / Poland CS2000 zone 7", "code": 2178}, + {"name": "Bern 1898 (Bern) / LV03C", "code": 21780}, + {"name": "CH1903 / LV03", "code": 21781}, + {"name": "CH1903 / LV03C-G", "code": 21782}, + {"name": "ETRS89 / Poland CS2000 zone 8", "code": 2179}, + {"name": "ETRS89 / Poland CS92", "code": 2180}, + {"name": "Bogota 1975 / UTM zone 17N", "code": 21817}, + {"name": "Bogota 1975 / UTM zone 18N", "code": 21818}, + {"name": "Azores Occidental 1939 / UTM zone 25N", "code": 2188}, + {"name": "Azores Central 1948 / UTM zone 26N", "code": 2189}, + {"name": "Bogota 1975 / Colombia West zone", "code": 21891}, + {"name": "Bogota 1975 / Colombia Bogota zone", "code": 21892}, + {"name": "Bogota 1975 / Colombia East Central zone", "code": 21893}, + {"name": "Bogota 1975 / Colombia East", "code": 21894}, + {"name": "Bogota 1975 / Colombia West zone", "code": 21896}, + {"name": "Bogota 1975 / Colombia Bogota zone", "code": 21897}, + {"name": "Bogota 1975 / Colombia East Central zone", "code": 21898}, + {"name": "Bogota 1975 / Colombia East zone", "code": 21899}, + {"name": "Azores Oriental 1940 / UTM zone 26N", "code": 2190}, + {"name": "Madeira 1936 / UTM zone 28N", "code": 2191}, + {"name": "ED50 / France EuroLambert", "code": 2192}, + {"name": "NZGD2000 / New Zealand Transverse Mercator 2000", "code": 2193}, + {"name": "American Samoa 1962 / American Samoa Lambert", "code": 2194}, + {"name": "NAD83(HARN) / UTM zone 2S", "code": 2195}, + {"name": "ETRS89 / Kp2000 Jutland", "code": 2196}, + {"name": "ETRS89 / Kp2000 Zealand", "code": 2197}, + {"name": "ETRS89 / Kp2000 Bornholm", "code": 2198}, + {"name": "Albanian 1987 / Gauss Kruger zone 4", "code": 2199}, + {"name": "ATS77 / New Brunswick Stereographic (ATS77)", "code": 2200}, + {"name": "REGVEN / UTM zone 18N", "code": 2201}, + {"name": "REGVEN / UTM zone 19N", "code": 2202}, + {"name": "REGVEN / UTM zone 20N", "code": 2203}, + {"name": "Camacupa 1948 / UTM zone 32S", "code": 22032}, + {"name": "Camacupa 1948 / UTM zone 33S", "code": 22033}, + {"name": "NAD27 / Tennessee", "code": 2204}, + {"name": "NAD83 / Kentucky North", "code": 2205}, + {"name": "ED50 / 3-degree Gauss-Kruger zone 9", "code": 2206}, + {"name": "ED50 / 3-degree Gauss-Kruger zone 10", "code": 2207}, + {"name": "ED50 / 3-degree Gauss-Kruger zone 11", "code": 2208}, + {"name": "ED50 / 3-degree Gauss-Kruger zone 12", "code": 2209}, + {"name": "Camacupa 1948 / TM 11.30 SE", "code": 22091}, + {"name": "Camacupa 1948 / TM 12 SE", "code": 22092}, + {"name": "ED50 / 3-degree Gauss-Kruger zone 13", "code": 2210}, + {"name": "ED50 / 3-degree Gauss-Kruger zone 14", "code": 2211}, + {"name": "ED50 / 3-degree Gauss-Kruger zone 15", "code": 2212}, + {"name": "ETRS89 / TM 30 NE", "code": 2213}, + {"name": "Douala 1948 / AOF west", "code": 2214}, + {"name": "Manoca 1962 / UTM zone 32N", "code": 2215}, + {"name": "Qornoq 1927 / UTM zone 22N", "code": 2216}, + {"name": "Qornoq 1927 / UTM zone 23N", "code": 2217}, + {"name": "POSGAR 98 / Argentina 1", "code": 22171}, + {"name": "POSGAR 98 / Argentina 2", "code": 22172}, + {"name": "POSGAR 98 / Argentina 3", "code": 22173}, + {"name": "POSGAR 98 / Argentina 4", "code": 22174}, + {"name": "POSGAR 98 / Argentina 5", "code": 22175}, + {"name": "POSGAR 98 / Argentina 6", "code": 22176}, + {"name": "POSGAR 98 / Argentina 7", "code": 22177}, + {"name": "Scoresbysund 1952 / Greenland zone 5 east", "code": 2218}, + {"name": "POSGAR 94 / Argentina 1", "code": 22181}, + {"name": "POSGAR 94 / Argentina 2", "code": 22182}, + {"name": "POSGAR 94 / Argentina 3", "code": 22183}, + {"name": "POSGAR 94 / Argentina 4", "code": 22184}, + {"name": "POSGAR 94 / Argentina 5", "code": 22185}, + {"name": "POSGAR 94 / Argentina 6", "code": 22186}, + {"name": "POSGAR 94 / Argentina 7", "code": 22187}, + {"name": "ATS77 / UTM zone 19N", "code": 2219}, + {"name": "Campo Inchauspe / Argentina 1", "code": 22191}, + {"name": "Campo Inchauspe / Argentina 2", "code": 22192}, + {"name": "Campo Inchauspe / Argentina 3", "code": 22193}, + {"name": "Campo Inchauspe / Argentina 4", "code": 22194}, + {"name": "Campo Inchauspe / Argentina 5", "code": 22195}, + {"name": "Campo Inchauspe / Argentina 6", "code": 22196}, + {"name": "Campo Inchauspe / Argentina 7", "code": 22197}, + {"name": "ATS77 / UTM zone 20N", "code": 2220}, + {"name": "Scoresbysund 1952 / Greenland zone 6 east", "code": 2221}, + {"name": "NAD83 / Arizona East (ft)", "code": 2222}, + {"name": "NAD83 / Arizona Central (ft)", "code": 2223}, + {"name": "Cape / UTM zone 34S", "code": 22234}, + {"name": "Cape / UTM zone 35S", "code": 22235}, + {"name": "Cape / UTM zone 36S", "code": 22236}, + {"name": "NAD83 / Arizona West (ft)", "code": 2224}, + {"name": "NAD83 / California zone 1 (ftUS)", "code": 2225}, + {"name": "NAD83 / California zone 2 (ftUS)", "code": 2226}, + {"name": "NAD83 / California zone 3 (ftUS)", "code": 2227}, + {"name": "Cape / Lo15", "code": 22275}, + {"name": "Cape / Lo17", "code": 22277}, + {"name": "Cape / Lo19", "code": 22279}, + {"name": "NAD83 / California zone 4 (ftUS)", "code": 2228}, + {"name": "Cape / Lo21", "code": 22281}, + {"name": "Cape / Lo23", "code": 22283}, + {"name": "Cape / Lo25", "code": 22285}, + {"name": "Cape / Lo27", "code": 22287}, + {"name": "Cape / Lo29", "code": 22289}, + {"name": "NAD83 / California zone 5 (ftUS)", "code": 2229}, + {"name": "Cape / Lo31", "code": 22291}, + {"name": "Cape / Lo33", "code": 22293}, + {"name": "NAD83 / California zone 6 (ftUS)", "code": 2230}, + {"name": "Carthage (Paris) / Tunisia Mining Grid", "code": 22300}, + {"name": "NAD83 / Colorado North (ftUS)", "code": 2231}, + {"name": "NAD83 / Colorado Central (ftUS)", "code": 2232}, + {"name": "NAD83 / Colorado South (ftUS)", "code": 2233}, + {"name": "Carthage / UTM zone 32N", "code": 22332}, + {"name": "NAD83 / Connecticut (ftUS)", "code": 2234}, + {"name": "NAD83 / Delaware (ftUS)", "code": 2235}, + {"name": "NAD83 / Florida East (ftUS)", "code": 2236}, + {"name": "NAD83 / Florida West (ftUS)", "code": 2237}, + {"name": "NAD83 / Florida North (ftUS)", "code": 2238}, + {"name": "NAD83 / Georgia East (ftUS)", "code": 2239}, + {"name": "Carthage / Nord Tunisie", "code": 22391}, + {"name": "Carthage / Sud Tunisie", "code": 22392}, + {"name": "NAD83 / Georgia West (ftUS)", "code": 2240}, + {"name": "NAD83 / Idaho East (ftUS)", "code": 2241}, + {"name": "NAD83 / Idaho Central (ftUS)", "code": 2242}, + {"name": "NAD83 / Idaho West (ftUS)", "code": 2243}, + {"name": "NAD83 / Indiana East (ftUS)", "code": 2244}, + {"name": "NAD83 / Indiana West (ftUS)", "code": 2245}, + {"name": "NAD83 / Kentucky North (ftUS)", "code": 2246}, + {"name": "NAD83 / Kentucky South (ftUS)", "code": 2247}, + {"name": "NAD83 / Maryland (ftUS)", "code": 2248}, + {"name": "NAD83 / Massachusetts Mainland (ftUS)", "code": 2249}, + {"name": "NAD83 / Massachusetts Island (ftUS)", "code": 2250}, + {"name": "NAD83 / Michigan North (ft)", "code": 2251}, + {"name": "NAD83 / Michigan Central (ft)", "code": 2252}, + {"name": "Corrego Alegre 1970-72 / UTM zone 21S", "code": 22521}, + {"name": "Corrego Alegre 1970-72 / UTM zone 22S", "code": 22522}, + {"name": "Corrego Alegre 1970-72 / UTM zone 23S", "code": 22523}, + {"name": "Corrego Alegre 1970-72 / UTM zone 24S", "code": 22524}, + {"name": "Corrego Alegre 1970-72 / UTM zone 25S", "code": 22525}, + {"name": "NAD83 / Michigan South (ft)", "code": 2253}, + {"name": "NAD83 / Mississippi East (ftUS)", "code": 2254}, + {"name": "NAD83 / Mississippi West (ftUS)", "code": 2255}, + {"name": "NAD83 / Montana (ft)", "code": 2256}, + {"name": "NAD83 / New Mexico East (ftUS)", "code": 2257}, + {"name": "NAD83 / New Mexico Central (ftUS)", "code": 2258}, + {"name": "NAD83 / New Mexico West (ftUS)", "code": 2259}, + {"name": "NAD83 / New York East (ftUS)", "code": 2260}, + {"name": "NAD83 / New York Central (ftUS)", "code": 2261}, + {"name": "NAD83 / New York West (ftUS)", "code": 2262}, + {"name": "NAD83 / New York Long Island (ftUS)", "code": 2263}, + {"name": "NAD83 / North Carolina (ftUS)", "code": 2264}, + {"name": "NAD83 / North Dakota North (ft)", "code": 2265}, + {"name": "NAD83 / North Dakota South (ft)", "code": 2266}, + {"name": "NAD83 / Oklahoma North (ftUS)", "code": 2267}, + {"name": "NAD83 / Oklahoma South (ftUS)", "code": 2268}, + {"name": "NAD83 / Oregon North (ft)", "code": 2269}, + {"name": "NAD83 / Oregon South (ft)", "code": 2270}, + {"name": "Deir ez Zor / Levant Zone", "code": 22700}, + {"name": "NAD83 / Pennsylvania North (ftUS)", "code": 2271}, + {"name": "NAD83 / Pennsylvania South (ftUS)", "code": 2272}, + {"name": "NAD83 / South Carolina (ft)", "code": 2273}, + {"name": "NAD83 / Tennessee (ftUS)", "code": 2274}, + {"name": "NAD83 / Texas North (ftUS)", "code": 2275}, + {"name": "NAD83 / Texas North Central (ftUS)", "code": 2276}, + {"name": "NAD83 / Texas Central (ftUS)", "code": 2277}, + {"name": "Deir ez Zor / Syria Lambert", "code": 22770}, + {"name": "NAD83 / Texas South Central (ftUS)", "code": 2278}, + {"name": "Deir ez Zor / Levant Stereographic", "code": 22780}, + {"name": "NAD83 / Texas South (ftUS)", "code": 2279}, + {"name": "NAD83 / Utah North (ft)", "code": 2280}, + {"name": "NAD83 / Utah Central (ft)", "code": 2281}, + {"name": "NAD83 / Utah South (ft)", "code": 2282}, + {"name": "NAD83 / Virginia North (ftUS)", "code": 2283}, + {"name": "Douala / UTM zone 32N", "code": 22832}, + {"name": "NAD83 / Virginia South (ftUS)", "code": 2284}, + {"name": "NAD83 / Washington North (ftUS)", "code": 2285}, + {"name": "NAD83 / Washington South (ftUS)", "code": 2286}, + {"name": "NAD83 / Wisconsin North (ftUS)", "code": 2287}, + {"name": "NAD83 / Wisconsin Central (ftUS)", "code": 2288}, + {"name": "NAD83 / Wisconsin South (ftUS)", "code": 2289}, + {"name": "ATS77 / Prince Edward Isl. Stereographic (ATS77)", "code": 2290}, + {"name": "NAD83(CSRS98) / Prince Edward Isl. Stereographic (NAD83)", "code": 2291}, + {"name": "NAD83(CSRS98) / Prince Edward Isl. Stereographic (NAD83)", "code": 2292}, + {"name": "ATS77 / MTM Nova Scotia zone 4", "code": 2294}, + {"name": "ATS77 / MTM Nova Scotia zone 5", "code": 2295}, + {"name": "Ammassalik 1958 / Greenland zone 7 east", "code": 2296}, + {"name": "Qornoq 1927 / Greenland zone 1 east", "code": 2297}, + {"name": "Qornoq 1927 / Greenland zone 2 east", "code": 2298}, + {"name": "Qornoq 1927 / Greenland zone 2 west", "code": 2299}, + {"name": "Egypt 1907 / Blue Belt", "code": 22991}, + {"name": "Egypt 1907 / Red Belt", "code": 22992}, + {"name": "Egypt 1907 / Purple Belt", "code": 22993}, + {"name": "Egypt 1907 / Extended Purple Belt", "code": 22994}, + {"name": "Qornoq 1927 / Greenland zone 3 east", "code": 2300}, + {"name": "Qornoq 1927 / Greenland zone 3 west", "code": 2301}, + {"name": "Qornoq 1927 / Greenland zone 4 east", "code": 2302}, + {"name": "ED50 / UTM zone 28N", "code": 23028}, + {"name": "ED50 / UTM zone 29N", "code": 23029}, + {"name": "Qornoq 1927 / Greenland zone 4 west", "code": 2303}, + {"name": "ED50 / UTM zone 30N", "code": 23030}, + {"name": "ED50 / UTM zone 31N", "code": 23031}, + {"name": "ED50 / UTM zone 32N", "code": 23032}, + {"name": "ED50 / UTM zone 33N", "code": 23033}, + {"name": "ED50 / UTM zone 34N", "code": 23034}, + {"name": "ED50 / UTM zone 35N", "code": 23035}, + {"name": "ED50 / UTM zone 36N", "code": 23036}, + {"name": "ED50 / UTM zone 37N", "code": 23037}, + {"name": "ED50 / UTM zone 38N", "code": 23038}, + {"name": "Qornoq 1927 / Greenland zone 5 west", "code": 2304}, + {"name": "Qornoq 1927 / Greenland zone 6 west", "code": 2305}, + {"name": "Qornoq 1927 / Greenland zone 7 west", "code": 2306}, + {"name": "Qornoq 1927 / Greenland zone 8 east", "code": 2307}, + {"name": "Batavia / TM 109 SE", "code": 2308}, + {"name": "WGS 84 / TM 116 SE", "code": 2309}, + {"name": "ED50 / TM 0 N", "code": 23090}, + {"name": "ED50 / TM 5 NE", "code": 23095}, + {"name": "WGS 84 / TM 132 SE", "code": 2310}, + {"name": "WGS 84 / TM 6 NE", "code": 2311}, + {"name": "Garoua / UTM zone 33N", "code": 2312}, + {"name": "Kousseri / UTM zone 33N", "code": 2313}, + {"name": "Trinidad 1903 / Trinidad Grid (ftCla)", "code": 2314}, + {"name": "Campo Inchauspe / UTM zone 19S", "code": 2315}, + {"name": "Campo Inchauspe / UTM zone 20S", "code": 2316}, + {"name": "PSAD56 / ICN Regional", "code": 2317}, + {"name": "Ain el Abd / Aramco Lambert", "code": 2318}, + {"name": "ED50 / TM27", "code": 2319}, + {"name": "ED50 / TM30", "code": 2320}, + {"name": "ED50 / TM33", "code": 2321}, + {"name": "ED50 / TM36", "code": 2322}, + {"name": "ED50 / TM39", "code": 2323}, + {"name": "Fahud / UTM zone 39N", "code": 23239}, + {"name": "ED50 / TM42", "code": 2324}, + {"name": "Fahud / UTM zone 40N", "code": 23240}, + {"name": "ED50 / TM45", "code": 2325}, + {"name": "Hong Kong 1980 Grid System", "code": 2326}, + {"name": "Xian 1980 / Gauss-Kruger zone 13", "code": 2327}, + {"name": "Xian 1980 / Gauss-Kruger zone 14", "code": 2328}, + {"name": "Xian 1980 / Gauss-Kruger zone 15", "code": 2329}, + {"name": "Xian 1980 / Gauss-Kruger zone 16", "code": 2330}, + {"name": "Xian 1980 / Gauss-Kruger zone 17", "code": 2331}, + {"name": "Xian 1980 / Gauss-Kruger zone 18", "code": 2332}, + {"name": "Xian 1980 / Gauss-Kruger zone 19", "code": 2333}, + {"name": "Xian 1980 / Gauss-Kruger zone 20", "code": 2334}, + {"name": "Xian 1980 / Gauss-Kruger zone 21", "code": 2335}, + {"name": "Xian 1980 / Gauss-Kruger zone 22", "code": 2336}, + {"name": "Xian 1980 / Gauss-Kruger zone 23", "code": 2337}, + {"name": "Xian 1980 / Gauss-Kruger CM 75E", "code": 2338}, + {"name": "Xian 1980 / Gauss-Kruger CM 81E", "code": 2339}, + {"name": "Xian 1980 / Gauss-Kruger CM 87E", "code": 2340}, + {"name": "Xian 1980 / Gauss-Kruger CM 93E", "code": 2341}, + {"name": "Xian 1980 / Gauss-Kruger CM 99E", "code": 2342}, + {"name": "Xian 1980 / Gauss-Kruger CM 105E", "code": 2343}, + {"name": "Garoua / UTM zone 33N", "code": 23433}, + {"name": "Xian 1980 / Gauss-Kruger CM 111E", "code": 2344}, + {"name": "Xian 1980 / Gauss-Kruger CM 117E", "code": 2345}, + {"name": "Xian 1980 / Gauss-Kruger CM 123E", "code": 2346}, + {"name": "Xian 1980 / Gauss-Kruger CM 129E", "code": 2347}, + {"name": "Xian 1980 / Gauss-Kruger CM 135E", "code": 2348}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger zone 25", "code": 2349}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger zone 26", "code": 2350}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger zone 27", "code": 2351}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger zone 28", "code": 2352}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger zone 29", "code": 2353}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger zone 30", "code": 2354}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger zone 31", "code": 2355}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger zone 32", "code": 2356}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger zone 33", "code": 2357}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger zone 34", "code": 2358}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger zone 35", "code": 2359}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger zone 36", "code": 2360}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger zone 37", "code": 2361}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger zone 38", "code": 2362}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger zone 39", "code": 2363}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger zone 40", "code": 2364}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger zone 41", "code": 2365}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger zone 42", "code": 2366}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger zone 43", "code": 2367}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger zone 44", "code": 2368}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger zone 45", "code": 2369}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger CM 75E", "code": 2370}, + {"name": "HD72 / EOV", "code": 23700}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger CM 78E", "code": 2371}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger CM 81E", "code": 2372}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger CM 84E", "code": 2373}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger CM 87E", "code": 2374}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger CM 90E", "code": 2375}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger CM 93E", "code": 2376}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger CM 96E", "code": 2377}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger CM 99E", "code": 2378}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger CM 102E", "code": 2379}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger CM 105E", "code": 2380}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger CM 108E", "code": 2381}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger CM 111E", "code": 2382}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger CM 114E", "code": 2383}, + {"name": "DGN95 / Indonesia TM-3 zone 46.2", "code": 23830}, + {"name": "DGN95 / Indonesia TM-3 zone 47.1", "code": 23831}, + {"name": "DGN95 / Indonesia TM-3 zone 47.2", "code": 23832}, + {"name": "DGN95 / Indonesia TM-3 zone 48.1", "code": 23833}, + {"name": "DGN95 / Indonesia TM-3 zone 48.2", "code": 23834}, + {"name": "DGN95 / Indonesia TM-3 zone 49.1", "code": 23835}, + {"name": "DGN95 / Indonesia TM-3 zone 49.2", "code": 23836}, + {"name": "DGN95 / Indonesia TM-3 zone 50.1", "code": 23837}, + {"name": "DGN95 / Indonesia TM-3 zone 50.2", "code": 23838}, + {"name": "DGN95 / Indonesia TM-3 zone 51.1", "code": 23839}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger CM 117E", "code": 2384}, + {"name": "DGN95 / Indonesia TM-3 zone 51.2", "code": 23840}, + {"name": "DGN95 / Indonesia TM-3 zone 52.1", "code": 23841}, + {"name": "DGN95 / Indonesia TM-3 zone 52.2", "code": 23842}, + {"name": "DGN95 / Indonesia TM-3 zone 53.1", "code": 23843}, + {"name": "DGN95 / Indonesia TM-3 zone 53.2", "code": 23844}, + {"name": "DGN95 / Indonesia TM-3 zone 54.1", "code": 23845}, + {"name": "ID74 / UTM zone 46N", "code": 23846}, + {"name": "ID74 / UTM zone 47N", "code": 23847}, + {"name": "ID74 / UTM zone 48N", "code": 23848}, + {"name": "ID74 / UTM zone 49N", "code": 23849}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger CM 120E", "code": 2385}, + {"name": "ID74 / UTM zone 50N", "code": 23850}, + {"name": "ID74 / UTM zone 51N", "code": 23851}, + {"name": "ID74 / UTM zone 52N", "code": 23852}, + {"name": "ID74 / UTM zone 53N", "code": 23853}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger CM 123E", "code": 2386}, + {"name": "DGN95 / UTM zone 46N", "code": 23866}, + {"name": "DGN95 / UTM zone 47N", "code": 23867}, + {"name": "DGN95 / UTM zone 48N", "code": 23868}, + {"name": "DGN95 / UTM zone 49N", "code": 23869}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger CM 126E", "code": 2387}, + {"name": "DGN95 / UTM zone 50N", "code": 23870}, + {"name": "DGN95 / UTM zone 51N", "code": 23871}, + {"name": "DGN95 / UTM zone 52N", "code": 23872}, + {"name": "DGN95 / UTM zone 47S", "code": 23877}, + {"name": "DGN95 / UTM zone 48S", "code": 23878}, + {"name": "DGN95 / UTM zone 49S", "code": 23879}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger CM 129E", "code": 2388}, + {"name": "DGN95 / UTM zone 50S", "code": 23880}, + {"name": "DGN95 / UTM zone 51S", "code": 23881}, + {"name": "DGN95 / UTM zone 52S", "code": 23882}, + {"name": "DGN95 / UTM zone 53S", "code": 23883}, + {"name": "DGN95 / UTM zone 54S", "code": 23884}, + {"name": "ID74 / UTM zone 46S", "code": 23886}, + {"name": "ID74 / UTM zone 47S", "code": 23887}, + {"name": "ID74 / UTM zone 48S", "code": 23888}, + {"name": "ID74 / UTM zone 49S", "code": 23889}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger CM 132E", "code": 2389}, + {"name": "ID74 / UTM zone 50S", "code": 23890}, + {"name": "ID74 / UTM zone 51S", "code": 23891}, + {"name": "ID74 / UTM zone 52S", "code": 23892}, + {"name": "ID74 / UTM zone 53S", "code": 23893}, + {"name": "ID74 / UTM zone 54S", "code": 23894}, + {"name": "Xian 1980 / 3-degree Gauss-Kruger CM 135E", "code": 2390}, + {"name": "KKJ / Finland zone 1", "code": 2391}, + {"name": "KKJ / Finland zone 2", "code": 2392}, + {"name": "KKJ / Finland Uniform Coordinate System", "code": 2393}, + {"name": "KKJ / Finland zone 4", "code": 2394}, + {"name": "Indian 1954 / UTM zone 46N", "code": 23946}, + {"name": "Indian 1954 / UTM zone 47N", "code": 23947}, + {"name": "Indian 1954 / UTM zone 48N", "code": 23948}, + {"name": "South Yemen / Gauss-Kruger zone 8", "code": 2395}, + {"name": "South Yemen / Gauss-Kruger zone 9", "code": 2396}, + {"name": "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 3", "code": 2397}, + {"name": "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 4", "code": 2398}, + {"name": "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 5", "code": 2399}, + {"name": "RT90 2.5 gon W", "code": 2400}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger zone 25", "code": 2401}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger zone 26", "code": 2402}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger zone 27", "code": 2403}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger zone 28", "code": 2404}, + {"name": "Indian 1975 / UTM zone 47N", "code": 24047}, + {"name": "Indian 1975 / UTM zone 48N", "code": 24048}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger zone 29", "code": 2405}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger zone 30", "code": 2406}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger zone 31", "code": 2407}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger zone 32", "code": 2408}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger zone 33", "code": 2409}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger zone 34", "code": 2410}, + {"name": "Jamaica 1875 / Jamaica (Old Grid)", "code": 24100}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger zone 35", "code": 2411}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger zone 36", "code": 2412}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger zone 37", "code": 2413}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger zone 38", "code": 2414}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger zone 39", "code": 2415}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger zone 40", "code": 2416}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger zone 41", "code": 2417}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger zone 42", "code": 2418}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger zone 43", "code": 2419}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger zone 44", "code": 2420}, + {"name": "JAD69 / Jamaica National Grid", "code": 24200}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger zone 45", "code": 2421}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger CM 75E", "code": 2422}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger CM 78E", "code": 2423}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger CM 81E", "code": 2424}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger CM 84E", "code": 2425}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger CM 87E", "code": 2426}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger CM 90E", "code": 2427}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger CM 93E", "code": 2428}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger CM 96E", "code": 2429}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger CM 99E", "code": 2430}, + {"name": "Kalianpur 1937 / UTM zone 45N", "code": 24305}, + {"name": "Kalianpur 1937 / UTM zone 46N", "code": 24306}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger CM 102E", "code": 2431}, + {"name": "Kalianpur 1962 / UTM zone 41N", "code": 24311}, + {"name": "Kalianpur 1962 / UTM zone 42N", "code": 24312}, + {"name": "Kalianpur 1962 / UTM zone 43N", "code": 24313}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger CM 105E", "code": 2432}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger CM 108E", "code": 2433}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger CM 111E", "code": 2434}, + {"name": "Kalianpur 1975 / UTM zone 42N", "code": 24342}, + {"name": "Kalianpur 1975 / UTM zone 43N", "code": 24343}, + {"name": "Kalianpur 1975 / UTM zone 44N", "code": 24344}, + {"name": "Kalianpur 1975 / UTM zone 45N", "code": 24345}, + {"name": "Kalianpur 1975 / UTM zone 46N", "code": 24346}, + {"name": "Kalianpur 1975 / UTM zone 47N", "code": 24347}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger CM 114E", "code": 2435}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger CM 117E", "code": 2436}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger CM 120E", "code": 2437}, + {"name": "Kalianpur 1880 / India zone 0", "code": 24370}, + {"name": "Kalianpur 1880 / India zone I", "code": 24371}, + {"name": "Kalianpur 1880 / India zone IIa", "code": 24372}, + {"name": "Kalianpur 1880 / India zone IIIa", "code": 24373}, + {"name": "Kalianpur 1880 / India zone IVa", "code": 24374}, + {"name": "Kalianpur 1937 / India zone IIb", "code": 24375}, + {"name": "Kalianpur 1962 / India zone I", "code": 24376}, + {"name": "Kalianpur 1962 / India zone IIa", "code": 24377}, + {"name": "Kalianpur 1975 / India zone I", "code": 24378}, + {"name": "Kalianpur 1975 / India zone IIa", "code": 24379}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger CM 123E", "code": 2438}, + {"name": "Kalianpur 1975 / India zone IIb", "code": 24380}, + {"name": "Kalianpur 1975 / India zone IIIa", "code": 24381}, + {"name": "Kalianpur 1880 / India zone IIb", "code": 24382}, + {"name": "Kalianpur 1975 / India zone IVa", "code": 24383}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger CM 126E", "code": 2439}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger CM 129E", "code": 2440}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger CM 132E", "code": 2441}, + {"name": "Beijing 1954 / 3-degree Gauss-Kruger CM 135E", "code": 2442}, + {"name": "JGD2000 / Japan Plane Rectangular CS I", "code": 2443}, + {"name": "JGD2000 / Japan Plane Rectangular CS II", "code": 2444}, + {"name": "JGD2000 / Japan Plane Rectangular CS III", "code": 2445}, + {"name": "JGD2000 / Japan Plane Rectangular CS IV", "code": 2446}, + {"name": "JGD2000 / Japan Plane Rectangular CS V", "code": 2447}, + {"name": "JGD2000 / Japan Plane Rectangular CS VI", "code": 2448}, + {"name": "JGD2000 / Japan Plane Rectangular CS VII", "code": 2449}, + {"name": "JGD2000 / Japan Plane Rectangular CS VIII", "code": 2450}, + {"name": "Kertau 1968 / Singapore Grid", "code": 24500}, + {"name": "JGD2000 / Japan Plane Rectangular CS IX", "code": 2451}, + {"name": "JGD2000 / Japan Plane Rectangular CS X", "code": 2452}, + {"name": "JGD2000 / Japan Plane Rectangular CS XI", "code": 2453}, + {"name": "JGD2000 / Japan Plane Rectangular CS XII", "code": 2454}, + {"name": "Kertau 1968 / UTM zone 47N", "code": 24547}, + {"name": "Kertau 1968 / UTM zone 48N", "code": 24548}, + {"name": "JGD2000 / Japan Plane Rectangular CS XIII", "code": 2455}, + {"name": "JGD2000 / Japan Plane Rectangular CS XIV", "code": 2456}, + {"name": "JGD2000 / Japan Plane Rectangular CS XV", "code": 2457}, + {"name": "Kertau / R.S.O. Malaya (ch)", "code": 24571}, + {"name": "JGD2000 / Japan Plane Rectangular CS XVI", "code": 2458}, + {"name": "JGD2000 / Japan Plane Rectangular CS XVII", "code": 2459}, + {"name": "JGD2000 / Japan Plane Rectangular CS XVIII", "code": 2460}, + {"name": "KOC Lambert", "code": 24600}, + {"name": "JGD2000 / Japan Plane Rectangular CS XIX", "code": 2461}, + {"name": "Albanian 1987 / Gauss-Kruger zone 4", "code": 2462}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 21E", "code": 2463}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 27E", "code": 2464}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 33E", "code": 2465}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 39E", "code": 2466}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 45E", "code": 2467}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 51E", "code": 2468}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 57E", "code": 2469}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 63E", "code": 2470}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 69E", "code": 2471}, + {"name": "La Canoa / UTM zone 18N", "code": 24718}, + {"name": "La Canoa / UTM zone 19N", "code": 24719}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 75E", "code": 2472}, + {"name": "La Canoa / UTM zone 20N", "code": 24720}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 81E", "code": 2473}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 87E", "code": 2474}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 93E", "code": 2475}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 99E", "code": 2476}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 105E", "code": 2477}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 111E", "code": 2478}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 117E", "code": 2479}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 123E", "code": 2480}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 129E", "code": 2481}, + {"name": "PSAD56 / UTM zone 17N", "code": 24817}, + {"name": "PSAD56 / UTM zone 18N", "code": 24818}, + {"name": "PSAD56 / UTM zone 19N", "code": 24819}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 135E", "code": 2482}, + {"name": "PSAD56 / UTM zone 20N", "code": 24820}, + {"name": "PSAD56 / UTM zone 21N", "code": 24821}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 141E", "code": 2483}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 147E", "code": 2484}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 153E", "code": 2485}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 159E", "code": 2486}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 165E", "code": 2487}, + {"name": "PSAD56 / UTM zone 17S", "code": 24877}, + {"name": "PSAD56 / UTM zone 18S", "code": 24878}, + {"name": "PSAD56 / UTM zone 19S", "code": 24879}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 171E", "code": 2488}, + {"name": "PSAD56 / UTM zone 20S", "code": 24880}, + {"name": "PSAD56 / UTM zone 21S", "code": 24881}, + {"name": "PSAD56 / UTM zone 22S", "code": 24882}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 177E", "code": 2489}, + {"name": "PSAD56 / Peru west zone", "code": 24891}, + {"name": "PSAD56 / Peru central zone", "code": 24892}, + {"name": "PSAD56 / Peru east zone", "code": 24893}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 177W", "code": 2490}, + {"name": "Pulkovo 1995 / Gauss-Kruger CM 171W", "code": 2491}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 9E", "code": 2492}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 15E", "code": 2493}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 21E", "code": 2494}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 27E", "code": 2495}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 33E", "code": 2496}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 39E", "code": 2497}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 45E", "code": 2498}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 51E", "code": 2499}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 57E", "code": 2500}, + {"name": "Leigon / Ghana Metre Grid", "code": 25000}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 63E", "code": 2501}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 69E", "code": 2502}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 75E", "code": 2503}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 81E", "code": 2504}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 87E", "code": 2505}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 93E", "code": 2506}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 99E", "code": 2507}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 105E", "code": 2508}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 111E", "code": 2509}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 117E", "code": 2510}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 123E", "code": 2511}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 129E", "code": 2512}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 135E", "code": 2513}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 141E", "code": 2514}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 147E", "code": 2515}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 153E", "code": 2516}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 159E", "code": 2517}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 165E", "code": 2518}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 171E", "code": 2519}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 177E", "code": 2520}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 177W", "code": 2521}, + {"name": "Pulkovo 1942 / Gauss-Kruger CM 171W", "code": 2522}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 7", "code": 2523}, + {"name": "Lome / UTM zone 31N", "code": 25231}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 8", "code": 2524}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 9", "code": 2525}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 10", "code": 2526}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 11", "code": 2527}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 12", "code": 2528}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 13", "code": 2529}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 14", "code": 2530}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 15", "code": 2531}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 16", "code": 2532}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 17", "code": 2533}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 18", "code": 2534}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 19", "code": 2535}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 20", "code": 2536}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 21", "code": 2537}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 22", "code": 2538}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 23", "code": 2539}, + {"name": "Luzon 1911 / Philippines zone I", "code": 25391}, + {"name": "Luzon 1911 / Philippines zone II", "code": 25392}, + {"name": "Luzon 1911 / Philippines zone III", "code": 25393}, + {"name": "Luzon 1911 / Philippines zone IV", "code": 25394}, + {"name": "Luzon 1911 / Philippines zone V", "code": 25395}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 24", "code": 2540}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 25", "code": 2541}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 26", "code": 2542}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 27", "code": 2543}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 28", "code": 2544}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 29", "code": 2545}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 30", "code": 2546}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 31", "code": 2547}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 32", "code": 2548}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 33", "code": 2549}, + {"name": "Samboja / UTM zone 50S", "code": 2550}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 34", "code": 2551}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 35", "code": 2552}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 36", "code": 2553}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 37", "code": 2554}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 38", "code": 2555}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 39", "code": 2556}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 40", "code": 2557}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 41", "code": 2558}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 42", "code": 2559}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 43", "code": 2560}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 44", "code": 2561}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 45", "code": 2562}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 46", "code": 2563}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 47", "code": 2564}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 48", "code": 2565}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 49", "code": 2566}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 50", "code": 2567}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 51", "code": 2568}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 52", "code": 2569}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 53", "code": 2570}, + {"name": "Makassar (Jakarta) / NEIEZ", "code": 25700}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 54", "code": 2571}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 55", "code": 2572}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 56", "code": 2573}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 57", "code": 2574}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 58", "code": 2575}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 59", "code": 2576}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 60", "code": 2577}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 61", "code": 2578}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 62", "code": 2579}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 63", "code": 2580}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 64", "code": 2581}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 21E", "code": 2582}, + {"name": "ETRS89 / UTM zone 28N", "code": 25828}, + {"name": "ETRS89 / UTM zone 29N", "code": 25829}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 24E", "code": 2583}, + {"name": "ETRS89 / UTM zone 30N", "code": 25830}, + {"name": "ETRS89 / UTM zone 31N", "code": 25831}, + {"name": "ETRS89 / UTM zone 32N", "code": 25832}, + {"name": "ETRS89 / UTM zone 33N", "code": 25833}, + {"name": "ETRS89 / UTM zone 34N", "code": 25834}, + {"name": "ETRS89 / UTM zone 35N", "code": 25835}, + {"name": "ETRS89 / UTM zone 36N", "code": 25836}, + {"name": "ETRS89 / UTM zone 37N", "code": 25837}, + {"name": "ETRS89 / UTM zone 38N", "code": 25838}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 27E", "code": 2584}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 30E", "code": 2585}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 33E", "code": 2586}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 36E", "code": 2587}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 39E", "code": 2588}, + {"name": "ETRS89 / TM Baltic93", "code": 25884}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 42E", "code": 2589}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 45E", "code": 2590}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 48E", "code": 2591}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 51E", "code": 2592}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 54E", "code": 2593}, + {"name": "Malongo 1987 / UTM zone 32S", "code": 25932}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 57E", "code": 2594}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 60E", "code": 2595}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 63E", "code": 2596}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 66E", "code": 2597}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 69E", "code": 2598}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 72E", "code": 2599}, + {"name": "Lietuvos Koordinoei Sistema 1994", "code": 2600}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 75E", "code": 2601}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 78E", "code": 2602}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 81E", "code": 2603}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 84E", "code": 2604}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 87E", "code": 2605}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 90E", "code": 2606}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 93E", "code": 2607}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 96E", "code": 2608}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 99E", "code": 2609}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 102E", "code": 2610}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 105E", "code": 2611}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 108E", "code": 2612}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 111E", "code": 2613}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 114E", "code": 2614}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 117E", "code": 2615}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 120E", "code": 2616}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 123E", "code": 2617}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 126E", "code": 2618}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 129E", "code": 2619}, + {"name": "Merchich / Nord Maroc", "code": 26191}, + {"name": "Merchich / Sud Maroc", "code": 26192}, + {"name": "Merchich / Sahara", "code": 26193}, + {"name": "Merchich / Sahara Nord", "code": 26194}, + {"name": "Merchich / Sahara Sud", "code": 26195}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 132E", "code": 2620}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 135E", "code": 2621}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 138E", "code": 2622}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 141E", "code": 2623}, + {"name": "Massawa / UTM zone 37N", "code": 26237}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 144E", "code": 2624}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 147E", "code": 2625}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 150E", "code": 2626}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 153E", "code": 2627}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 156E", "code": 2628}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 159E", "code": 2629}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 162E", "code": 2630}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 165E", "code": 2631}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 168E", "code": 2632}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 171E", "code": 2633}, + {"name": "Minna / UTM zone 31N", "code": 26331}, + {"name": "Minna / UTM zone 32N", "code": 26332}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 174E", "code": 2634}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 177E", "code": 2635}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 180E", "code": 2636}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 177W", "code": 2637}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 174W", "code": 2638}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 171W", "code": 2639}, + {"name": "Minna / Nigeria West Belt", "code": 26391}, + {"name": "Minna / Nigeria Mid Belt", "code": 26392}, + {"name": "Minna / Nigeria East Belt", "code": 26393}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 168W", "code": 2640}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 7", "code": 2641}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 8", "code": 2642}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 9", "code": 2643}, + {"name": "Mhast / UTM zone 32S", "code": 26432}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 10", "code": 2644}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 11", "code": 2645}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 12", "code": 2646}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 13", "code": 2647}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 14", "code": 2648}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 15", "code": 2649}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 16", "code": 2650}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 17", "code": 2651}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 18", "code": 2652}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 19", "code": 2653}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 20", "code": 2654}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 21", "code": 2655}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 22", "code": 2656}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 23", "code": 2657}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 24", "code": 2658}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 25", "code": 2659}, + {"name": "Monte Mario (Rome) / Italy zone 1", "code": 26591}, + {"name": "Monte Mario (Rome) / Italy zone 2", "code": 26592}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 26", "code": 2660}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 27", "code": 2661}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 28", "code": 2662}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 29", "code": 2663}, + {"name": "M'poraloko / UTM zone 32N", "code": 26632}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 30", "code": 2664}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 31", "code": 2665}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 32", "code": 2666}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 33", "code": 2667}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 34", "code": 2668}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 35", "code": 2669}, + {"name": "M'poraloko / UTM zone 32S", "code": 26692}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 36", "code": 2670}, + {"name": "NAD27 / UTM zone 1N", "code": 26701}, + {"name": "NAD27 / UTM zone 2N", "code": 26702}, + {"name": "NAD27 / UTM zone 3N", "code": 26703}, + {"name": "NAD27 / UTM zone 4N", "code": 26704}, + {"name": "NAD27 / UTM zone 5N", "code": 26705}, + {"name": "NAD27 / UTM zone 6N", "code": 26706}, + {"name": "NAD27 / UTM zone 7N", "code": 26707}, + {"name": "NAD27 / UTM zone 8N", "code": 26708}, + {"name": "NAD27 / UTM zone 9N", "code": 26709}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 37", "code": 2671}, + {"name": "NAD27 / UTM zone 10N", "code": 26710}, + {"name": "NAD27 / UTM zone 11N", "code": 26711}, + {"name": "NAD27 / UTM zone 12N", "code": 26712}, + {"name": "NAD27 / UTM zone 13N", "code": 26713}, + {"name": "NAD27 / UTM zone 14N", "code": 26714}, + {"name": "NAD27 / UTM zone 15N", "code": 26715}, + {"name": "NAD27 / UTM zone 16N", "code": 26716}, + {"name": "NAD27 / UTM zone 17N", "code": 26717}, + {"name": "NAD27 / UTM zone 18N", "code": 26718}, + {"name": "NAD27 / UTM zone 19N", "code": 26719}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 38", "code": 2672}, + {"name": "NAD27 / UTM zone 20N", "code": 26720}, + {"name": "NAD27 / UTM zone 21N", "code": 26721}, + {"name": "NAD27 / UTM zone 22N", "code": 26722}, + {"name": "NAD27 / Alabama East", "code": 26729}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 39", "code": 2673}, + {"name": "NAD27 / Alabama West", "code": 26730}, + {"name": "NAD27 / Alaska zone 1", "code": 26731}, + {"name": "NAD27 / Alaska zone 2", "code": 26732}, + {"name": "NAD27 / Alaska zone 3", "code": 26733}, + {"name": "NAD27 / Alaska zone 4", "code": 26734}, + {"name": "NAD27 / Alaska zone 5", "code": 26735}, + {"name": "NAD27 / Alaska zone 6", "code": 26736}, + {"name": "NAD27 / Alaska zone 7", "code": 26737}, + {"name": "NAD27 / Alaska zone 8", "code": 26738}, + {"name": "NAD27 / Alaska zone 9", "code": 26739}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 40", "code": 2674}, + {"name": "NAD27 / Alaska zone 10", "code": 26740}, + {"name": "NAD27 / California zone I", "code": 26741}, + {"name": "NAD27 / California zone II", "code": 26742}, + {"name": "NAD27 / California zone III", "code": 26743}, + {"name": "NAD27 / California zone IV", "code": 26744}, + {"name": "NAD27 / California zone V", "code": 26745}, + {"name": "NAD27 / California zone VI", "code": 26746}, + {"name": "NAD27 / California zone VII", "code": 26747}, + {"name": "NAD27 / Arizona East", "code": 26748}, + {"name": "NAD27 / Arizona Central", "code": 26749}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 41", "code": 2675}, + {"name": "NAD27 / Arizona West", "code": 26750}, + {"name": "NAD27 / Arkansas North", "code": 26751}, + {"name": "NAD27 / Arkansas South", "code": 26752}, + {"name": "NAD27 / Colorado North", "code": 26753}, + {"name": "NAD27 / Colorado Central", "code": 26754}, + {"name": "NAD27 / Colorado South", "code": 26755}, + {"name": "NAD27 / Connecticut", "code": 26756}, + {"name": "NAD27 / Delaware", "code": 26757}, + {"name": "NAD27 / Florida East", "code": 26758}, + {"name": "NAD27 / Florida West", "code": 26759}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 42", "code": 2676}, + {"name": "NAD27 / Florida North", "code": 26760}, + {"name": "NAD27 / Georgia East", "code": 26766}, + {"name": "NAD27 / Georgia West", "code": 26767}, + {"name": "NAD27 / Idaho East", "code": 26768}, + {"name": "NAD27 / Idaho Central", "code": 26769}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 43", "code": 2677}, + {"name": "NAD27 / Idaho West", "code": 26770}, + {"name": "NAD27 / Illinois East", "code": 26771}, + {"name": "NAD27 / Illinois West", "code": 26772}, + {"name": "NAD27 / Indiana East", "code": 26773}, + {"name": "NAD27 / Indiana West", "code": 26774}, + {"name": "NAD27 / Iowa North", "code": 26775}, + {"name": "NAD27 / Iowa South", "code": 26776}, + {"name": "NAD27 / Kansas North", "code": 26777}, + {"name": "NAD27 / Kansas South", "code": 26778}, + {"name": "NAD27 / Kentucky North", "code": 26779}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 44", "code": 2678}, + {"name": "NAD27 / Kentucky South", "code": 26780}, + {"name": "NAD27 / Louisiana North", "code": 26781}, + {"name": "NAD27 / Louisiana South", "code": 26782}, + {"name": "NAD27 / Maine East", "code": 26783}, + {"name": "NAD27 / Maine West", "code": 26784}, + {"name": "NAD27 / Maryland", "code": 26785}, + {"name": "NAD27 / Massachusetts Mainland", "code": 26786}, + {"name": "NAD27 / Massachusetts Island", "code": 26787}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 45", "code": 2679}, + {"name": "NAD27 / Minnesota North", "code": 26791}, + {"name": "NAD27 / Minnesota Central", "code": 26792}, + {"name": "NAD27 / Minnesota South", "code": 26793}, + {"name": "NAD27 / Mississippi East", "code": 26794}, + {"name": "NAD27 / Mississippi West", "code": 26795}, + {"name": "NAD27 / Missouri East", "code": 26796}, + {"name": "NAD27 / Missouri Central", "code": 26797}, + {"name": "NAD27 / Missouri West", "code": 26798}, + {"name": "NAD27 / California zone VII", "code": 26799}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 46", "code": 2680}, + {"name": "NAD Michigan / Michigan East", "code": 26801}, + {"name": "NAD Michigan / Michigan Old Central", "code": 26802}, + {"name": "NAD Michigan / Michigan West", "code": 26803}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 47", "code": 2681}, + {"name": "NAD Michigan / Michigan North", "code": 26811}, + {"name": "NAD Michigan / Michigan Central", "code": 26812}, + {"name": "NAD Michigan / Michigan South", "code": 26813}, + {"name": "NAD83 / Maine East (ftUS)", "code": 26814}, + {"name": "NAD83 / Maine West (ftUS)", "code": 26815}, + {"name": "NAD83 / Minnesota North (ftUS)", "code": 26819}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 48", "code": 2682}, + {"name": "NAD83 / Minnesota Central (ftUS)", "code": 26820}, + {"name": "NAD83 / Minnesota South (ftUS)", "code": 26821}, + {"name": "NAD83 / Nebraska (ftUS)", "code": 26822}, + {"name": "NAD83 / West Virginia North (ftUS)", "code": 26823}, + {"name": "NAD83 / West Virginia South (ftUS)", "code": 26824}, + {"name": "NAD83(HARN) / Maine East (ftUS)", "code": 26825}, + {"name": "NAD83(HARN) / Maine West (ftUS)", "code": 26826}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 49", "code": 2683}, + {"name": "NAD83(HARN) / Minnesota North (ftUS)", "code": 26830}, + {"name": "NAD83(HARN) / Minnesota Central (ftUS)", "code": 26831}, + {"name": "NAD83(HARN) / Minnesota South (ftUS)", "code": 26832}, + {"name": "NAD83(HARN) / Nebraska (ftUS)", "code": 26833}, + {"name": "NAD83(HARN) / West Virginia North (ftUS)", "code": 26834}, + {"name": "NAD83(HARN) / West Virginia South (ftUS)", "code": 26835}, + {"name": "NAD83(NSRS2007) / Maine East (ftUS)", "code": 26836}, + {"name": "NAD83(NSRS2007) / Maine West (ftUS)", "code": 26837}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 50", "code": 2684}, + {"name": "NAD83(NSRS2007) / Minnesota North (ftUS)", "code": 26841}, + {"name": "NAD83(NSRS2007) / Minnesota Central (ftUS)", "code": 26842}, + {"name": "NAD83(NSRS2007) / Minnesota South (ftUS)", "code": 26843}, + {"name": "NAD83(NSRS2007) / Nebraska (ftUS)", "code": 26844}, + {"name": "NAD83(NSRS2007) / West Virginia North (ftUS)", "code": 26845}, + {"name": "NAD83(NSRS2007) / West Virginia South (ftUS)", "code": 26846}, + {"name": "NAD83 / Maine East (ftUS)", "code": 26847}, + {"name": "NAD83 / Maine West (ftUS)", "code": 26848}, + {"name": "NAD83 / Minnesota North (ftUS)", "code": 26849}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 51", "code": 2685}, + {"name": "NAD83 / Minnesota Central (ftUS)", "code": 26850}, + {"name": "NAD83 / Minnesota South (ftUS)", "code": 26851}, + {"name": "NAD83 / Nebraska (ftUS)", "code": 26852}, + {"name": "NAD83 / West Virginia North (ftUS)", "code": 26853}, + {"name": "NAD83 / West Virginia South (ftUS)", "code": 26854}, + {"name": "NAD83(HARN) / Maine East (ftUS)", "code": 26855}, + {"name": "NAD83(HARN) / Maine West (ftUS)", "code": 26856}, + {"name": "NAD83(HARN) / Minnesota North (ftUS)", "code": 26857}, + {"name": "NAD83(HARN) / Minnesota Central (ftUS)", "code": 26858}, + {"name": "NAD83(HARN) / Minnesota South (ftUS)", "code": 26859}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 52", "code": 2686}, + {"name": "NAD83(HARN) / Nebraska (ftUS)", "code": 26860}, + {"name": "NAD83(HARN) / West Virginia North (ftUS)", "code": 26861}, + {"name": "NAD83(HARN) / West Virginia South (ftUS)", "code": 26862}, + {"name": "NAD83(NSRS2007) / Maine East (ftUS)", "code": 26863}, + {"name": "NAD83(NSRS2007) / Maine West (ftUS)", "code": 26864}, + {"name": "NAD83(NSRS2007) / Minnesota North (ftUS)", "code": 26865}, + {"name": "NAD83(NSRS2007) / Minnesota Central (ftUS)", "code": 26866}, + {"name": "NAD83(NSRS2007) / Minnesota South (ftUS)", "code": 26867}, + {"name": "NAD83(NSRS2007) / Nebraska (ftUS)", "code": 26868}, + {"name": "NAD83(NSRS2007) / West Virginia North (ftUS)", "code": 26869}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 53", "code": 2687}, + {"name": "NAD83(NSRS2007) / West Virginia South (ftUS)", "code": 26870}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 54", "code": 2688}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 55", "code": 2689}, + {"name": "NAD83(CSRS) / MTM zone 11", "code": 26891}, + {"name": "NAD83(CSRS) / MTM zone 12", "code": 26892}, + {"name": "NAD83(CSRS) / MTM zone 13", "code": 26893}, + {"name": "NAD83(CSRS) / MTM zone 14", "code": 26894}, + {"name": "NAD83(CSRS) / MTM zone 15", "code": 26895}, + {"name": "NAD83(CSRS) / MTM zone 16", "code": 26896}, + {"name": "NAD83(CSRS) / MTM zone 17", "code": 26897}, + {"name": "NAD83(CSRS) / MTM zone 1", "code": 26898}, + {"name": "NAD83(CSRS) / MTM zone 2", "code": 26899}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 56", "code": 2690}, + {"name": "NAD83 / UTM zone 1N", "code": 26901}, + {"name": "NAD83 / UTM zone 2N", "code": 26902}, + {"name": "NAD83 / UTM zone 3N", "code": 26903}, + {"name": "NAD83 / UTM zone 4N", "code": 26904}, + {"name": "NAD83 / UTM zone 5N", "code": 26905}, + {"name": "NAD83 / UTM zone 6N", "code": 26906}, + {"name": "NAD83 / UTM zone 7N", "code": 26907}, + {"name": "NAD83 / UTM zone 8N", "code": 26908}, + {"name": "NAD83 / UTM zone 9N", "code": 26909}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 57", "code": 2691}, + {"name": "NAD83 / UTM zone 10N", "code": 26910}, + {"name": "NAD83 / UTM zone 11N", "code": 26911}, + {"name": "NAD83 / UTM zone 12N", "code": 26912}, + {"name": "NAD83 / UTM zone 13N", "code": 26913}, + {"name": "NAD83 / UTM zone 14N", "code": 26914}, + {"name": "NAD83 / UTM zone 15N", "code": 26915}, + {"name": "NAD83 / UTM zone 16N", "code": 26916}, + {"name": "NAD83 / UTM zone 17N", "code": 26917}, + {"name": "NAD83 / UTM zone 18N", "code": 26918}, + {"name": "NAD83 / UTM zone 19N", "code": 26919}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 58", "code": 2692}, + {"name": "NAD83 / UTM zone 20N", "code": 26920}, + {"name": "NAD83 / UTM zone 21N", "code": 26921}, + {"name": "NAD83 / UTM zone 22N", "code": 26922}, + {"name": "NAD83 / UTM zone 23N", "code": 26923}, + {"name": "NAD83 / Alabama East", "code": 26929}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 59", "code": 2693}, + {"name": "NAD83 / Alabama West", "code": 26930}, + {"name": "NAD83 / Alaska zone 1", "code": 26931}, + {"name": "NAD83 / Alaska zone 2", "code": 26932}, + {"name": "NAD83 / Alaska zone 3", "code": 26933}, + {"name": "NAD83 / Alaska zone 4", "code": 26934}, + {"name": "NAD83 / Alaska zone 5", "code": 26935}, + {"name": "NAD83 / Alaska zone 6", "code": 26936}, + {"name": "NAD83 / Alaska zone 7", "code": 26937}, + {"name": "NAD83 / Alaska zone 8", "code": 26938}, + {"name": "NAD83 / Alaska zone 9", "code": 26939}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 60", "code": 2694}, + {"name": "NAD83 / Alaska zone 10", "code": 26940}, + {"name": "NAD83 / California zone 1", "code": 26941}, + {"name": "NAD83 / California zone 2", "code": 26942}, + {"name": "NAD83 / California zone 3", "code": 26943}, + {"name": "NAD83 / California zone 4", "code": 26944}, + {"name": "NAD83 / California zone 5", "code": 26945}, + {"name": "NAD83 / California zone 6", "code": 26946}, + {"name": "NAD83 / Arizona East", "code": 26948}, + {"name": "NAD83 / Arizona Central", "code": 26949}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 61", "code": 2695}, + {"name": "NAD83 / Arizona West", "code": 26950}, + {"name": "NAD83 / Arkansas North", "code": 26951}, + {"name": "NAD83 / Arkansas South", "code": 26952}, + {"name": "NAD83 / Colorado North", "code": 26953}, + {"name": "NAD83 / Colorado Central", "code": 26954}, + {"name": "NAD83 / Colorado South", "code": 26955}, + {"name": "NAD83 / Connecticut", "code": 26956}, + {"name": "NAD83 / Delaware", "code": 26957}, + {"name": "NAD83 / Florida East", "code": 26958}, + {"name": "NAD83 / Florida West", "code": 26959}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 62", "code": 2696}, + {"name": "NAD83 / Florida North", "code": 26960}, + {"name": "NAD83 / Hawaii zone 1", "code": 26961}, + {"name": "NAD83 / Hawaii zone 2", "code": 26962}, + {"name": "NAD83 / Hawaii zone 3", "code": 26963}, + {"name": "NAD83 / Hawaii zone 4", "code": 26964}, + {"name": "NAD83 / Hawaii zone 5", "code": 26965}, + {"name": "NAD83 / Georgia East", "code": 26966}, + {"name": "NAD83 / Georgia West", "code": 26967}, + {"name": "NAD83 / Idaho East", "code": 26968}, + {"name": "NAD83 / Idaho Central", "code": 26969}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 63", "code": 2697}, + {"name": "NAD83 / Idaho West", "code": 26970}, + {"name": "NAD83 / Illinois East", "code": 26971}, + {"name": "NAD83 / Illinois West", "code": 26972}, + {"name": "NAD83 / Indiana East", "code": 26973}, + {"name": "NAD83 / Indiana West", "code": 26974}, + {"name": "NAD83 / Iowa North", "code": 26975}, + {"name": "NAD83 / Iowa South", "code": 26976}, + {"name": "NAD83 / Kansas North", "code": 26977}, + {"name": "NAD83 / Kansas South", "code": 26978}, + {"name": "NAD83 / Kentucky North", "code": 26979}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 64", "code": 2698}, + {"name": "NAD83 / Kentucky South", "code": 26980}, + {"name": "NAD83 / Louisiana North", "code": 26981}, + {"name": "NAD83 / Louisiana South", "code": 26982}, + {"name": "NAD83 / Maine East", "code": 26983}, + {"name": "NAD83 / Maine West", "code": 26984}, + {"name": "NAD83 / Maryland", "code": 26985}, + {"name": "NAD83 / Massachusetts Mainland", "code": 26986}, + {"name": "NAD83 / Massachusetts Island", "code": 26987}, + {"name": "NAD83 / Michigan North", "code": 26988}, + {"name": "NAD83 / Michigan Central", "code": 26989}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 21E", "code": 2699}, + {"name": "NAD83 / Michigan South", "code": 26990}, + {"name": "NAD83 / Minnesota North", "code": 26991}, + {"name": "NAD83 / Minnesota Central", "code": 26992}, + {"name": "NAD83 / Minnesota South", "code": 26993}, + {"name": "NAD83 / Mississippi East", "code": 26994}, + {"name": "NAD83 / Mississippi West", "code": 26995}, + {"name": "NAD83 / Missouri East", "code": 26996}, + {"name": "NAD83 / Missouri Central", "code": 26997}, + {"name": "NAD83 / Missouri West", "code": 26998}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 24E", "code": 2700}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 27E", "code": 2701}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 30E", "code": 2702}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 33E", "code": 2703}, + {"name": "Nahrwan 1967 / UTM zone 37N", "code": 27037}, + {"name": "Nahrwan 1967 / UTM zone 38N", "code": 27038}, + {"name": "Nahrwan 1967 / UTM zone 39N", "code": 27039}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 36E", "code": 2704}, + {"name": "Nahrwan 1967 / UTM zone 40N", "code": 27040}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 39E", "code": 2705}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 42E", "code": 2706}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 45E", "code": 2707}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 48E", "code": 2708}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 51E", "code": 2709}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 54E", "code": 2710}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 57E", "code": 2711}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 60E", "code": 2712}, + {"name": "Naparima 1972 / UTM zone 20N", "code": 27120}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 63E", "code": 2713}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 66E", "code": 2714}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 69E", "code": 2715}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 72E", "code": 2716}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 75E", "code": 2717}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 78E", "code": 2718}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 81E", "code": 2719}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 84E", "code": 2720}, + {"name": "NZGD49 / New Zealand Map Grid", "code": 27200}, + {"name": "NZGD49 / Mount Eden Circuit", "code": 27205}, + {"name": "NZGD49 / Bay of Plenty Circuit", "code": 27206}, + {"name": "NZGD49 / Poverty Bay Circuit", "code": 27207}, + {"name": "NZGD49 / Hawkes Bay Circuit", "code": 27208}, + {"name": "NZGD49 / Taranaki Circuit", "code": 27209}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 87E", "code": 2721}, + {"name": "NZGD49 / Tuhirangi Circuit", "code": 27210}, + {"name": "NZGD49 / Wanganui Circuit", "code": 27211}, + {"name": "NZGD49 / Wairarapa Circuit", "code": 27212}, + {"name": "NZGD49 / Wellington Circuit", "code": 27213}, + {"name": "NZGD49 / Collingwood Circuit", "code": 27214}, + {"name": "NZGD49 / Nelson Circuit", "code": 27215}, + {"name": "NZGD49 / Karamea Circuit", "code": 27216}, + {"name": "NZGD49 / Buller Circuit", "code": 27217}, + {"name": "NZGD49 / Grey Circuit", "code": 27218}, + {"name": "NZGD49 / Amuri Circuit", "code": 27219}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 90E", "code": 2722}, + {"name": "NZGD49 / Marlborough Circuit", "code": 27220}, + {"name": "NZGD49 / Hokitika Circuit", "code": 27221}, + {"name": "NZGD49 / Okarito Circuit", "code": 27222}, + {"name": "NZGD49 / Jacksons Bay Circuit", "code": 27223}, + {"name": "NZGD49 / Mount Pleasant Circuit", "code": 27224}, + {"name": "NZGD49 / Gawler Circuit", "code": 27225}, + {"name": "NZGD49 / Timaru Circuit", "code": 27226}, + {"name": "NZGD49 / Lindis Peak Circuit", "code": 27227}, + {"name": "NZGD49 / Mount Nicholas Circuit", "code": 27228}, + {"name": "NZGD49 / Mount York Circuit", "code": 27229}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 93E", "code": 2723}, + {"name": "NZGD49 / Observation Point Circuit", "code": 27230}, + {"name": "NZGD49 / North Taieri Circuit", "code": 27231}, + {"name": "NZGD49 / Bluff Circuit", "code": 27232}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 96E", "code": 2724}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 99E", "code": 2725}, + {"name": "NZGD49 / UTM zone 58S", "code": 27258}, + {"name": "NZGD49 / UTM zone 59S", "code": 27259}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 102E", "code": 2726}, + {"name": "NZGD49 / UTM zone 60S", "code": 27260}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 105E", "code": 2727}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 108E", "code": 2728}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 111E", "code": 2729}, + {"name": "NZGD49 / North Island Grid", "code": 27291}, + {"name": "NZGD49 / South Island Grid", "code": 27292}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 114E", "code": 2730}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 117E", "code": 2731}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 120E", "code": 2732}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 123E", "code": 2733}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 126E", "code": 2734}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 129E", "code": 2735}, + {"name": "Tete / UTM zone 36S", "code": 2736}, + {"name": "Tete / UTM zone 37S", "code": 2737}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 132E", "code": 2738}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 135E", "code": 2739}, + {"name": "NGO 1948 (Oslo) / NGO zone I", "code": 27391}, + {"name": "NGO 1948 (Oslo) / NGO zone II", "code": 27392}, + {"name": "NGO 1948 (Oslo) / NGO zone III", "code": 27393}, + {"name": "NGO 1948 (Oslo) / NGO zone IV", "code": 27394}, + {"name": "NGO 1948 (Oslo) / NGO zone V", "code": 27395}, + {"name": "NGO 1948 (Oslo) / NGO zone VI", "code": 27396}, + {"name": "NGO 1948 (Oslo) / NGO zone VII", "code": 27397}, + {"name": "NGO 1948 (Oslo) / NGO zone VIII", "code": 27398}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 138E", "code": 2740}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 141E", "code": 2741}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 144E", "code": 2742}, + {"name": "Datum 73 / UTM zone 29N", "code": 27429}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 147E", "code": 2743}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 150E", "code": 2744}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 153E", "code": 2745}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 156E", "code": 2746}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 159E", "code": 2747}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 162E", "code": 2748}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 165E", "code": 2749}, + {"name": "Datum 73 / Modified Portuguese Grid", "code": 27492}, + {"name": "Datum 73 / Modified Portuguese Grid", "code": 27493}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 168E", "code": 2750}, + {"name": "ATF (Paris) / Nord de Guerre", "code": 27500}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 171E", "code": 2751}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 174E", "code": 2752}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 177E", "code": 2753}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 180E", "code": 2754}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 177W", "code": 2755}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 174W", "code": 2756}, + {"name": "NTF (Paris) / Lambert Nord France", "code": 27561}, + {"name": "NTF (Paris) / Lambert Centre France", "code": 27562}, + {"name": "NTF (Paris) / Lambert Sud France", "code": 27563}, + {"name": "NTF (Paris) / Lambert Corse", "code": 27564}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 171W", "code": 2757}, + {"name": "NTF (Paris) / Lambert zone I", "code": 27571}, + {"name": "NTF (Paris) / Lambert zone II", "code": 27572}, + {"name": "NTF (Paris) / Lambert zone III", "code": 27573}, + {"name": "NTF (Paris) / Lambert zone IV", "code": 27574}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 168W", "code": 2758}, + {"name": "NTF (Paris) / France I", "code": 27581}, + {"name": "NTF (Paris) / France II", "code": 27582}, + {"name": "NTF (Paris) / France III", "code": 27583}, + {"name": "NTF (Paris) / France IV", "code": 27584}, + {"name": "NAD83(HARN) / Alabama East", "code": 2759}, + {"name": "NTF (Paris) / Nord France", "code": 27591}, + {"name": "NTF (Paris) / Centre France", "code": 27592}, + {"name": "NTF (Paris) / Sud France", "code": 27593}, + {"name": "NTF (Paris) / Corse", "code": 27594}, + {"name": "NAD83(HARN) / Alabama West", "code": 2760}, + {"name": "NAD83(HARN) / Arizona East", "code": 2761}, + {"name": "NAD83(HARN) / Arizona Central", "code": 2762}, + {"name": "NAD83(HARN) / Arizona West", "code": 2763}, + {"name": "NAD83(HARN) / Arkansas North", "code": 2764}, + {"name": "NAD83(HARN) / Arkansas South", "code": 2765}, + {"name": "NAD83(HARN) / California zone 1", "code": 2766}, + {"name": "NAD83(HARN) / California zone 2", "code": 2767}, + {"name": "NAD83(HARN) / California zone 3", "code": 2768}, + {"name": "NAD83(HARN) / California zone 4", "code": 2769}, + {"name": "NAD83(HARN) / California zone 5", "code": 2770}, + {"name": "OSGB 1936 / British National Grid", "code": 27700}, + {"name": "NAD83(HARN) / California zone 6", "code": 2771}, + {"name": "NAD83(HARN) / Colorado North", "code": 2772}, + {"name": "NAD83(HARN) / Colorado Central", "code": 2773}, + {"name": "NAD83(HARN) / Colorado South", "code": 2774}, + {"name": "NAD83(HARN) / Connecticut", "code": 2775}, + {"name": "NAD83(HARN) / Delaware", "code": 2776}, + {"name": "NAD83(HARN) / Florida East", "code": 2777}, + {"name": "NAD83(HARN) / Florida West", "code": 2778}, + {"name": "NAD83(HARN) / Florida North", "code": 2779}, + {"name": "NAD83(HARN) / Georgia East", "code": 2780}, + {"name": "NAD83(HARN) / Georgia West", "code": 2781}, + {"name": "NAD83(HARN) / Hawaii zone 1", "code": 2782}, + {"name": "NAD83(HARN) / Hawaii zone 2", "code": 2783}, + {"name": "NAD83(HARN) / Hawaii zone 3", "code": 2784}, + {"name": "NAD83(HARN) / Hawaii zone 4", "code": 2785}, + {"name": "NAD83(HARN) / Hawaii zone 5", "code": 2786}, + {"name": "NAD83(HARN) / Idaho East", "code": 2787}, + {"name": "NAD83(HARN) / Idaho Central", "code": 2788}, + {"name": "NAD83(HARN) / Idaho West", "code": 2789}, + {"name": "NAD83(HARN) / Illinois East", "code": 2790}, + {"name": "NAD83(HARN) / Illinois West", "code": 2791}, + {"name": "NAD83(HARN) / Indiana East", "code": 2792}, + {"name": "NAD83(HARN) / Indiana West", "code": 2793}, + {"name": "NAD83(HARN) / Iowa North", "code": 2794}, + {"name": "NAD83(HARN) / Iowa South", "code": 2795}, + {"name": "NAD83(HARN) / Kansas North", "code": 2796}, + {"name": "NAD83(HARN) / Kansas South", "code": 2797}, + {"name": "NAD83(HARN) / Kentucky North", "code": 2798}, + {"name": "NAD83(HARN) / Kentucky South", "code": 2799}, + {"name": "NAD83(HARN) / Louisiana North", "code": 2800}, + {"name": "NAD83(HARN) / Louisiana South", "code": 2801}, + {"name": "NAD83(HARN) / Maine East", "code": 2802}, + {"name": "NAD83(HARN) / Maine West", "code": 2803}, + {"name": "NAD83(HARN) / Maryland", "code": 2804}, + {"name": "NAD83(HARN) / Massachusetts Mainland", "code": 2805}, + {"name": "NAD83(HARN) / Massachusetts Island", "code": 2806}, + {"name": "NAD83(HARN) / Michigan North", "code": 2807}, + {"name": "NAD83(HARN) / Michigan Central", "code": 2808}, + {"name": "NAD83(HARN) / Michigan South", "code": 2809}, + {"name": "NAD83(HARN) / Minnesota North", "code": 2810}, + {"name": "NAD83(HARN) / Minnesota Central", "code": 2811}, + {"name": "NAD83(HARN) / Minnesota South", "code": 2812}, + {"name": "NAD83(HARN) / Mississippi East", "code": 2813}, + {"name": "NAD83(HARN) / Mississippi West", "code": 2814}, + {"name": "NAD83(HARN) / Missouri East", "code": 2815}, + {"name": "NAD83(HARN) / Missouri Central", "code": 2816}, + {"name": "NAD83(HARN) / Missouri West", "code": 2817}, + {"name": "NAD83(HARN) / Montana", "code": 2818}, + {"name": "NAD83(HARN) / Nebraska", "code": 2819}, + {"name": "Palestine 1923 / Palestine Grid", "code": 28191}, + {"name": "Palestine 1923 / Palestine Belt", "code": 28192}, + {"name": "Palestine 1923 / Israeli CS Grid", "code": 28193}, + {"name": "NAD83(HARN) / Nevada East", "code": 2820}, + {"name": "NAD83(HARN) / Nevada Central", "code": 2821}, + {"name": "NAD83(HARN) / Nevada West", "code": 2822}, + {"name": "NAD83(HARN) / New Hampshire", "code": 2823}, + {"name": "Pointe Noire / UTM zone 32S", "code": 28232}, + {"name": "NAD83(HARN) / New Jersey", "code": 2824}, + {"name": "NAD83(HARN) / New Mexico East", "code": 2825}, + {"name": "NAD83(HARN) / New Mexico Central", "code": 2826}, + {"name": "NAD83(HARN) / New Mexico West", "code": 2827}, + {"name": "NAD83(HARN) / New York East", "code": 2828}, + {"name": "NAD83(HARN) / New York Central", "code": 2829}, + {"name": "NAD83(HARN) / New York West", "code": 2830}, + {"name": "NAD83(HARN) / New York Long Island", "code": 2831}, + {"name": "NAD83(HARN) / North Dakota North", "code": 2832}, + {"name": "NAD83(HARN) / North Dakota South", "code": 2833}, + {"name": "NAD83(HARN) / Ohio North", "code": 2834}, + {"name": "GDA94 / MGA zone 48", "code": 28348}, + {"name": "GDA94 / MGA zone 49", "code": 28349}, + {"name": "NAD83(HARN) / Ohio South", "code": 2835}, + {"name": "GDA94 / MGA zone 50", "code": 28350}, + {"name": "GDA94 / MGA zone 51", "code": 28351}, + {"name": "GDA94 / MGA zone 52", "code": 28352}, + {"name": "GDA94 / MGA zone 53", "code": 28353}, + {"name": "GDA94 / MGA zone 54", "code": 28354}, + {"name": "GDA94 / MGA zone 55", "code": 28355}, + {"name": "GDA94 / MGA zone 56", "code": 28356}, + {"name": "GDA94 / MGA zone 57", "code": 28357}, + {"name": "GDA94 / MGA zone 58", "code": 28358}, + {"name": "NAD83(HARN) / Oklahoma North", "code": 2836}, + {"name": "NAD83(HARN) / Oklahoma South", "code": 2837}, + {"name": "NAD83(HARN) / Oregon North", "code": 2838}, + {"name": "NAD83(HARN) / Oregon South", "code": 2839}, + {"name": "NAD83(HARN) / Rhode Island", "code": 2840}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 2", "code": 28402}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 3", "code": 28403}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 4", "code": 28404}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 5", "code": 28405}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 6", "code": 28406}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 7", "code": 28407}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 8", "code": 28408}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 9", "code": 28409}, + {"name": "NAD83(HARN) / South Dakota North", "code": 2841}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 10", "code": 28410}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 11", "code": 28411}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 12", "code": 28412}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 13", "code": 28413}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 14", "code": 28414}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 15", "code": 28415}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 16", "code": 28416}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 17", "code": 28417}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 18", "code": 28418}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 19", "code": 28419}, + {"name": "NAD83(HARN) / South Dakota South", "code": 2842}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 20", "code": 28420}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 21", "code": 28421}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 22", "code": 28422}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 23", "code": 28423}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 24", "code": 28424}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 25", "code": 28425}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 26", "code": 28426}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 27", "code": 28427}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 28", "code": 28428}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 29", "code": 28429}, + {"name": "NAD83(HARN) / Tennessee", "code": 2843}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 30", "code": 28430}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 31", "code": 28431}, + {"name": "Pulkovo 1942 / Gauss-Kruger zone 32", "code": 28432}, + {"name": "NAD83(HARN) / Texas North", "code": 2844}, + {"name": "NAD83(HARN) / Texas North Central", "code": 2845}, + {"name": "NAD83(HARN) / Texas Central", "code": 2846}, + {"name": "Pulkovo 1942 / Gauss-Kruger 2N", "code": 28462}, + {"name": "Pulkovo 1942 / Gauss-Kruger 3N", "code": 28463}, + {"name": "Pulkovo 1942 / Gauss-Kruger 4N", "code": 28464}, + {"name": "Pulkovo 1942 / Gauss-Kruger 5N", "code": 28465}, + {"name": "Pulkovo 1942 / Gauss-Kruger 6N", "code": 28466}, + {"name": "Pulkovo 1942 / Gauss-Kruger 7N", "code": 28467}, + {"name": "Pulkovo 1942 / Gauss-Kruger 8N", "code": 28468}, + {"name": "Pulkovo 1942 / Gauss-Kruger 9N", "code": 28469}, + {"name": "NAD83(HARN) / Texas South Central", "code": 2847}, + {"name": "Pulkovo 1942 / Gauss-Kruger 10N", "code": 28470}, + {"name": "Pulkovo 1942 / Gauss-Kruger 11N", "code": 28471}, + {"name": "Pulkovo 1942 / Gauss-Kruger 12N", "code": 28472}, + {"name": "Pulkovo 1942 / Gauss-Kruger 13N", "code": 28473}, + {"name": "Pulkovo 1942 / Gauss-Kruger 14N", "code": 28474}, + {"name": "Pulkovo 1942 / Gauss-Kruger 15N", "code": 28475}, + {"name": "Pulkovo 1942 / Gauss-Kruger 16N", "code": 28476}, + {"name": "Pulkovo 1942 / Gauss-Kruger 17N", "code": 28477}, + {"name": "Pulkovo 1942 / Gauss-Kruger 18N", "code": 28478}, + {"name": "Pulkovo 1942 / Gauss-Kruger 19N", "code": 28479}, + {"name": "NAD83(HARN) / Texas South", "code": 2848}, + {"name": "Pulkovo 1942 / Gauss-Kruger 20N", "code": 28480}, + {"name": "Pulkovo 1942 / Gauss-Kruger 21N", "code": 28481}, + {"name": "Pulkovo 1942 / Gauss-Kruger 22N", "code": 28482}, + {"name": "Pulkovo 1942 / Gauss-Kruger 23N", "code": 28483}, + {"name": "Pulkovo 1942 / Gauss-Kruger 24N", "code": 28484}, + {"name": "Pulkovo 1942 / Gauss-Kruger 25N", "code": 28485}, + {"name": "Pulkovo 1942 / Gauss-Kruger 26N", "code": 28486}, + {"name": "Pulkovo 1942 / Gauss-Kruger 27N", "code": 28487}, + {"name": "Pulkovo 1942 / Gauss-Kruger 28N", "code": 28488}, + {"name": "Pulkovo 1942 / Gauss-Kruger 29N", "code": 28489}, + {"name": "NAD83(HARN) / Utah North", "code": 2849}, + {"name": "Pulkovo 1942 / Gauss-Kruger 30N", "code": 28490}, + {"name": "Pulkovo 1942 / Gauss-Kruger 31N", "code": 28491}, + {"name": "Pulkovo 1942 / Gauss-Kruger 32N", "code": 28492}, + {"name": "NAD83(HARN) / Utah Central", "code": 2850}, + {"name": "NAD83(HARN) / Utah South", "code": 2851}, + {"name": "NAD83(HARN) / Vermont", "code": 2852}, + {"name": "NAD83(HARN) / Virginia North", "code": 2853}, + {"name": "NAD83(HARN) / Virginia South", "code": 2854}, + {"name": "NAD83(HARN) / Washington North", "code": 2855}, + {"name": "NAD83(HARN) / Washington South", "code": 2856}, + {"name": "NAD83(HARN) / West Virginia North", "code": 2857}, + {"name": "NAD83(HARN) / West Virginia South", "code": 2858}, + {"name": "NAD83(HARN) / Wisconsin North", "code": 2859}, + {"name": "NAD83(HARN) / Wisconsin Central", "code": 2860}, + {"name": "Qatar 1974 / Qatar National Grid", "code": 28600}, + {"name": "NAD83(HARN) / Wisconsin South", "code": 2861}, + {"name": "NAD83(HARN) / Wyoming East", "code": 2862}, + {"name": "NAD83(HARN) / Wyoming East Central", "code": 2863}, + {"name": "NAD83(HARN) / Wyoming West Central", "code": 2864}, + {"name": "NAD83(HARN) / Wyoming West", "code": 2865}, + {"name": "NAD83(HARN) / Puerto Rico and Virgin Is.", "code": 2866}, + {"name": "NAD83(HARN) / Arizona East (ft)", "code": 2867}, + {"name": "NAD83(HARN) / Arizona Central (ft)", "code": 2868}, + {"name": "NAD83(HARN) / Arizona West (ft)", "code": 2869}, + {"name": "NAD83(HARN) / California zone 1 (ftUS)", "code": 2870}, + {"name": "NAD83(HARN) / California zone 2 (ftUS)", "code": 2871}, + {"name": "NAD83(HARN) / California zone 3 (ftUS)", "code": 2872}, + {"name": "NAD83(HARN) / California zone 4 (ftUS)", "code": 2873}, + {"name": "NAD83(HARN) / California zone 5 (ftUS)", "code": 2874}, + {"name": "NAD83(HARN) / California zone 6 (ftUS)", "code": 2875}, + {"name": "NAD83(HARN) / Colorado North (ftUS)", "code": 2876}, + {"name": "NAD83(HARN) / Colorado Central (ftUS)", "code": 2877}, + {"name": "NAD83(HARN) / Colorado South (ftUS)", "code": 2878}, + {"name": "NAD83(HARN) / Connecticut (ftUS)", "code": 2879}, + {"name": "NAD83(HARN) / Delaware (ftUS)", "code": 2880}, + {"name": "NAD83(HARN) / Florida East (ftUS)", "code": 2881}, + {"name": "NAD83(HARN) / Florida West (ftUS)", "code": 2882}, + {"name": "NAD83(HARN) / Florida North (ftUS)", "code": 2883}, + {"name": "NAD83(HARN) / Georgia East (ftUS)", "code": 2884}, + {"name": "NAD83(HARN) / Georgia West (ftUS)", "code": 2885}, + {"name": "NAD83(HARN) / Idaho East (ftUS)", "code": 2886}, + {"name": "NAD83(HARN) / Idaho Central (ftUS)", "code": 2887}, + {"name": "NAD83(HARN) / Idaho West (ftUS)", "code": 2888}, + {"name": "NAD83(HARN) / Indiana East (ftUS)", "code": 2889}, + {"name": "NAD83(HARN) / Indiana West (ftUS)", "code": 2890}, + {"name": "NAD83(HARN) / Kentucky North (ftUS)", "code": 2891}, + {"name": "NAD83(HARN) / Kentucky South (ftUS)", "code": 2892}, + {"name": "NAD83(HARN) / Maryland (ftUS)", "code": 2893}, + {"name": "NAD83(HARN) / Massachusetts Mainland (ftUS)", "code": 2894}, + {"name": "NAD83(HARN) / Massachusetts Island (ftUS)", "code": 2895}, + {"name": "NAD83(HARN) / Michigan North (ft)", "code": 2896}, + {"name": "NAD83(HARN) / Michigan Central (ft)", "code": 2897}, + {"name": "NAD83(HARN) / Michigan South (ft)", "code": 2898}, + {"name": "NAD83(HARN) / Mississippi East (ftUS)", "code": 2899}, + {"name": "Amersfoort / RD Old", "code": 28991}, + {"name": "Amersfoort / RD New", "code": 28992}, + {"name": "NAD83(HARN) / Mississippi West (ftUS)", "code": 2900}, + {"name": "NAD83(HARN) / Montana (ft)", "code": 2901}, + {"name": "NAD83(HARN) / New Mexico East (ftUS)", "code": 2902}, + {"name": "NAD83(HARN) / New Mexico Central (ftUS)", "code": 2903}, + {"name": "NAD83(HARN) / New Mexico West (ftUS)", "code": 2904}, + {"name": "NAD83(HARN) / New York East (ftUS)", "code": 2905}, + {"name": "NAD83(HARN) / New York Central (ftUS)", "code": 2906}, + {"name": "NAD83(HARN) / New York West (ftUS)", "code": 2907}, + {"name": "NAD83(HARN) / New York Long Island (ftUS)", "code": 2908}, + {"name": "NAD83(HARN) / North Dakota North (ft)", "code": 2909}, + {"name": "NAD83(HARN) / North Dakota South (ft)", "code": 2910}, + {"name": "SAD69 / Brazil Polyconic", "code": 29100}, + {"name": "SAD69 / Brazil Polyconic", "code": 29101}, + {"name": "NAD83(HARN) / Oklahoma North (ftUS)", "code": 2911}, + {"name": "SAD69 / UTM zone 18N", "code": 29118}, + {"name": "SAD69 / UTM zone 19N", "code": 29119}, + {"name": "NAD83(HARN) / Oklahoma South (ftUS)", "code": 2912}, + {"name": "SAD69 / UTM zone 20N", "code": 29120}, + {"name": "SAD69 / UTM zone 21N", "code": 29121}, + {"name": "SAD69 / UTM zone 22N", "code": 29122}, + {"name": "NAD83(HARN) / Oregon North (ft)", "code": 2913}, + {"name": "NAD83(HARN) / Oregon South (ft)", "code": 2914}, + {"name": "NAD83(HARN) / Tennessee (ftUS)", "code": 2915}, + {"name": "NAD83(HARN) / Texas North (ftUS)", "code": 2916}, + {"name": "SAD69 / UTM zone 18N", "code": 29168}, + {"name": "SAD69 / UTM zone 19N", "code": 29169}, + {"name": "NAD83(HARN) / Texas North Central (ftUS)", "code": 2917}, + {"name": "SAD69 / UTM zone 20N", "code": 29170}, + {"name": "SAD69 / UTM zone 21N", "code": 29171}, + {"name": "SAD69 / UTM zone 22N", "code": 29172}, + {"name": "SAD69 / UTM zone 17S", "code": 29177}, + {"name": "SAD69 / UTM zone 18S", "code": 29178}, + {"name": "SAD69 / UTM zone 19S", "code": 29179}, + {"name": "NAD83(HARN) / Texas Central (ftUS)", "code": 2918}, + {"name": "SAD69 / UTM zone 20S", "code": 29180}, + {"name": "SAD69 / UTM zone 21S", "code": 29181}, + {"name": "SAD69 / UTM zone 22S", "code": 29182}, + {"name": "SAD69 / UTM zone 23S", "code": 29183}, + {"name": "SAD69 / UTM zone 24S", "code": 29184}, + {"name": "SAD69 / UTM zone 25S", "code": 29185}, + {"name": "SAD69 / UTM zone 17S", "code": 29187}, + {"name": "SAD69 / UTM zone 18S", "code": 29188}, + {"name": "SAD69 / UTM zone 19S", "code": 29189}, + {"name": "NAD83(HARN) / Texas South Central (ftUS)", "code": 2919}, + {"name": "SAD69 / UTM zone 20S", "code": 29190}, + {"name": "SAD69 / UTM zone 21S", "code": 29191}, + {"name": "SAD69 / UTM zone 22S", "code": 29192}, + {"name": "SAD69 / UTM zone 23S", "code": 29193}, + {"name": "SAD69 / UTM zone 24S", "code": 29194}, + {"name": "SAD69 / UTM zone 25S", "code": 29195}, + {"name": "NAD83(HARN) / Texas South (ftUS)", "code": 2920}, + {"name": "NAD83(HARN) / Utah North (ft)", "code": 2921}, + {"name": "NAD83(HARN) / Utah Central (ft)", "code": 2922}, + {"name": "Sapper Hill 1943 / UTM zone 20S", "code": 29220}, + {"name": "Sapper Hill 1943 / UTM zone 21S", "code": 29221}, + {"name": "NAD83(HARN) / Utah South (ft)", "code": 2923}, + {"name": "NAD83(HARN) / Virginia North (ftUS)", "code": 2924}, + {"name": "NAD83(HARN) / Virginia South (ftUS)", "code": 2925}, + {"name": "NAD83(HARN) / Washington North (ftUS)", "code": 2926}, + {"name": "NAD83(HARN) / Washington South (ftUS)", "code": 2927}, + {"name": "NAD83(HARN) / Wisconsin North (ftUS)", "code": 2928}, + {"name": "NAD83(HARN) / Wisconsin Central (ftUS)", "code": 2929}, + {"name": "NAD83(HARN) / Wisconsin South (ftUS)", "code": 2930}, + {"name": "Beduaram / TM 13 NE", "code": 2931}, + {"name": "QND95 / Qatar National Grid", "code": 2932}, + {"name": "Segara / UTM zone 50S", "code": 2933}, + {"name": "Schwarzeck / UTM zone 33S", "code": 29333}, + {"name": "Segara (Jakarta) / NEIEZ", "code": 2934}, + {"name": "Pulkovo 1942 / CS63 zone A1", "code": 2935}, + {"name": "Pulkovo 1942 / CS63 zone A2", "code": 2936}, + {"name": "Pulkovo 1942 / CS63 zone A3", "code": 2937}, + {"name": "Schwarzeck / Lo22/11", "code": 29371}, + {"name": "Schwarzeck / Lo22/13", "code": 29373}, + {"name": "Schwarzeck / Lo22/15", "code": 29375}, + {"name": "Schwarzeck / Lo22/17", "code": 29377}, + {"name": "Schwarzeck / Lo22/19", "code": 29379}, + {"name": "Pulkovo 1942 / CS63 zone A4", "code": 2938}, + {"name": "Schwarzeck / Lo22/21", "code": 29381}, + {"name": "Schwarzeck / Lo22/23", "code": 29383}, + {"name": "Schwarzeck / Lo22/25", "code": 29385}, + {"name": "Pulkovo 1942 / CS63 zone K2", "code": 2939}, + {"name": "Pulkovo 1942 / CS63 zone K3", "code": 2940}, + {"name": "Pulkovo 1942 / CS63 zone K4", "code": 2941}, + {"name": "Porto Santo / UTM zone 28N", "code": 2942}, + {"name": "Selvagem Grande / UTM zone 28N", "code": 2943}, + {"name": "NAD83(CSRS) / SCoPQ zone 2", "code": 2944}, + {"name": "NAD83(CSRS) / MTM zone 3", "code": 2945}, + {"name": "NAD83(CSRS) / MTM zone 4", "code": 2946}, + {"name": "NAD83(CSRS) / MTM zone 5", "code": 2947}, + {"name": "NAD83(CSRS) / MTM zone 6", "code": 2948}, + {"name": "NAD83(CSRS) / MTM zone 7", "code": 2949}, + {"name": "NAD83(CSRS) / MTM zone 8", "code": 2950}, + {"name": "NAD83(CSRS) / MTM zone 9", "code": 2951}, + {"name": "NAD83(CSRS) / MTM zone 10", "code": 2952}, + {"name": "NAD83(CSRS) / New Brunswick Stereographic", "code": 2953}, + {"name": "NAD83(CSRS) / Prince Edward Isl. Stereographic (NAD83)", "code": 2954}, + {"name": "NAD83(CSRS) / UTM zone 11N", "code": 2955}, + {"name": "NAD83(CSRS) / UTM zone 12N", "code": 2956}, + {"name": "NAD83(CSRS) / UTM zone 13N", "code": 2957}, + {"name": "NAD83(CSRS) / UTM zone 17N", "code": 2958}, + {"name": "NAD83(CSRS) / UTM zone 18N", "code": 2959}, + {"name": "NAD83(CSRS) / UTM zone 19N", "code": 2960}, + {"name": "NAD83(CSRS) / UTM zone 20N", "code": 2961}, + {"name": "NAD83(CSRS) / UTM zone 21N", "code": 2962}, + {"name": "Lisbon 1890 (Lisbon) / Portugal Bonne", "code": 2963}, + {"name": "Sudan / UTM zone 35N", "code": 29635}, + {"name": "Sudan / UTM zone 36N", "code": 29636}, + {"name": "NAD27 / Alaska Albers", "code": 2964}, + {"name": "NAD83 / Indiana East (ftUS)", "code": 2965}, + {"name": "NAD83 / Indiana West (ftUS)", "code": 2966}, + {"name": "NAD83(HARN) / Indiana East (ftUS)", "code": 2967}, + {"name": "NAD83(HARN) / Indiana West (ftUS)", "code": 2968}, + {"name": "Fort Marigot / UTM zone 20N", "code": 2969}, + {"name": "Guadeloupe 1948 / UTM zone 20N", "code": 2970}, + {"name": "Tananarive (Paris) / Laborde Grid", "code": 29700}, + {"name": "Tananarive (Paris) / Laborde Grid", "code": 29701}, + {"name": "Tananarive (Paris) / Laborde Grid approximation", "code": 29702}, + {"name": "CSG67 / UTM zone 22N", "code": 2971}, + {"name": "RGFG95 / UTM zone 22N", "code": 2972}, + {"name": "Martinique 1938 / UTM zone 20N", "code": 2973}, + {"name": "Tananarive / UTM zone 38S", "code": 29738}, + {"name": "Tananarive / UTM zone 39S", "code": 29739}, + {"name": "RGR92 / UTM zone 40S", "code": 2975}, + {"name": "Tahiti 52 / UTM zone 6S", "code": 2976}, + {"name": "Tahaa 54 / UTM zone 5S", "code": 2977}, + {"name": "IGN72 Nuku Hiva / UTM zone 7S", "code": 2978}, + {"name": "K0 1949 / UTM zone 42S", "code": 2979}, + {"name": "Combani 1950 / UTM zone 38S", "code": 2980}, + {"name": "IGN56 Lifou / UTM zone 58S", "code": 2981}, + {"name": "IGN72 Grand Terre / UTM zone 58S", "code": 2982}, + {"name": "ST87 Ouvea / UTM zone 58S", "code": 2983}, + {"name": "RGNC 1991 / Lambert New Caledonia", "code": 2984}, + {"name": "Timbalai 1948 / UTM zone 49N", "code": 29849}, + {"name": "Petrels 1972 / Terre Adelie Polar Stereographic", "code": 2985}, + {"name": "Timbalai 1948 / UTM zone 50N", "code": 29850}, + {"name": "Perroud 1950 / Terre Adelie Polar Stereographic", "code": 2986}, + {"name": "Saint Pierre et Miquelon 1950 / UTM zone 21N", "code": 2987}, + {"name": "Timbalai 1948 / RSO Borneo (ch)", "code": 29871}, + {"name": "Timbalai 1948 / RSO Borneo (ftSe)", "code": 29872}, + {"name": "Timbalai 1948 / RSO Borneo (m)", "code": 29873}, + {"name": "MOP78 / UTM zone 1S", "code": 2988}, + {"name": "RRAF 1991 / UTM zone 20N", "code": 2989}, + {"name": "Reunion 1947 / TM Reunion", "code": 2990}, + {"name": "TM65 / Irish National Grid", "code": 29900}, + {"name": "OSNI 1952 / Irish National Grid", "code": 29901}, + {"name": "TM65 / Irish Grid", "code": 29902}, + {"name": "TM75 / Irish Grid", "code": 29903}, + {"name": "NAD83 / Oregon LCC (m)", "code": 2991}, + {"name": "NAD83 / Oregon GIC Lambert (ft)", "code": 2992}, + {"name": "NAD83(HARN) / Oregon LCC (m)", "code": 2993}, + {"name": "NAD83(HARN) / Oregon GIC Lambert (ft)", "code": 2994}, + {"name": "IGN53 Mare / UTM zone 58S", "code": 2995}, + {"name": "ST84 Ile des Pins / UTM zone 58S", "code": 2996}, + {"name": "ST71 Belep / UTM zone 58S", "code": 2997}, + {"name": "NEA74 Noumea / UTM zone 58S", "code": 2998}, + {"name": "Grand Comoros / UTM zone 38S", "code": 2999}, + {"name": "Segara / NEIEZ", "code": 3000}, + {"name": "Batavia / NEIEZ", "code": 3001}, + {"name": "Makassar / NEIEZ", "code": 3002}, + {"name": "Monte Mario / Italy zone 1", "code": 3003}, + {"name": "Monte Mario / Italy zone 2", "code": 3004}, + {"name": "NAD83 / BC Albers", "code": 3005}, + {"name": "SWEREF99 TM", "code": 3006}, + {"name": "SWEREF99 12 00", "code": 3007}, + {"name": "SWEREF99 13 30", "code": 3008}, + {"name": "SWEREF99 15 00", "code": 3009}, + {"name": "SWEREF99 16 30", "code": 3010}, + {"name": "SWEREF99 18 00", "code": 3011}, + {"name": "SWEREF99 14 15", "code": 3012}, + {"name": "SWEREF99 15 45", "code": 3013}, + {"name": "SWEREF99 17 15", "code": 3014}, + {"name": "SWEREF99 18 45", "code": 3015}, + {"name": "SWEREF99 20 15", "code": 3016}, + {"name": "Tokyo / Japan Plane Rectangular CS I", "code": 30161}, + {"name": "Tokyo / Japan Plane Rectangular CS II", "code": 30162}, + {"name": "Tokyo / Japan Plane Rectangular CS III", "code": 30163}, + {"name": "Tokyo / Japan Plane Rectangular CS IV", "code": 30164}, + {"name": "Tokyo / Japan Plane Rectangular CS V", "code": 30165}, + {"name": "Tokyo / Japan Plane Rectangular CS VI", "code": 30166}, + {"name": "Tokyo / Japan Plane Rectangular CS VII", "code": 30167}, + {"name": "Tokyo / Japan Plane Rectangular CS VIII", "code": 30168}, + {"name": "Tokyo / Japan Plane Rectangular CS IX", "code": 30169}, + {"name": "SWEREF99 21 45", "code": 3017}, + {"name": "Tokyo / Japan Plane Rectangular CS X", "code": 30170}, + {"name": "Tokyo / Japan Plane Rectangular CS XI", "code": 30171}, + {"name": "Tokyo / Japan Plane Rectangular CS XII", "code": 30172}, + {"name": "Tokyo / Japan Plane Rectangular CS XIII", "code": 30173}, + {"name": "Tokyo / Japan Plane Rectangular CS XIV", "code": 30174}, + {"name": "Tokyo / Japan Plane Rectangular CS XV", "code": 30175}, + {"name": "Tokyo / Japan Plane Rectangular CS XVI", "code": 30176}, + {"name": "Tokyo / Japan Plane Rectangular CS XVII", "code": 30177}, + {"name": "Tokyo / Japan Plane Rectangular CS XVIII", "code": 30178}, + {"name": "Tokyo / Japan Plane Rectangular CS XIX", "code": 30179}, + {"name": "SWEREF99 23 15", "code": 3018}, + {"name": "RT90 7.5 gon V", "code": 3019}, + {"name": "RT90 5 gon V", "code": 3020}, + {"name": "Trinidad 1903 / Trinidad Grid", "code": 30200}, + {"name": "RT90 2.5 gon V", "code": 3021}, + {"name": "RT90 0 gon", "code": 3022}, + {"name": "RT90 2.5 gon O", "code": 3023}, + {"name": "RT90 5 gon O", "code": 3024}, + {"name": "RT38 7.5 gon V", "code": 3025}, + {"name": "RT38 5 gon V", "code": 3026}, + {"name": "RT38 2.5 gon V", "code": 3027}, + {"name": "RT38 0 gon", "code": 3028}, + {"name": "RT38 2.5 gon O", "code": 3029}, + {"name": "RT38 5 gon O", "code": 3030}, + {"name": "WGS 84 / Antarctic Polar Stereographic", "code": 3031}, + {"name": "WGS 84 / Australian Antarctic Polar Stereographic", "code": 3032}, + {"name": "WGS 84 / Australian Antarctic Lambert", "code": 3033}, + {"name": "TC(1948) / UTM zone 39N", "code": 30339}, + {"name": "ETRS89-extended / LCC Europe", "code": 3034}, + {"name": "TC(1948) / UTM zone 40N", "code": 30340}, + {"name": "ETRS89-extended / LAEA Europe", "code": 3035}, + {"name": "Moznet / UTM zone 36S", "code": 3036}, + {"name": "Moznet / UTM zone 37S", "code": 3037}, + {"name": "ETRS89 / TM26", "code": 3038}, + {"name": "ETRS89 / TM27", "code": 3039}, + {"name": "ETRS89 / UTM zone 28N (N-E)", "code": 3040}, + {"name": "ETRS89 / UTM zone 29N (N-E)", "code": 3041}, + {"name": "ETRS89 / UTM zone 30N (N-E)", "code": 3042}, + {"name": "ETRS89 / UTM zone 31N (N-E)", "code": 3043}, + {"name": "ETRS89 / UTM zone 32N (N-E)", "code": 3044}, + {"name": "ETRS89 / UTM zone 33N (N-E)", "code": 3045}, + {"name": "ETRS89 / UTM zone 34N (N-E)", "code": 3046}, + {"name": "ETRS89 / UTM zone 35N (N-E)", "code": 3047}, + {"name": "ETRS89 / UTM zone 36N (N-E)", "code": 3048}, + {"name": "ETRS89 / UTM zone 37N (N-E)", "code": 3049}, + {"name": "Voirol 1875 / Nord Algerie (ancienne)", "code": 30491}, + {"name": "Voirol 1875 / Sud Algerie (ancienne)", "code": 30492}, + {"name": "Voirol 1879 / Nord Algerie (ancienne)", "code": 30493}, + {"name": "Voirol 1879 / Sud Algerie (ancienne)", "code": 30494}, + {"name": "ETRS89 / TM38", "code": 3050}, + {"name": "ETRS89 / TM39", "code": 3051}, + {"name": "Reykjavik 1900 / Lambert 1900", "code": 3052}, + {"name": "Hjorsey 1955 / Lambert 1955", "code": 3053}, + {"name": "Hjorsey 1955 / UTM zone 26N", "code": 3054}, + {"name": "Hjorsey 1955 / UTM zone 27N", "code": 3055}, + {"name": "Hjorsey 1955 / UTM zone 28N", "code": 3056}, + {"name": "ISN93 / Lambert 1993", "code": 3057}, + {"name": "Helle 1954 / Jan Mayen Grid", "code": 3058}, + {"name": "LKS92 / Latvia TM", "code": 3059}, + {"name": "IGN72 Grande Terre / UTM zone 58S", "code": 3060}, + {"name": "Porto Santo 1995 / UTM zone 28N", "code": 3061}, + {"name": "Azores Oriental 1995 / UTM zone 26N", "code": 3062}, + {"name": "Azores Central 1995 / UTM zone 26N", "code": 3063}, + {"name": "IGM95 / UTM zone 32N", "code": 3064}, + {"name": "IGM95 / UTM zone 33N", "code": 3065}, + {"name": "ED50 / Jordan TM", "code": 3066}, + {"name": "ETRS89 / TM35FIN(E,N)", "code": 3067}, + {"name": "DHDN / Soldner Berlin", "code": 3068}, + {"name": "NAD27 / Wisconsin Transverse Mercator", "code": 3069}, + {"name": "NAD83 / Wisconsin Transverse Mercator", "code": 3070}, + {"name": "NAD83(HARN) / Wisconsin Transverse Mercator", "code": 3071}, + {"name": "NAD83 / Maine CS2000 East", "code": 3072}, + {"name": "Nord Sahara 1959 / UTM zone 29N", "code": 30729}, + {"name": "NAD83 / Maine CS2000 Central", "code": 3073}, + {"name": "Nord Sahara 1959 / UTM zone 30N", "code": 30730}, + {"name": "Nord Sahara 1959 / UTM zone 31N", "code": 30731}, + {"name": "Nord Sahara 1959 / UTM zone 32N", "code": 30732}, + {"name": "NAD83 / Maine CS2000 West", "code": 3074}, + {"name": "NAD83(HARN) / Maine CS2000 East", "code": 3075}, + {"name": "NAD83(HARN) / Maine CS2000 Central", "code": 3076}, + {"name": "NAD83(HARN) / Maine CS2000 West", "code": 3077}, + {"name": "NAD83 / Michigan Oblique Mercator", "code": 3078}, + {"name": "NAD83(HARN) / Michigan Oblique Mercator", "code": 3079}, + {"name": "Nord Sahara 1959 / Nord Algerie", "code": 30791}, + {"name": "Nord Sahara 1959 / Sud Algerie", "code": 30792}, + {"name": "NAD27 / Shackleford", "code": 3080}, + {"name": "RT38 2.5 gon W", "code": 30800}, + {"name": "NAD83 / Texas State Mapping System", "code": 3081}, + {"name": "NAD83 / Texas Centric Lambert Conformal", "code": 3082}, + {"name": "NAD83 / Texas Centric Albers Equal Area", "code": 3083}, + {"name": "NAD83(HARN) / Texas Centric Lambert Conformal", "code": 3084}, + {"name": "NAD83(HARN) / Texas Centric Albers Equal Area", "code": 3085}, + {"name": "NAD83 / Florida GDL Albers", "code": 3086}, + {"name": "NAD83(HARN) / Florida GDL Albers", "code": 3087}, + {"name": "NAD83 / Kentucky Single Zone", "code": 3088}, + {"name": "NAD83 / Kentucky Single Zone (ftUS)", "code": 3089}, + {"name": "NAD83(HARN) / Kentucky Single Zone", "code": 3090}, + {"name": "NAD83(HARN) / Kentucky Single Zone (ftUS)", "code": 3091}, + {"name": "Tokyo / UTM zone 51N", "code": 3092}, + {"name": "Tokyo / UTM zone 52N", "code": 3093}, + {"name": "Tokyo / UTM zone 53N", "code": 3094}, + {"name": "Tokyo / UTM zone 54N", "code": 3095}, + {"name": "Tokyo / UTM zone 55N", "code": 3096}, + {"name": "JGD2000 / UTM zone 51N", "code": 3097}, + {"name": "JGD2000 / UTM zone 52N", "code": 3098}, + {"name": "JGD2000 / UTM zone 53N", "code": 3099}, + {"name": "JGD2000 / UTM zone 54N", "code": 3100}, + {"name": "JGD2000 / UTM zone 55N", "code": 3101}, + {"name": "American Samoa 1962 / American Samoa Lambert", "code": 3102}, + {"name": "Yoff / UTM zone 28N", "code": 31028}, + {"name": "Mauritania 1999 / UTM zone 28N", "code": 3103}, + {"name": "Mauritania 1999 / UTM zone 29N", "code": 3104}, + {"name": "Mauritania 1999 / UTM zone 30N", "code": 3105}, + {"name": "Gulshan 303 / Bangladesh Transverse Mercator", "code": 3106}, + {"name": "GDA94 / SA Lambert", "code": 3107}, + {"name": "ETRS89 / Guernsey Grid", "code": 3108}, + {"name": "ETRS89 / Jersey Transverse Mercator", "code": 3109}, + {"name": "AGD66 / Vicgrid66", "code": 3110}, + {"name": "GDA94 / Vicgrid", "code": 3111}, + {"name": "GDA94 / Geoscience Australia Lambert", "code": 3112}, + {"name": "Zanderij / UTM zone 21N", "code": 31121}, + {"name": "GDA94 / BCSG02", "code": 3113}, + {"name": "MAGNA-SIRGAS / Colombia Far West zone", "code": 3114}, + {"name": "MAGNA-SIRGAS / Colombia West zone", "code": 3115}, + {"name": "Zanderij / TM 54 NW", "code": 31154}, + {"name": "MAGNA-SIRGAS / Colombia Bogota zone", "code": 3116}, + {"name": "MAGNA-SIRGAS / Colombia East Central zone", "code": 3117}, + {"name": "Zanderij / Suriname Old TM", "code": 31170}, + {"name": "Zanderij / Suriname TM", "code": 31171}, + {"name": "MAGNA-SIRGAS / Colombia East zone", "code": 3118}, + {"name": "Douala 1948 / AEF west", "code": 3119}, + {"name": "Pulkovo 1942(58) / Poland zone I", "code": 3120}, + {"name": "PRS92 / Philippines zone 1", "code": 3121}, + {"name": "PRS92 / Philippines zone 2", "code": 3122}, + {"name": "PRS92 / Philippines zone 3", "code": 3123}, + {"name": "PRS92 / Philippines zone 4", "code": 3124}, + {"name": "PRS92 / Philippines zone 5", "code": 3125}, + {"name": "MGI (Ferro) / Austria GK West Zone", "code": 31251}, + {"name": "MGI (Ferro) / Austria GK Central Zone", "code": 31252}, + {"name": "MGI (Ferro) / Austria GK East Zone", "code": 31253}, + {"name": "MGI / Austria GK West", "code": 31254}, + {"name": "MGI / Austria GK Central", "code": 31255}, + {"name": "MGI / Austria GK East", "code": 31256}, + {"name": "MGI / Austria GK M28", "code": 31257}, + {"name": "MGI / Austria GK M31", "code": 31258}, + {"name": "MGI / Austria GK M34", "code": 31259}, + {"name": "ETRS89 / ETRS-GK19FIN", "code": 3126}, + {"name": "MGI / 3-degree Gauss zone 5", "code": 31265}, + {"name": "MGI / 3-degree Gauss zone 6", "code": 31266}, + {"name": "MGI / 3-degree Gauss zone 7", "code": 31267}, + {"name": "MGI / 3-degree Gauss zone 8", "code": 31268}, + {"name": "ETRS89 / ETRS-GK20FIN", "code": 3127}, + {"name": "MGI / Balkans zone 5", "code": 31275}, + {"name": "MGI / Balkans zone 6", "code": 31276}, + {"name": "MGI / Balkans zone 7", "code": 31277}, + {"name": "MGI / Balkans zone 8", "code": 31278}, + {"name": "MGI / Balkans zone 8", "code": 31279}, + {"name": "ETRS89 / ETRS-GK21FIN", "code": 3128}, + {"name": "MGI (Ferro) / Austria West Zone", "code": 31281}, + {"name": "MGI (Ferro) / Austria Central Zone", "code": 31282}, + {"name": "MGI (Ferro) / Austria East Zone", "code": 31283}, + {"name": "MGI / Austria M28", "code": 31284}, + {"name": "MGI / Austria M31", "code": 31285}, + {"name": "MGI / Austria M34", "code": 31286}, + {"name": "MGI / Austria Lambert", "code": 31287}, + {"name": "MGI (Ferro) / Austria zone M28", "code": 31288}, + {"name": "MGI (Ferro) / Austria zone M31", "code": 31289}, + {"name": "ETRS89 / ETRS-GK22FIN", "code": 3129}, + {"name": "MGI (Ferro) / Austria zone M34", "code": 31290}, + {"name": "MGI (Ferro) / Austria West Zone", "code": 31291}, + {"name": "MGI (Ferro) / Austria Central Zone", "code": 31292}, + {"name": "MGI (Ferro) / Austria East Zone", "code": 31293}, + {"name": "MGI / M28", "code": 31294}, + {"name": "MGI / M31", "code": 31295}, + {"name": "MGI / M34", "code": 31296}, + {"name": "MGI / Austria Lambert", "code": 31297}, + {"name": "ETRS89 / ETRS-GK23FIN", "code": 3130}, + {"name": "Belge 1972 / Belge Lambert 72", "code": 31300}, + {"name": "ETRS89 / ETRS-GK24FIN", "code": 3131}, + {"name": "ETRS89 / ETRS-GK25FIN", "code": 3132}, + {"name": "ETRS89 / ETRS-GK26FIN", "code": 3133}, + {"name": "ETRS89 / ETRS-GK27FIN", "code": 3134}, + {"name": "ETRS89 / ETRS-GK28FIN", "code": 3135}, + {"name": "ETRS89 / ETRS-GK29FIN", "code": 3136}, + {"name": "ETRS89 / ETRS-GK30FIN", "code": 3137}, + {"name": "Belge 1972 / Belgian Lambert 72", "code": 31370}, + {"name": "ETRS89 / ETRS-GK31FIN", "code": 3138}, + {"name": "Vanua Levu 1915 / Vanua Levu Grid", "code": 3139}, + {"name": "Viti Levu 1912 / Viti Levu Grid", "code": 3140}, + {"name": "Fiji 1956 / UTM zone 60S", "code": 3141}, + {"name": "Fiji 1956 / UTM zone 1S", "code": 3142}, + {"name": "Fiji 1986 / Fiji Map Grid", "code": 3143}, + {"name": "FD54 / Faroe Lambert", "code": 3144}, + {"name": "ETRS89 / Faroe Lambert", "code": 3145}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 6", "code": 3146}, + {"name": "DHDN / 3-degree Gauss zone 1", "code": 31461}, + {"name": "DHDN / 3-degree Gauss zone 2", "code": 31462}, + {"name": "DHDN / 3-degree Gauss zone 3", "code": 31463}, + {"name": "DHDN / 3-degree Gauss zone 4", "code": 31464}, + {"name": "DHDN / 3-degree Gauss zone 5", "code": 31465}, + {"name": "DHDN / 3-degree Gauss-Kruger zone 2", "code": 31466}, + {"name": "DHDN / 3-degree Gauss-Kruger zone 3", "code": 31467}, + {"name": "DHDN / 3-degree Gauss-Kruger zone 4", "code": 31468}, + {"name": "DHDN / 3-degree Gauss-Kruger zone 5", "code": 31469}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger CM 18E", "code": 3147}, + {"name": "Indian 1960 / UTM zone 48N", "code": 3148}, + {"name": "Indian 1960 / UTM zone 49N", "code": 3149}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 6", "code": 3150}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger CM 18E", "code": 3151}, + {"name": "ST74", "code": 3152}, + {"name": "Conakry 1905 / UTM zone 28N", "code": 31528}, + {"name": "Conakry 1905 / UTM zone 29N", "code": 31529}, + {"name": "NAD83(CSRS) / BC Albers", "code": 3153}, + {"name": "NAD83(CSRS) / UTM zone 7N", "code": 3154}, + {"name": "NAD83(CSRS) / UTM zone 8N", "code": 3155}, + {"name": "NAD83(CSRS) / UTM zone 9N", "code": 3156}, + {"name": "NAD83(CSRS) / UTM zone 10N", "code": 3157}, + {"name": "NAD83(CSRS) / UTM zone 14N", "code": 3158}, + {"name": "NAD83(CSRS) / UTM zone 15N", "code": 3159}, + {"name": "NAD83(CSRS) / UTM zone 16N", "code": 3160}, + {"name": "Dealul Piscului 1930 / Stereo 33", "code": 31600}, + {"name": "NAD83 / Ontario MNR Lambert", "code": 3161}, + {"name": "NAD83(CSRS) / Ontario MNR Lambert", "code": 3162}, + {"name": "RGNC91-93 / Lambert New Caledonia", "code": 3163}, + {"name": "ST87 Ouvea / UTM zone 58S", "code": 3164}, + {"name": "NEA74 Noumea / Noumea Lambert", "code": 3165}, + {"name": "NEA74 Noumea / Noumea Lambert 2", "code": 3166}, + {"name": "Kertau (RSO) / RSO Malaya (ch)", "code": 3167}, + {"name": "Kertau (RSO) / RSO Malaya (m)", "code": 3168}, + {"name": "RGNC91-93 / UTM zone 57S", "code": 3169}, + {"name": "RGNC91-93 / UTM zone 58S", "code": 3170}, + {"name": "Dealul Piscului 1970/ Stereo 70", "code": 31700}, + {"name": "RGNC91-93 / UTM zone 59S", "code": 3171}, + {"name": "IGN53 Mare / UTM zone 59S", "code": 3172}, + {"name": "fk89 / Faroe Lambert FK89", "code": 3173}, + {"name": "NAD83 / Great Lakes Albers", "code": 3174}, + {"name": "NAD83 / Great Lakes and St Lawrence Albers", "code": 3175}, + {"name": "Indian 1960 / TM 106 NE", "code": 3176}, + {"name": "LGD2006 / Libya TM", "code": 3177}, + {"name": "GR96 / UTM zone 18N", "code": 3178}, + {"name": "GR96 / UTM zone 19N", "code": 3179}, + {"name": "GR96 / UTM zone 20N", "code": 3180}, + {"name": "GR96 / UTM zone 21N", "code": 3181}, + {"name": "GR96 / UTM zone 22N", "code": 3182}, + {"name": "GR96 / UTM zone 23N", "code": 3183}, + {"name": "NGN / UTM zone 38N", "code": 31838}, + {"name": "NGN / UTM zone 39N", "code": 31839}, + {"name": "GR96 / UTM zone 24N", "code": 3184}, + {"name": "GR96 / UTM zone 25N", "code": 3185}, + {"name": "GR96 / UTM zone 26N", "code": 3186}, + {"name": "GR96 / UTM zone 27N", "code": 3187}, + {"name": "GR96 / UTM zone 28N", "code": 3188}, + {"name": "GR96 / UTM zone 29N", "code": 3189}, + {"name": "LGD2006 / Libya TM zone 5", "code": 3190}, + {"name": "KUDAMS / KTM", "code": 31900}, + {"name": "KUDAMS / KTM", "code": 31901}, + {"name": "LGD2006 / Libya TM zone 6", "code": 3191}, + {"name": "LGD2006 / Libya TM zone 7", "code": 3192}, + {"name": "LGD2006 / Libya TM zone 8", "code": 3193}, + {"name": "LGD2006 / Libya TM zone 9", "code": 3194}, + {"name": "LGD2006 / Libya TM zone 10", "code": 3195}, + {"name": "LGD2006 / Libya TM zone 11", "code": 3196}, + {"name": "SIRGAS 2000 / UTM zone 11N", "code": 31965}, + {"name": "SIRGAS 2000 / UTM zone 12N", "code": 31966}, + {"name": "SIRGAS 2000 / UTM zone 13N", "code": 31967}, + {"name": "SIRGAS 2000 / UTM zone 14N", "code": 31968}, + {"name": "SIRGAS 2000 / UTM zone 15N", "code": 31969}, + {"name": "LGD2006 / Libya TM zone 12", "code": 3197}, + {"name": "SIRGAS 2000 / UTM zone 16N", "code": 31970}, + {"name": "SIRGAS 2000 / UTM zone 17N", "code": 31971}, + {"name": "SIRGAS 2000 / UTM zone 18N", "code": 31972}, + {"name": "SIRGAS 2000 / UTM zone 19N", "code": 31973}, + {"name": "SIRGAS 2000 / UTM zone 20N", "code": 31974}, + {"name": "SIRGAS 2000 / UTM zone 21N", "code": 31975}, + {"name": "SIRGAS 2000 / UTM zone 22N", "code": 31976}, + {"name": "SIRGAS 2000 / UTM zone 17S", "code": 31977}, + {"name": "SIRGAS 2000 / UTM zone 18S", "code": 31978}, + {"name": "SIRGAS 2000 / UTM zone 19S", "code": 31979}, + {"name": "LGD2006 / Libya TM zone 13", "code": 3198}, + {"name": "SIRGAS 2000 / UTM zone 20S", "code": 31980}, + {"name": "SIRGAS 2000 / UTM zone 21S", "code": 31981}, + {"name": "SIRGAS 2000 / UTM zone 22S", "code": 31982}, + {"name": "SIRGAS 2000 / UTM zone 23S", "code": 31983}, + {"name": "SIRGAS 2000 / UTM zone 24S", "code": 31984}, + {"name": "SIRGAS 2000 / UTM zone 25S", "code": 31985}, + {"name": "SIRGAS 1995 / UTM zone 17N", "code": 31986}, + {"name": "SIRGAS 1995 / UTM zone 18N", "code": 31987}, + {"name": "SIRGAS 1995 / UTM zone 19N", "code": 31988}, + {"name": "SIRGAS 1995 / UTM zone 20N", "code": 31989}, + {"name": "LGD2006 / UTM zone 32N", "code": 3199}, + {"name": "SIRGAS 1995 / UTM zone 21N", "code": 31990}, + {"name": "SIRGAS 1995 / UTM zone 22N", "code": 31991}, + {"name": "SIRGAS 1995 / UTM zone 17S", "code": 31992}, + {"name": "SIRGAS 1995 / UTM zone 18S", "code": 31993}, + {"name": "SIRGAS 1995 / UTM zone 19S", "code": 31994}, + {"name": "SIRGAS 1995 / UTM zone 20S", "code": 31995}, + {"name": "SIRGAS 1995 / UTM zone 21S", "code": 31996}, + {"name": "SIRGAS 1995 / UTM zone 22S", "code": 31997}, + {"name": "SIRGAS 1995 / UTM zone 23S", "code": 31998}, + {"name": "SIRGAS 1995 / UTM zone 24S", "code": 31999}, + {"name": "FD58 / Iraq zone", "code": 3200}, + {"name": "SIRGAS 1995 / UTM zone 25S", "code": 32000}, + {"name": "NAD27 / Montana North", "code": 32001}, + {"name": "NAD27 / Montana Central", "code": 32002}, + {"name": "NAD27 / Montana South", "code": 32003}, + {"name": "NAD27 / Nebraska North", "code": 32005}, + {"name": "NAD27 / Nebraska South", "code": 32006}, + {"name": "NAD27 / Nevada East", "code": 32007}, + {"name": "NAD27 / Nevada Central", "code": 32008}, + {"name": "NAD27 / Nevada West", "code": 32009}, + {"name": "LGD2006 / UTM zone 33N", "code": 3201}, + {"name": "NAD27 / New Hampshire", "code": 32010}, + {"name": "NAD27 / New Jersey", "code": 32011}, + {"name": "NAD27 / New Mexico East", "code": 32012}, + {"name": "NAD27 / New Mexico Central", "code": 32013}, + {"name": "NAD27 / New Mexico West", "code": 32014}, + {"name": "NAD27 / New York East", "code": 32015}, + {"name": "NAD27 / New York Central", "code": 32016}, + {"name": "NAD27 / New York West", "code": 32017}, + {"name": "NAD27 / New York Long Island", "code": 32018}, + {"name": "NAD27 / North Carolina", "code": 32019}, + {"name": "LGD2006 / UTM zone 34N", "code": 3202}, + {"name": "NAD27 / North Dakota North", "code": 32020}, + {"name": "NAD27 / North Dakota South", "code": 32021}, + {"name": "NAD27 / Ohio North", "code": 32022}, + {"name": "NAD27 / Ohio South", "code": 32023}, + {"name": "NAD27 / Oklahoma North", "code": 32024}, + {"name": "NAD27 / Oklahoma South", "code": 32025}, + {"name": "NAD27 / Oregon North", "code": 32026}, + {"name": "NAD27 / Oregon South", "code": 32027}, + {"name": "NAD27 / Pennsylvania North", "code": 32028}, + {"name": "NAD27 / Pennsylvania South", "code": 32029}, + {"name": "LGD2006 / UTM zone 35N", "code": 3203}, + {"name": "NAD27 / Rhode Island", "code": 32030}, + {"name": "NAD27 / South Carolina North", "code": 32031}, + {"name": "NAD27 / South Carolina South", "code": 32033}, + {"name": "NAD27 / South Dakota North", "code": 32034}, + {"name": "NAD27 / South Dakota South", "code": 32035}, + {"name": "NAD27 / Tennessee", "code": 32036}, + {"name": "NAD27 / Texas North", "code": 32037}, + {"name": "NAD27 / Texas North Central", "code": 32038}, + {"name": "NAD27 / Texas Central", "code": 32039}, + {"name": "WGS 84 / SCAR IMW SP19-20", "code": 3204}, + {"name": "NAD27 / Texas South Central", "code": 32040}, + {"name": "NAD27 / Texas South", "code": 32041}, + {"name": "NAD27 / Utah North", "code": 32042}, + {"name": "NAD27 / Utah Central", "code": 32043}, + {"name": "NAD27 / Utah South", "code": 32044}, + {"name": "NAD27 / Vermont", "code": 32045}, + {"name": "NAD27 / Virginia North", "code": 32046}, + {"name": "NAD27 / Virginia South", "code": 32047}, + {"name": "NAD27 / Washington North", "code": 32048}, + {"name": "NAD27 / Washington South", "code": 32049}, + {"name": "WGS 84 / SCAR IMW SP21-22", "code": 3205}, + {"name": "NAD27 / West Virginia North", "code": 32050}, + {"name": "NAD27 / West Virginia South", "code": 32051}, + {"name": "NAD27 / Wisconsin North", "code": 32052}, + {"name": "NAD27 / Wisconsin Central", "code": 32053}, + {"name": "NAD27 / Wisconsin South", "code": 32054}, + {"name": "NAD27 / Wyoming East", "code": 32055}, + {"name": "NAD27 / Wyoming East Central", "code": 32056}, + {"name": "NAD27 / Wyoming West Central", "code": 32057}, + {"name": "NAD27 / Wyoming West", "code": 32058}, + {"name": "WGS 84 / SCAR IMW SP23-24", "code": 3206}, + {"name": "NAD27 / Guatemala Norte", "code": 32061}, + {"name": "NAD27 / Guatemala Sur", "code": 32062}, + {"name": "NAD27 / BLM 14N (ftUS)", "code": 32064}, + {"name": "NAD27 / BLM 15N (ftUS)", "code": 32065}, + {"name": "NAD27 / BLM 16N (ftUS)", "code": 32066}, + {"name": "NAD27 / BLM 17N (ftUS)", "code": 32067}, + {"name": "WGS 84 / SCAR IMW SQ01-02", "code": 3207}, + {"name": "NAD27 / BLM 14N (feet)", "code": 32074}, + {"name": "NAD27 / BLM 15N (feet)", "code": 32075}, + {"name": "NAD27 / BLM 16N (feet)", "code": 32076}, + {"name": "NAD27 / BLM 17N (feet)", "code": 32077}, + {"name": "WGS 84 / SCAR IMW SQ19-20", "code": 3208}, + {"name": "NAD27 / MTM zone 1", "code": 32081}, + {"name": "NAD27 / MTM zone 2", "code": 32082}, + {"name": "NAD27 / MTM zone 3", "code": 32083}, + {"name": "NAD27 / MTM zone 4", "code": 32084}, + {"name": "NAD27 / MTM zone 5", "code": 32085}, + {"name": "NAD27 / MTM zone 6", "code": 32086}, + {"name": "WGS 84 / SCAR IMW SQ21-22", "code": 3209}, + {"name": "NAD27 / Quebec Lambert", "code": 32098}, + {"name": "NAD27 / Louisiana Offshore", "code": 32099}, + {"name": "WGS 84 / SCAR IMW SQ37-38", "code": 3210}, + {"name": "NAD83 / Montana", "code": 32100}, + {"name": "NAD83 / Nebraska", "code": 32104}, + {"name": "NAD83 / Nevada East", "code": 32107}, + {"name": "NAD83 / Nevada Central", "code": 32108}, + {"name": "NAD83 / Nevada West", "code": 32109}, + {"name": "WGS 84 / SCAR IMW SQ39-40", "code": 3211}, + {"name": "NAD83 / New Hampshire", "code": 32110}, + {"name": "NAD83 / New Jersey", "code": 32111}, + {"name": "NAD83 / New Mexico East", "code": 32112}, + {"name": "NAD83 / New Mexico Central", "code": 32113}, + {"name": "NAD83 / New Mexico West", "code": 32114}, + {"name": "NAD83 / New York East", "code": 32115}, + {"name": "NAD83 / New York Central", "code": 32116}, + {"name": "NAD83 / New York West", "code": 32117}, + {"name": "NAD83 / New York Long Island", "code": 32118}, + {"name": "NAD83 / North Carolina", "code": 32119}, + {"name": "WGS 84 / SCAR IMW SQ41-42", "code": 3212}, + {"name": "NAD83 / North Dakota North", "code": 32120}, + {"name": "NAD83 / North Dakota South", "code": 32121}, + {"name": "NAD83 / Ohio North", "code": 32122}, + {"name": "NAD83 / Ohio South", "code": 32123}, + {"name": "NAD83 / Oklahoma North", "code": 32124}, + {"name": "NAD83 / Oklahoma South", "code": 32125}, + {"name": "NAD83 / Oregon North", "code": 32126}, + {"name": "NAD83 / Oregon South", "code": 32127}, + {"name": "NAD83 / Pennsylvania North", "code": 32128}, + {"name": "NAD83 / Pennsylvania South", "code": 32129}, + {"name": "WGS 84 / SCAR IMW SQ43-44", "code": 3213}, + {"name": "NAD83 / Rhode Island", "code": 32130}, + {"name": "NAD83 / South Carolina", "code": 32133}, + {"name": "NAD83 / South Dakota North", "code": 32134}, + {"name": "NAD83 / South Dakota South", "code": 32135}, + {"name": "NAD83 / Tennessee", "code": 32136}, + {"name": "NAD83 / Texas North", "code": 32137}, + {"name": "NAD83 / Texas North Central", "code": 32138}, + {"name": "NAD83 / Texas Central", "code": 32139}, + {"name": "WGS 84 / SCAR IMW SQ45-46", "code": 3214}, + {"name": "NAD83 / Texas South Central", "code": 32140}, + {"name": "NAD83 / Texas South", "code": 32141}, + {"name": "NAD83 / Utah North", "code": 32142}, + {"name": "NAD83 / Utah Central", "code": 32143}, + {"name": "NAD83 / Utah South", "code": 32144}, + {"name": "NAD83 / Vermont", "code": 32145}, + {"name": "NAD83 / Virginia North", "code": 32146}, + {"name": "NAD83 / Virginia South", "code": 32147}, + {"name": "NAD83 / Washington North", "code": 32148}, + {"name": "NAD83 / Washington South", "code": 32149}, + {"name": "WGS 84 / SCAR IMW SQ47-48", "code": 3215}, + {"name": "NAD83 / West Virginia North", "code": 32150}, + {"name": "NAD83 / West Virginia South", "code": 32151}, + {"name": "NAD83 / Wisconsin North", "code": 32152}, + {"name": "NAD83 / Wisconsin Central", "code": 32153}, + {"name": "NAD83 / Wisconsin South", "code": 32154}, + {"name": "NAD83 / Wyoming East", "code": 32155}, + {"name": "NAD83 / Wyoming East Central", "code": 32156}, + {"name": "NAD83 / Wyoming West Central", "code": 32157}, + {"name": "NAD83 / Wyoming West", "code": 32158}, + {"name": "WGS 84 / SCAR IMW SQ49-50", "code": 3216}, + {"name": "NAD83 / Puerto Rico & Virgin Is.", "code": 32161}, + {"name": "NAD83 / BLM 14N (ftUS)", "code": 32164}, + {"name": "NAD83 / BLM 15N (ftUS)", "code": 32165}, + {"name": "NAD83 / BLM 16N (ftUS)", "code": 32166}, + {"name": "NAD83 / BLM 17N (ftUS)", "code": 32167}, + {"name": "WGS 84 / SCAR IMW SQ51-52", "code": 3217}, + {"name": "WGS 84 / SCAR IMW SQ53-54", "code": 3218}, + {"name": "NAD83 / SCoPQ zone 2", "code": 32180}, + {"name": "NAD83 / MTM zone 1", "code": 32181}, + {"name": "NAD83 / MTM zone 2", "code": 32182}, + {"name": "NAD83 / MTM zone 3", "code": 32183}, + {"name": "NAD83 / MTM zone 4", "code": 32184}, + {"name": "NAD83 / MTM zone 5", "code": 32185}, + {"name": "NAD83 / MTM zone 6", "code": 32186}, + {"name": "NAD83 / MTM zone 7", "code": 32187}, + {"name": "NAD83 / MTM zone 8", "code": 32188}, + {"name": "NAD83 / MTM zone 9", "code": 32189}, + {"name": "WGS 84 / SCAR IMW SQ55-56", "code": 3219}, + {"name": "NAD83 / MTM zone 10", "code": 32190}, + {"name": "NAD83 / MTM zone 11", "code": 32191}, + {"name": "NAD83 / MTM zone 12", "code": 32192}, + {"name": "NAD83 / MTM zone 13", "code": 32193}, + {"name": "NAD83 / MTM zone 14", "code": 32194}, + {"name": "NAD83 / MTM zone 15", "code": 32195}, + {"name": "NAD83 / MTM zone 16", "code": 32196}, + {"name": "NAD83 / MTM zone 17", "code": 32197}, + {"name": "NAD83 / Quebec Lambert", "code": 32198}, + {"name": "NAD83 / Louisiana Offshore", "code": 32199}, + {"name": "WGS 84 / SCAR IMW SQ57-58", "code": 3220}, + {"name": "WGS 72 / UTM zone 1N", "code": 32201}, + {"name": "WGS 72 / UTM zone 2N", "code": 32202}, + {"name": "WGS 72 / UTM zone 3N", "code": 32203}, + {"name": "WGS 72 / UTM zone 4N", "code": 32204}, + {"name": "WGS 72 / UTM zone 5N", "code": 32205}, + {"name": "WGS 72 / UTM zone 6N", "code": 32206}, + {"name": "WGS 72 / UTM zone 7N", "code": 32207}, + {"name": "WGS 72 / UTM zone 8N", "code": 32208}, + {"name": "WGS 72 / UTM zone 9N", "code": 32209}, + {"name": "WGS 84 / SCAR IMW SR13-14", "code": 3221}, + {"name": "WGS 72 / UTM zone 10N", "code": 32210}, + {"name": "WGS 72 / UTM zone 11N", "code": 32211}, + {"name": "WGS 72 / UTM zone 12N", "code": 32212}, + {"name": "WGS 72 / UTM zone 13N", "code": 32213}, + {"name": "WGS 72 / UTM zone 14N", "code": 32214}, + {"name": "WGS 72 / UTM zone 15N", "code": 32215}, + {"name": "WGS 72 / UTM zone 16N", "code": 32216}, + {"name": "WGS 72 / UTM zone 17N", "code": 32217}, + {"name": "WGS 72 / UTM zone 18N", "code": 32218}, + {"name": "WGS 72 / UTM zone 19N", "code": 32219}, + {"name": "WGS 84 / SCAR IMW SR15-16", "code": 3222}, + {"name": "WGS 72 / UTM zone 20N", "code": 32220}, + {"name": "WGS 72 / UTM zone 21N", "code": 32221}, + {"name": "WGS 72 / UTM zone 22N", "code": 32222}, + {"name": "WGS 72 / UTM zone 23N", "code": 32223}, + {"name": "WGS 72 / UTM zone 24N", "code": 32224}, + {"name": "WGS 72 / UTM zone 25N", "code": 32225}, + {"name": "WGS 72 / UTM zone 26N", "code": 32226}, + {"name": "WGS 72 / UTM zone 27N", "code": 32227}, + {"name": "WGS 72 / UTM zone 28N", "code": 32228}, + {"name": "WGS 72 / UTM zone 29N", "code": 32229}, + {"name": "WGS 84 / SCAR IMW SR17-18", "code": 3223}, + {"name": "WGS 72 / UTM zone 30N", "code": 32230}, + {"name": "WGS 72 / UTM zone 31N", "code": 32231}, + {"name": "WGS 72 / UTM zone 32N", "code": 32232}, + {"name": "WGS 72 / UTM zone 33N", "code": 32233}, + {"name": "WGS 72 / UTM zone 34N", "code": 32234}, + {"name": "WGS 72 / UTM zone 35N", "code": 32235}, + {"name": "WGS 72 / UTM zone 36N", "code": 32236}, + {"name": "WGS 72 / UTM zone 37N", "code": 32237}, + {"name": "WGS 72 / UTM zone 38N", "code": 32238}, + {"name": "WGS 72 / UTM zone 39N", "code": 32239}, + {"name": "WGS 84 / SCAR IMW SR19-20", "code": 3224}, + {"name": "WGS 72 / UTM zone 40N", "code": 32240}, + {"name": "WGS 72 / UTM zone 41N", "code": 32241}, + {"name": "WGS 72 / UTM zone 42N", "code": 32242}, + {"name": "WGS 72 / UTM zone 43N", "code": 32243}, + {"name": "WGS 72 / UTM zone 44N", "code": 32244}, + {"name": "WGS 72 / UTM zone 45N", "code": 32245}, + {"name": "WGS 72 / UTM zone 46N", "code": 32246}, + {"name": "WGS 72 / UTM zone 47N", "code": 32247}, + {"name": "WGS 72 / UTM zone 48N", "code": 32248}, + {"name": "WGS 72 / UTM zone 49N", "code": 32249}, + {"name": "WGS 84 / SCAR IMW SR27-28", "code": 3225}, + {"name": "WGS 72 / UTM zone 50N", "code": 32250}, + {"name": "WGS 72 / UTM zone 51N", "code": 32251}, + {"name": "WGS 72 / UTM zone 52N", "code": 32252}, + {"name": "WGS 72 / UTM zone 53N", "code": 32253}, + {"name": "WGS 72 / UTM zone 54N", "code": 32254}, + {"name": "WGS 72 / UTM zone 55N", "code": 32255}, + {"name": "WGS 72 / UTM zone 56N", "code": 32256}, + {"name": "WGS 72 / UTM zone 57N", "code": 32257}, + {"name": "WGS 72 / UTM zone 58N", "code": 32258}, + {"name": "WGS 72 / UTM zone 59N", "code": 32259}, + {"name": "WGS 84 / SCAR IMW SR29-30", "code": 3226}, + {"name": "WGS 72 / UTM zone 60N", "code": 32260}, + {"name": "WGS 84 / SCAR IMW SR31-32", "code": 3227}, + {"name": "WGS 84 / SCAR IMW SR33-34", "code": 3228}, + {"name": "WGS 84 / SCAR IMW SR35-36", "code": 3229}, + {"name": "WGS 84 / SCAR IMW SR37-38", "code": 3230}, + {"name": "WGS 72 / UTM zone 1S", "code": 32301}, + {"name": "WGS 72 / UTM zone 2S", "code": 32302}, + {"name": "WGS 72 / UTM zone 3S", "code": 32303}, + {"name": "WGS 72 / UTM zone 4S", "code": 32304}, + {"name": "WGS 72 / UTM zone 5S", "code": 32305}, + {"name": "WGS 72 / UTM zone 6S", "code": 32306}, + {"name": "WGS 72 / UTM zone 7S", "code": 32307}, + {"name": "WGS 72 / UTM zone 8S", "code": 32308}, + {"name": "WGS 72 / UTM zone 9S", "code": 32309}, + {"name": "WGS 84 / SCAR IMW SR39-40", "code": 3231}, + {"name": "WGS 72 / UTM zone 10S", "code": 32310}, + {"name": "WGS 72 / UTM zone 11S", "code": 32311}, + {"name": "WGS 72 / UTM zone 12S", "code": 32312}, + {"name": "WGS 72 / UTM zone 13S", "code": 32313}, + {"name": "WGS 72 / UTM zone 14S", "code": 32314}, + {"name": "WGS 72 / UTM zone 15S", "code": 32315}, + {"name": "WGS 72 / UTM zone 16S", "code": 32316}, + {"name": "WGS 72 / UTM zone 17S", "code": 32317}, + {"name": "WGS 72 / UTM zone 18S", "code": 32318}, + {"name": "WGS 72 / UTM zone 19S", "code": 32319}, + {"name": "WGS 84 / SCAR IMW SR41-42", "code": 3232}, + {"name": "WGS 72 / UTM zone 20S", "code": 32320}, + {"name": "WGS 72 / UTM zone 21S", "code": 32321}, + {"name": "WGS 72 / UTM zone 22S", "code": 32322}, + {"name": "WGS 72 / UTM zone 23S", "code": 32323}, + {"name": "WGS 72 / UTM zone 24S", "code": 32324}, + {"name": "WGS 72 / UTM zone 25S", "code": 32325}, + {"name": "WGS 72 / UTM zone 26S", "code": 32326}, + {"name": "WGS 72 / UTM zone 27S", "code": 32327}, + {"name": "WGS 72 / UTM zone 28S", "code": 32328}, + {"name": "WGS 72 / UTM zone 29S", "code": 32329}, + {"name": "WGS 84 / SCAR IMW SR43-44", "code": 3233}, + {"name": "WGS 72 / UTM zone 30S", "code": 32330}, + {"name": "WGS 72 / UTM zone 31S", "code": 32331}, + {"name": "WGS 72 / UTM zone 32S", "code": 32332}, + {"name": "WGS 72 / UTM zone 33S", "code": 32333}, + {"name": "WGS 72 / UTM zone 34S", "code": 32334}, + {"name": "WGS 72 / UTM zone 35S", "code": 32335}, + {"name": "WGS 72 / UTM zone 36S", "code": 32336}, + {"name": "WGS 72 / UTM zone 37S", "code": 32337}, + {"name": "WGS 72 / UTM zone 38S", "code": 32338}, + {"name": "WGS 72 / UTM zone 39S", "code": 32339}, + {"name": "WGS 84 / SCAR IMW SR45-46", "code": 3234}, + {"name": "WGS 72 / UTM zone 40S", "code": 32340}, + {"name": "WGS 72 / UTM zone 41S", "code": 32341}, + {"name": "WGS 72 / UTM zone 42S", "code": 32342}, + {"name": "WGS 72 / UTM zone 43S", "code": 32343}, + {"name": "WGS 72 / UTM zone 44S", "code": 32344}, + {"name": "WGS 72 / UTM zone 45S", "code": 32345}, + {"name": "WGS 72 / UTM zone 46S", "code": 32346}, + {"name": "WGS 72 / UTM zone 47S", "code": 32347}, + {"name": "WGS 72 / UTM zone 48S", "code": 32348}, + {"name": "WGS 72 / UTM zone 49S", "code": 32349}, + {"name": "WGS 84 / SCAR IMW SR47-48", "code": 3235}, + {"name": "WGS 72 / UTM zone 50S", "code": 32350}, + {"name": "WGS 72 / UTM zone 51S", "code": 32351}, + {"name": "WGS 72 / UTM zone 52S", "code": 32352}, + {"name": "WGS 72 / UTM zone 53S", "code": 32353}, + {"name": "WGS 72 / UTM zone 54S", "code": 32354}, + {"name": "WGS 72 / UTM zone 55S", "code": 32355}, + {"name": "WGS 72 / UTM zone 56S", "code": 32356}, + {"name": "WGS 72 / UTM zone 57S", "code": 32357}, + {"name": "WGS 72 / UTM zone 58S", "code": 32358}, + {"name": "WGS 72 / UTM zone 59S", "code": 32359}, + {"name": "WGS 84 / SCAR IMW SR49-50", "code": 3236}, + {"name": "WGS 72 / UTM zone 60S", "code": 32360}, + {"name": "WGS 84 / SCAR IMW SR51-52", "code": 3237}, + {"name": "WGS 84 / SCAR IMW SR53-54", "code": 3238}, + {"name": "WGS 84 / SCAR IMW SR55-56", "code": 3239}, + {"name": "WGS 84 / SCAR IMW SR57-58", "code": 3240}, + {"name": "WGS 72BE / UTM zone 1N", "code": 32401}, + {"name": "WGS 72BE / UTM zone 2N", "code": 32402}, + {"name": "WGS 72BE / UTM zone 3N", "code": 32403}, + {"name": "WGS 72BE / UTM zone 4N", "code": 32404}, + {"name": "WGS 72BE / UTM zone 5N", "code": 32405}, + {"name": "WGS 72BE / UTM zone 6N", "code": 32406}, + {"name": "WGS 72BE / UTM zone 7N", "code": 32407}, + {"name": "WGS 72BE / UTM zone 8N", "code": 32408}, + {"name": "WGS 72BE / UTM zone 9N", "code": 32409}, + {"name": "WGS 84 / SCAR IMW SR59-60", "code": 3241}, + {"name": "WGS 72BE / UTM zone 10N", "code": 32410}, + {"name": "WGS 72BE / UTM zone 11N", "code": 32411}, + {"name": "WGS 72BE / UTM zone 12N", "code": 32412}, + {"name": "WGS 72BE / UTM zone 13N", "code": 32413}, + {"name": "WGS 72BE / UTM zone 14N", "code": 32414}, + {"name": "WGS 72BE / UTM zone 15N", "code": 32415}, + {"name": "WGS 72BE / UTM zone 16N", "code": 32416}, + {"name": "WGS 72BE / UTM zone 17N", "code": 32417}, + {"name": "WGS 72BE / UTM zone 18N", "code": 32418}, + {"name": "WGS 72BE / UTM zone 19N", "code": 32419}, + {"name": "WGS 84 / SCAR IMW SS04-06", "code": 3242}, + {"name": "WGS 72BE / UTM zone 20N", "code": 32420}, + {"name": "WGS 72BE / UTM zone 21N", "code": 32421}, + {"name": "WGS 72BE / UTM zone 22N", "code": 32422}, + {"name": "WGS 72BE / UTM zone 23N", "code": 32423}, + {"name": "WGS 72BE / UTM zone 24N", "code": 32424}, + {"name": "WGS 72BE / UTM zone 25N", "code": 32425}, + {"name": "WGS 72BE / UTM zone 26N", "code": 32426}, + {"name": "WGS 72BE / UTM zone 27N", "code": 32427}, + {"name": "WGS 72BE / UTM zone 28N", "code": 32428}, + {"name": "WGS 72BE / UTM zone 29N", "code": 32429}, + {"name": "WGS 84 / SCAR IMW SS07-09", "code": 3243}, + {"name": "WGS 72BE / UTM zone 30N", "code": 32430}, + {"name": "WGS 72BE / UTM zone 31N", "code": 32431}, + {"name": "WGS 72BE / UTM zone 32N", "code": 32432}, + {"name": "WGS 72BE / UTM zone 33N", "code": 32433}, + {"name": "WGS 72BE / UTM zone 34N", "code": 32434}, + {"name": "WGS 72BE / UTM zone 35N", "code": 32435}, + {"name": "WGS 72BE / UTM zone 36N", "code": 32436}, + {"name": "WGS 72BE / UTM zone 37N", "code": 32437}, + {"name": "WGS 72BE / UTM zone 38N", "code": 32438}, + {"name": "WGS 72BE / UTM zone 39N", "code": 32439}, + {"name": "WGS 84 / SCAR IMW SS10-12", "code": 3244}, + {"name": "WGS 72BE / UTM zone 40N", "code": 32440}, + {"name": "WGS 72BE / UTM zone 41N", "code": 32441}, + {"name": "WGS 72BE / UTM zone 42N", "code": 32442}, + {"name": "WGS 72BE / UTM zone 43N", "code": 32443}, + {"name": "WGS 72BE / UTM zone 44N", "code": 32444}, + {"name": "WGS 72BE / UTM zone 45N", "code": 32445}, + {"name": "WGS 72BE / UTM zone 46N", "code": 32446}, + {"name": "WGS 72BE / UTM zone 47N", "code": 32447}, + {"name": "WGS 72BE / UTM zone 48N", "code": 32448}, + {"name": "WGS 72BE / UTM zone 49N", "code": 32449}, + {"name": "WGS 84 / SCAR IMW SS13-15", "code": 3245}, + {"name": "WGS 72BE / UTM zone 50N", "code": 32450}, + {"name": "WGS 72BE / UTM zone 51N", "code": 32451}, + {"name": "WGS 72BE / UTM zone 52N", "code": 32452}, + {"name": "WGS 72BE / UTM zone 53N", "code": 32453}, + {"name": "WGS 72BE / UTM zone 54N", "code": 32454}, + {"name": "WGS 72BE / UTM zone 55N", "code": 32455}, + {"name": "WGS 72BE / UTM zone 56N", "code": 32456}, + {"name": "WGS 72BE / UTM zone 57N", "code": 32457}, + {"name": "WGS 72BE / UTM zone 58N", "code": 32458}, + {"name": "WGS 72BE / UTM zone 59N", "code": 32459}, + {"name": "WGS 84 / SCAR IMW SS16-18", "code": 3246}, + {"name": "WGS 72BE / UTM zone 60N", "code": 32460}, + {"name": "WGS 84 / SCAR IMW SS19-21", "code": 3247}, + {"name": "WGS 84 / SCAR IMW SS25-27", "code": 3248}, + {"name": "WGS 84 / SCAR IMW SS28-30", "code": 3249}, + {"name": "WGS 84 / SCAR IMW SS31-33", "code": 3250}, + {"name": "WGS 72BE / UTM zone 1S", "code": 32501}, + {"name": "WGS 72BE / UTM zone 2S", "code": 32502}, + {"name": "WGS 72BE / UTM zone 3S", "code": 32503}, + {"name": "WGS 72BE / UTM zone 4S", "code": 32504}, + {"name": "WGS 72BE / UTM zone 5S", "code": 32505}, + {"name": "WGS 72BE / UTM zone 6S", "code": 32506}, + {"name": "WGS 72BE / UTM zone 7S", "code": 32507}, + {"name": "WGS 72BE / UTM zone 8S", "code": 32508}, + {"name": "WGS 72BE / UTM zone 9S", "code": 32509}, + {"name": "WGS 84 / SCAR IMW SS34-36", "code": 3251}, + {"name": "WGS 72BE / UTM zone 10S", "code": 32510}, + {"name": "WGS 72BE / UTM zone 11S", "code": 32511}, + {"name": "WGS 72BE / UTM zone 12S", "code": 32512}, + {"name": "WGS 72BE / UTM zone 13S", "code": 32513}, + {"name": "WGS 72BE / UTM zone 14S", "code": 32514}, + {"name": "WGS 72BE / UTM zone 15S", "code": 32515}, + {"name": "WGS 72BE / UTM zone 16S", "code": 32516}, + {"name": "WGS 72BE / UTM zone 17S", "code": 32517}, + {"name": "WGS 72BE / UTM zone 18S", "code": 32518}, + {"name": "WGS 72BE / UTM zone 19S", "code": 32519}, + {"name": "WGS 84 / SCAR IMW SS37-39", "code": 3252}, + {"name": "WGS 72BE / UTM zone 20S", "code": 32520}, + {"name": "WGS 72BE / UTM zone 21S", "code": 32521}, + {"name": "WGS 72BE / UTM zone 22S", "code": 32522}, + {"name": "WGS 72BE / UTM zone 23S", "code": 32523}, + {"name": "WGS 72BE / UTM zone 24S", "code": 32524}, + {"name": "WGS 72BE / UTM zone 25S", "code": 32525}, + {"name": "WGS 72BE / UTM zone 26S", "code": 32526}, + {"name": "WGS 72BE / UTM zone 27S", "code": 32527}, + {"name": "WGS 72BE / UTM zone 28S", "code": 32528}, + {"name": "WGS 72BE / UTM zone 29S", "code": 32529}, + {"name": "WGS 84 / SCAR IMW SS40-42", "code": 3253}, + {"name": "WGS 72BE / UTM zone 30S", "code": 32530}, + {"name": "WGS 72BE / UTM zone 31S", "code": 32531}, + {"name": "WGS 72BE / UTM zone 32S", "code": 32532}, + {"name": "WGS 72BE / UTM zone 33S", "code": 32533}, + {"name": "WGS 72BE / UTM zone 34S", "code": 32534}, + {"name": "WGS 72BE / UTM zone 35S", "code": 32535}, + {"name": "WGS 72BE / UTM zone 36S", "code": 32536}, + {"name": "WGS 72BE / UTM zone 37S", "code": 32537}, + {"name": "WGS 72BE / UTM zone 38S", "code": 32538}, + {"name": "WGS 72BE / UTM zone 39S", "code": 32539}, + {"name": "WGS 84 / SCAR IMW SS43-45", "code": 3254}, + {"name": "WGS 72BE / UTM zone 40S", "code": 32540}, + {"name": "WGS 72BE / UTM zone 41S", "code": 32541}, + {"name": "WGS 72BE / UTM zone 42S", "code": 32542}, + {"name": "WGS 72BE / UTM zone 43S", "code": 32543}, + {"name": "WGS 72BE / UTM zone 44S", "code": 32544}, + {"name": "WGS 72BE / UTM zone 45S", "code": 32545}, + {"name": "WGS 72BE / UTM zone 46S", "code": 32546}, + {"name": "WGS 72BE / UTM zone 47S", "code": 32547}, + {"name": "WGS 72BE / UTM zone 48S", "code": 32548}, + {"name": "WGS 72BE / UTM zone 49S", "code": 32549}, + {"name": "WGS 84 / SCAR IMW SS46-48", "code": 3255}, + {"name": "WGS 72BE / UTM zone 50S", "code": 32550}, + {"name": "WGS 72BE / UTM zone 51S", "code": 32551}, + {"name": "WGS 72BE / UTM zone 52S", "code": 32552}, + {"name": "WGS 72BE / UTM zone 53S", "code": 32553}, + {"name": "WGS 72BE / UTM zone 54S", "code": 32554}, + {"name": "WGS 72BE / UTM zone 55S", "code": 32555}, + {"name": "WGS 72BE / UTM zone 56S", "code": 32556}, + {"name": "WGS 72BE / UTM zone 57S", "code": 32557}, + {"name": "WGS 72BE / UTM zone 58S", "code": 32558}, + {"name": "WGS 72BE / UTM zone 59S", "code": 32559}, + {"name": "WGS 84 / SCAR IMW SS49-51", "code": 3256}, + {"name": "WGS 72BE / UTM zone 60S", "code": 32560}, + {"name": "WGS 84 / SCAR IMW SS52-54", "code": 3257}, + {"name": "WGS 84 / SCAR IMW SS55-57", "code": 3258}, + {"name": "WGS 84 / SCAR IMW SS58-60", "code": 3259}, + {"name": "WGS 84 / SCAR IMW ST01-04", "code": 3260}, + {"name": "WGS 84 / UTM grid system (northern hemisphere)", "code": 32600}, + {"name": "WGS 84 / UTM zone 1N", "code": 32601}, + {"name": "WGS 84 / UTM zone 2N", "code": 32602}, + {"name": "WGS 84 / UTM zone 3N", "code": 32603}, + {"name": "WGS 84 / UTM zone 4N", "code": 32604}, + {"name": "WGS 84 / UTM zone 5N", "code": 32605}, + {"name": "WGS 84 / UTM zone 6N", "code": 32606}, + {"name": "WGS 84 / UTM zone 7N", "code": 32607}, + {"name": "WGS 84 / UTM zone 8N", "code": 32608}, + {"name": "WGS 84 / UTM zone 9N", "code": 32609}, + {"name": "WGS 84 / SCAR IMW ST05-08", "code": 3261}, + {"name": "WGS 84 / UTM zone 10N", "code": 32610}, + {"name": "WGS 84 / UTM zone 11N", "code": 32611}, + {"name": "WGS 84 / UTM zone 12N", "code": 32612}, + {"name": "WGS 84 / UTM zone 13N", "code": 32613}, + {"name": "WGS 84 / UTM zone 14N", "code": 32614}, + {"name": "WGS 84 / UTM zone 15N", "code": 32615}, + {"name": "WGS 84 / UTM zone 16N", "code": 32616}, + {"name": "WGS 84 / UTM zone 17N", "code": 32617}, + {"name": "WGS 84 / UTM zone 18N", "code": 32618}, + {"name": "WGS 84 / UTM zone 19N", "code": 32619}, + {"name": "WGS 84 / SCAR IMW ST09-12", "code": 3262}, + {"name": "WGS 84 / UTM zone 20N", "code": 32620}, + {"name": "WGS 84 / UTM zone 21N", "code": 32621}, + {"name": "WGS 84 / UTM zone 22N", "code": 32622}, + {"name": "WGS 84 / UTM zone 23N", "code": 32623}, + {"name": "WGS 84 / UTM zone 24N", "code": 32624}, + {"name": "WGS 84 / UTM zone 25N", "code": 32625}, + {"name": "WGS 84 / UTM zone 26N", "code": 32626}, + {"name": "WGS 84 / UTM zone 27N", "code": 32627}, + {"name": "WGS 84 / UTM zone 28N", "code": 32628}, + {"name": "WGS 84 / UTM zone 29N", "code": 32629}, + {"name": "WGS 84 / SCAR IMW ST13-16", "code": 3263}, + {"name": "WGS 84 / UTM zone 30N", "code": 32630}, + {"name": "WGS 84 / UTM zone 31N", "code": 32631}, + {"name": "WGS 84 / UTM zone 32N", "code": 32632}, + {"name": "WGS 84 / UTM zone 33N", "code": 32633}, + {"name": "WGS 84 / UTM zone 34N", "code": 32634}, + {"name": "WGS 84 / UTM zone 35N", "code": 32635}, + {"name": "WGS 84 / UTM zone 36N", "code": 32636}, + {"name": "WGS 84 / UTM zone 37N", "code": 32637}, + {"name": "WGS 84 / UTM zone 38N", "code": 32638}, + {"name": "WGS 84 / UTM zone 39N", "code": 32639}, + {"name": "WGS 84 / SCAR IMW ST17-20", "code": 3264}, + {"name": "WGS 84 / UTM zone 40N", "code": 32640}, + {"name": "WGS 84 / UTM zone 41N", "code": 32641}, + {"name": "WGS 84 / UTM zone 42N", "code": 32642}, + {"name": "WGS 84 / UTM zone 43N", "code": 32643}, + {"name": "WGS 84 / UTM zone 44N", "code": 32644}, + {"name": "WGS 84 / UTM zone 45N", "code": 32645}, + {"name": "WGS 84 / UTM zone 46N", "code": 32646}, + {"name": "WGS 84 / UTM zone 47N", "code": 32647}, + {"name": "WGS 84 / UTM zone 48N", "code": 32648}, + {"name": "WGS 84 / UTM zone 49N", "code": 32649}, + {"name": "WGS 84 / SCAR IMW ST21-24", "code": 3265}, + {"name": "WGS 84 / UTM zone 50N", "code": 32650}, + {"name": "WGS 84 / UTM zone 51N", "code": 32651}, + {"name": "WGS 84 / UTM zone 52N", "code": 32652}, + {"name": "WGS 84 / UTM zone 53N", "code": 32653}, + {"name": "WGS 84 / UTM zone 54N", "code": 32654}, + {"name": "WGS 84 / UTM zone 55N", "code": 32655}, + {"name": "WGS 84 / UTM zone 56N", "code": 32656}, + {"name": "WGS 84 / UTM zone 57N", "code": 32657}, + {"name": "WGS 84 / UTM zone 58N", "code": 32658}, + {"name": "WGS 84 / UTM zone 59N", "code": 32659}, + {"name": "WGS 84 / SCAR IMW ST25-28", "code": 3266}, + {"name": "WGS 84 / UTM zone 60N", "code": 32660}, + {"name": "WGS 84 / UPS North (N,E)", "code": 32661}, + {"name": "WGS 84 / Plate Carree", "code": 32662}, + {"name": "WGS 84 / World Equidistant Cylindrical", "code": 32663}, + {"name": "WGS 84 / BLM 14N (ftUS)", "code": 32664}, + {"name": "WGS 84 / BLM 15N (ftUS)", "code": 32665}, + {"name": "WGS 84 / BLM 16N (ftUS)", "code": 32666}, + {"name": "WGS 84 / BLM 17N (ftUS)", "code": 32667}, + {"name": "WGS 84 / SCAR IMW ST29-32", "code": 3267}, + {"name": "WGS 84 / SCAR IMW ST33-36", "code": 3268}, + {"name": "WGS 84 / SCAR IMW ST37-40", "code": 3269}, + {"name": "WGS 84 / SCAR IMW ST41-44", "code": 3270}, + {"name": "WGS 84 / UTM grid system (southern hemisphere)", "code": 32700}, + {"name": "WGS 84 / UTM zone 1S", "code": 32701}, + {"name": "WGS 84 / UTM zone 2S", "code": 32702}, + {"name": "WGS 84 / UTM zone 3S", "code": 32703}, + {"name": "WGS 84 / UTM zone 4S", "code": 32704}, + {"name": "WGS 84 / UTM zone 5S", "code": 32705}, + {"name": "WGS 84 / UTM zone 6S", "code": 32706}, + {"name": "WGS 84 / UTM zone 7S", "code": 32707}, + {"name": "WGS 84 / UTM zone 8S", "code": 32708}, + {"name": "WGS 84 / UTM zone 9S", "code": 32709}, + {"name": "WGS 84 / SCAR IMW ST45-48", "code": 3271}, + {"name": "WGS 84 / UTM zone 10S", "code": 32710}, + {"name": "WGS 84 / UTM zone 11S", "code": 32711}, + {"name": "WGS 84 / UTM zone 12S", "code": 32712}, + {"name": "WGS 84 / UTM zone 13S", "code": 32713}, + {"name": "WGS 84 / UTM zone 14S", "code": 32714}, + {"name": "WGS 84 / UTM zone 15S", "code": 32715}, + {"name": "WGS 84 / UTM zone 16S", "code": 32716}, + {"name": "WGS 84 / UTM zone 17S", "code": 32717}, + {"name": "WGS 84 / UTM zone 18S", "code": 32718}, + {"name": "WGS 84 / UTM zone 19S", "code": 32719}, + {"name": "WGS 84 / SCAR IMW ST49-52", "code": 3272}, + {"name": "WGS 84 / UTM zone 20S", "code": 32720}, + {"name": "WGS 84 / UTM zone 21S", "code": 32721}, + {"name": "WGS 84 / UTM zone 22S", "code": 32722}, + {"name": "WGS 84 / UTM zone 23S", "code": 32723}, + {"name": "WGS 84 / UTM zone 24S", "code": 32724}, + {"name": "WGS 84 / UTM zone 25S", "code": 32725}, + {"name": "WGS 84 / UTM zone 26S", "code": 32726}, + {"name": "WGS 84 / UTM zone 27S", "code": 32727}, + {"name": "WGS 84 / UTM zone 28S", "code": 32728}, + {"name": "WGS 84 / UTM zone 29S", "code": 32729}, + {"name": "WGS 84 / SCAR IMW ST53-56", "code": 3273}, + {"name": "WGS 84 / UTM zone 30S", "code": 32730}, + {"name": "WGS 84 / UTM zone 31S", "code": 32731}, + {"name": "WGS 84 / UTM zone 32S", "code": 32732}, + {"name": "WGS 84 / UTM zone 33S", "code": 32733}, + {"name": "WGS 84 / UTM zone 34S", "code": 32734}, + {"name": "WGS 84 / UTM zone 35S", "code": 32735}, + {"name": "WGS 84 / UTM zone 36S", "code": 32736}, + {"name": "WGS 84 / UTM zone 37S", "code": 32737}, + {"name": "WGS 84 / UTM zone 38S", "code": 32738}, + {"name": "WGS 84 / UTM zone 39S", "code": 32739}, + {"name": "WGS 84 / SCAR IMW ST57-60", "code": 3274}, + {"name": "WGS 84 / UTM zone 40S", "code": 32740}, + {"name": "WGS 84 / UTM zone 41S", "code": 32741}, + {"name": "WGS 84 / UTM zone 42S", "code": 32742}, + {"name": "WGS 84 / UTM zone 43S", "code": 32743}, + {"name": "WGS 84 / UTM zone 44S", "code": 32744}, + {"name": "WGS 84 / UTM zone 45S", "code": 32745}, + {"name": "WGS 84 / UTM zone 46S", "code": 32746}, + {"name": "WGS 84 / UTM zone 47S", "code": 32747}, + {"name": "WGS 84 / UTM zone 48S", "code": 32748}, + {"name": "WGS 84 / UTM zone 49S", "code": 32749}, + {"name": "WGS 84 / SCAR IMW SU01-05", "code": 3275}, + {"name": "WGS 84 / UTM zone 50S", "code": 32750}, + {"name": "WGS 84 / UTM zone 51S", "code": 32751}, + {"name": "WGS 84 / UTM zone 52S", "code": 32752}, + {"name": "WGS 84 / UTM zone 53S", "code": 32753}, + {"name": "WGS 84 / UTM zone 54S", "code": 32754}, + {"name": "WGS 84 / UTM zone 55S", "code": 32755}, + {"name": "WGS 84 / UTM zone 56S", "code": 32756}, + {"name": "WGS 84 / UTM zone 57S", "code": 32757}, + {"name": "WGS 84 / UTM zone 58S", "code": 32758}, + {"name": "WGS 84 / UTM zone 59S", "code": 32759}, + {"name": "WGS 84 / SCAR IMW SU06-10", "code": 3276}, + {"name": "WGS 84 / UTM zone 60S", "code": 32760}, + {"name": "WGS 84 / UPS South (N,E)", "code": 32761}, + {"name": "WGS 84 / TM 36 SE", "code": 32766}, + {"name": "WGS 84 / SCAR IMW SU11-15", "code": 3277}, + {"name": "WGS 84 / SCAR IMW SU16-20", "code": 3278}, + {"name": "WGS 84 / SCAR IMW SU21-25", "code": 3279}, + {"name": "WGS 84 / SCAR IMW SU26-30", "code": 3280}, + {"name": "WGS 84 / SCAR IMW SU31-35", "code": 3281}, + {"name": "WGS 84 / SCAR IMW SU36-40", "code": 3282}, + {"name": "WGS 84 / SCAR IMW SU41-45", "code": 3283}, + {"name": "WGS 84 / SCAR IMW SU46-50", "code": 3284}, + {"name": "WGS 84 / SCAR IMW SU51-55", "code": 3285}, + {"name": "WGS 84 / SCAR IMW SU56-60", "code": 3286}, + {"name": "WGS 84 / SCAR IMW SV01-10", "code": 3287}, + {"name": "WGS 84 / SCAR IMW SV11-20", "code": 3288}, + {"name": "WGS 84 / SCAR IMW SV21-30", "code": 3289}, + {"name": "WGS 84 / SCAR IMW SV31-40", "code": 3290}, + {"name": "WGS 84 / SCAR IMW SV41-50", "code": 3291}, + {"name": "WGS 84 / SCAR IMW SV51-60", "code": 3292}, + {"name": "WGS 84 / SCAR IMW SW01-60", "code": 3293}, + {"name": "WGS 84 / USGS Transantarctic Mountains", "code": 3294}, + {"name": "Guam 1963 / Yap Islands", "code": 3295}, + {"name": "RGPF / UTM zone 5S", "code": 3296}, + {"name": "RGPF / UTM zone 6S", "code": 3297}, + {"name": "RGPF / UTM zone 7S", "code": 3298}, + {"name": "RGPF / UTM zone 8S", "code": 3299}, + {"name": "Estonian Coordinate System of 1992", "code": 3300}, + {"name": "Estonian Coordinate System of 1997", "code": 3301}, + {"name": "IGN63 Hiva Oa / UTM zone 7S", "code": 3302}, + {"name": "Fatu Iva 72 / UTM zone 7S", "code": 3303}, + {"name": "Tahiti 79 / UTM zone 6S", "code": 3304}, + {"name": "Moorea 87 / UTM zone 6S", "code": 3305}, + {"name": "Maupiti 83 / UTM zone 5S", "code": 3306}, + {"name": "Nakhl-e Ghanem / UTM zone 39N", "code": 3307}, + {"name": "GDA94 / NSW Lambert", "code": 3308}, + {"name": "NAD27 / California Albers", "code": 3309}, + {"name": "NAD83 / California Albers", "code": 3310}, + {"name": "NAD83(HARN) / California Albers", "code": 3311}, + {"name": "CSG67 / UTM zone 21N", "code": 3312}, + {"name": "RGFG95 / UTM zone 21N", "code": 3313}, + {"name": "Katanga 1955 / Katanga Lambert", "code": 3314}, + {"name": "Katanga 1955 / Katanga TM", "code": 3315}, + {"name": "Kasai 1953 / Congo TM zone 22", "code": 3316}, + {"name": "Kasai 1953 / Congo TM zone 24", "code": 3317}, + {"name": "IGC 1962 / Congo TM zone 12", "code": 3318}, + {"name": "IGC 1962 / Congo TM zone 14", "code": 3319}, + {"name": "IGC 1962 / Congo TM zone 16", "code": 3320}, + {"name": "IGC 1962 / Congo TM zone 18", "code": 3321}, + {"name": "IGC 1962 / Congo TM zone 20", "code": 3322}, + {"name": "IGC 1962 / Congo TM zone 22", "code": 3323}, + {"name": "IGC 1962 / Congo TM zone 24", "code": 3324}, + {"name": "IGC 1962 / Congo TM zone 26", "code": 3325}, + {"name": "IGC 1962 / Congo TM zone 28", "code": 3326}, + {"name": "IGC 1962 / Congo TM zone 30", "code": 3327}, + {"name": "Pulkovo 1942(58) / GUGiK-80", "code": 3328}, + {"name": "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 5", "code": 3329}, + {"name": "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 6", "code": 3330}, + {"name": "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 7", "code": 3331}, + {"name": "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 8", "code": 3332}, + {"name": "Pulkovo 1942(58) / Gauss-Kruger zone 3", "code": 3333}, + {"name": "Pulkovo 1942(58) / Gauss-Kruger zone 4", "code": 3334}, + {"name": "Pulkovo 1942(58) / Gauss-Kruger zone 5", "code": 3335}, + {"name": "IGN 1962 Kerguelen / UTM zone 42S", "code": 3336}, + {"name": "Le Pouce 1934 / Mauritius Grid", "code": 3337}, + {"name": "NAD83 / Alaska Albers", "code": 3338}, + {"name": "IGCB 1955 / Congo TM zone 12", "code": 3339}, + {"name": "IGCB 1955 / Congo TM zone 14", "code": 3340}, + {"name": "IGCB 1955 / Congo TM zone 16", "code": 3341}, + {"name": "IGCB 1955 / UTM zone 33S", "code": 3342}, + {"name": "Mauritania 1999 / UTM zone 28N", "code": 3343}, + {"name": "Mauritania 1999 / UTM zone 29N", "code": 3344}, + {"name": "Mauritania 1999 / UTM zone 30N", "code": 3345}, + {"name": "LKS94 / Lithuania TM", "code": 3346}, + {"name": "NAD83 / Statistics Canada Lambert", "code": 3347}, + {"name": "NAD83(CSRS) / Statistics Canada Lambert", "code": 3348}, + {"name": "WGS 84 / PDC Mercator", "code": 3349}, + {"name": "Pulkovo 1942 / CS63 zone C0", "code": 3350}, + {"name": "Pulkovo 1942 / CS63 zone C1", "code": 3351}, + {"name": "Pulkovo 1942 / CS63 zone C2", "code": 3352}, + {"name": "Mhast (onshore) / UTM zone 32S", "code": 3353}, + {"name": "Mhast (offshore) / UTM zone 32S", "code": 3354}, + {"name": "Egypt Gulf of Suez S-650 TL / Red Belt", "code": 3355}, + {"name": "Grand Cayman 1959 / UTM zone 17N", "code": 3356}, + {"name": "Little Cayman 1961 / UTM zone 17N", "code": 3357}, + {"name": "NAD83(HARN) / North Carolina", "code": 3358}, + {"name": "NAD83(HARN) / North Carolina (ftUS)", "code": 3359}, + {"name": "NAD83(HARN) / South Carolina", "code": 3360}, + {"name": "NAD83(HARN) / South Carolina (ft)", "code": 3361}, + {"name": "NAD83(HARN) / Pennsylvania North", "code": 3362}, + {"name": "NAD83(HARN) / Pennsylvania North (ftUS)", "code": 3363}, + {"name": "NAD83(HARN) / Pennsylvania South", "code": 3364}, + {"name": "NAD83(HARN) / Pennsylvania South (ftUS)", "code": 3365}, + {"name": "Hong Kong 1963 Grid System", "code": 3366}, + {"name": "IGN Astro 1960 / UTM zone 28N", "code": 3367}, + {"name": "IGN Astro 1960 / UTM zone 29N", "code": 3368}, + {"name": "IGN Astro 1960 / UTM zone 30N", "code": 3369}, + {"name": "NAD27 / UTM zone 59N", "code": 3370}, + {"name": "NAD27 / UTM zone 60N", "code": 3371}, + {"name": "NAD83 / UTM zone 59N", "code": 3372}, + {"name": "NAD83 / UTM zone 60N", "code": 3373}, + {"name": "FD54 / UTM zone 29N", "code": 3374}, + {"name": "GDM2000 / Peninsula RSO", "code": 3375}, + {"name": "GDM2000 / East Malaysia BRSO", "code": 3376}, + {"name": "GDM2000 / Johor Grid", "code": 3377}, + {"name": "GDM2000 / Sembilan and Melaka Grid", "code": 3378}, + {"name": "GDM2000 / Pahang Grid", "code": 3379}, + {"name": "GDM2000 / Selangor Grid", "code": 3380}, + {"name": "GDM2000 / Terengganu Grid", "code": 3381}, + {"name": "GDM2000 / Pinang Grid", "code": 3382}, + {"name": "GDM2000 / Kedah and Perlis Grid", "code": 3383}, + {"name": "GDM2000 / Perak Grid", "code": 3384}, + {"name": "GDM2000 / Kelantan Grid", "code": 3385}, + {"name": "KKJ / Finland zone 0", "code": 3386}, + {"name": "KKJ / Finland zone 5", "code": 3387}, + {"name": "Pulkovo 1942 / Caspian Sea Mercator", "code": 3388}, + {"name": "Pulkovo 1942 / 3-degree Gauss-Kruger zone 60", "code": 3389}, + {"name": "Pulkovo 1995 / 3-degree Gauss-Kruger zone 60", "code": 3390}, + {"name": "Karbala 1979 / UTM zone 37N", "code": 3391}, + {"name": "Karbala 1979 / UTM zone 38N", "code": 3392}, + {"name": "Karbala 1979 / UTM zone 39N", "code": 3393}, + {"name": "Nahrwan 1934 / Iraq zone", "code": 3394}, + {"name": "WGS 84 / World Mercator", "code": 3395}, + {"name": "PD/83 / 3-degree Gauss-Kruger zone 3", "code": 3396}, + {"name": "PD/83 / 3-degree Gauss-Kruger zone 4", "code": 3397}, + {"name": "RD/83 / 3-degree Gauss-Kruger zone 4", "code": 3398}, + {"name": "RD/83 / 3-degree Gauss-Kruger zone 5", "code": 3399}, + {"name": "NAD83 / Alberta 10-TM (Forest)", "code": 3400}, + {"name": "NAD83 / Alberta 10-TM (Resource)", "code": 3401}, + {"name": "NAD83(CSRS) / Alberta 10-TM (Forest)", "code": 3402}, + {"name": "NAD83(CSRS) / Alberta 10-TM (Resource)", "code": 3403}, + {"name": "NAD83(HARN) / North Carolina (ftUS)", "code": 3404}, + {"name": "VN-2000 / UTM zone 48N", "code": 3405}, + {"name": "VN-2000 / UTM zone 49N", "code": 3406}, + {"name": "Hong Kong 1963 Grid System", "code": 3407}, + {"name": "NSIDC EASE-Grid North", "code": 3408}, + {"name": "NSIDC EASE-Grid South", "code": 3409}, + {"name": "NSIDC EASE-Grid Global", "code": 3410}, + {"name": "NSIDC Sea Ice Polar Stereographic North", "code": 3411}, + {"name": "NSIDC Sea Ice Polar Stereographic South", "code": 3412}, + {"name": "WGS 84 / NSIDC Sea Ice Polar Stereographic North", "code": 3413}, + {"name": "SVY21 / Singapore TM", "code": 3414}, + {"name": "WGS 72BE / South China Sea Lambert", "code": 3415}, + {"name": "ETRS89 / Austria Lambert", "code": 3416}, + {"name": "NAD83 / Iowa North (ftUS)", "code": 3417}, + {"name": "NAD83 / Iowa South (ftUS)", "code": 3418}, + {"name": "NAD83 / Kansas North (ftUS)", "code": 3419}, + {"name": "NAD83 / Kansas South (ftUS)", "code": 3420}, + {"name": "NAD83 / Nevada East (ftUS)", "code": 3421}, + {"name": "NAD83 / Nevada Central (ftUS)", "code": 3422}, + {"name": "NAD83 / Nevada West (ftUS)", "code": 3423}, + {"name": "NAD83 / New Jersey (ftUS)", "code": 3424}, + {"name": "NAD83(HARN) / Iowa North (ftUS)", "code": 3425}, + {"name": "NAD83(HARN) / Iowa South (ftUS)", "code": 3426}, + {"name": "NAD83(HARN) / Kansas North (ftUS)", "code": 3427}, + {"name": "NAD83(HARN) / Kansas South (ftUS)", "code": 3428}, + {"name": "NAD83(HARN) / Nevada East (ftUS)", "code": 3429}, + {"name": "NAD83(HARN) / Nevada Central (ftUS)", "code": 3430}, + {"name": "NAD83(HARN) / Nevada West (ftUS)", "code": 3431}, + {"name": "NAD83(HARN) / New Jersey (ftUS)", "code": 3432}, + {"name": "NAD83 / Arkansas North (ftUS)", "code": 3433}, + {"name": "NAD83 / Arkansas South (ftUS)", "code": 3434}, + {"name": "NAD83 / Illinois East (ftUS)", "code": 3435}, + {"name": "NAD83 / Illinois West (ftUS)", "code": 3436}, + {"name": "NAD83 / New Hampshire (ftUS)", "code": 3437}, + {"name": "NAD83 / Rhode Island (ftUS)", "code": 3438}, + {"name": "PSD93 / UTM zone 39N", "code": 3439}, + {"name": "PSD93 / UTM zone 40N", "code": 3440}, + {"name": "NAD83(HARN) / Arkansas North (ftUS)", "code": 3441}, + {"name": "NAD83(HARN) / Arkansas South (ftUS)", "code": 3442}, + {"name": "NAD83(HARN) / Illinois East (ftUS)", "code": 3443}, + {"name": "NAD83(HARN) / Illinois West (ftUS)", "code": 3444}, + {"name": "NAD83(HARN) / New Hampshire (ftUS)", "code": 3445}, + {"name": "NAD83(HARN) / Rhode Island (ftUS)", "code": 3446}, + {"name": "ETRS89 / Belgian Lambert 2005", "code": 3447}, + {"name": "JAD2001 / Jamaica Metric Grid", "code": 3448}, + {"name": "JAD2001 / UTM zone 17N", "code": 3449}, + {"name": "JAD2001 / UTM zone 18N", "code": 3450}, + {"name": "NAD83 / Louisiana North (ftUS)", "code": 3451}, + {"name": "NAD83 / Louisiana South (ftUS)", "code": 3452}, + {"name": "NAD83 / Louisiana Offshore (ftUS)", "code": 3453}, + {"name": "NAD83 / South Dakota North (ftUS)", "code": 3454}, + {"name": "NAD83 / South Dakota South (ftUS)", "code": 3455}, + {"name": "NAD83(HARN) / Louisiana North (ftUS)", "code": 3456}, + {"name": "NAD83(HARN) / Louisiana South (ftUS)", "code": 3457}, + {"name": "NAD83(HARN) / South Dakota North (ftUS)", "code": 3458}, + {"name": "NAD83(HARN) / South Dakota South (ftUS)", "code": 3459}, + {"name": "Fiji 1986 / Fiji Map Grid", "code": 3460}, + {"name": "Dabola 1981 / UTM zone 28N", "code": 3461}, + {"name": "Dabola 1981 / UTM zone 29N", "code": 3462}, + {"name": "NAD83 / Maine CS2000 Central", "code": 3463}, + {"name": "NAD83(HARN) / Maine CS2000 Central", "code": 3464}, + {"name": "NAD83(NSRS2007) / Alabama East", "code": 3465}, + {"name": "NAD83(NSRS2007) / Alabama West", "code": 3466}, + {"name": "NAD83(NSRS2007) / Alaska Albers", "code": 3467}, + {"name": "NAD83(NSRS2007) / Alaska zone 1", "code": 3468}, + {"name": "NAD83(NSRS2007) / Alaska zone 2", "code": 3469}, + {"name": "NAD83(NSRS2007) / Alaska zone 3", "code": 3470}, + {"name": "NAD83(NSRS2007) / Alaska zone 4", "code": 3471}, + {"name": "NAD83(NSRS2007) / Alaska zone 5", "code": 3472}, + {"name": "NAD83(NSRS2007) / Alaska zone 6", "code": 3473}, + {"name": "NAD83(NSRS2007) / Alaska zone 7", "code": 3474}, + {"name": "NAD83(NSRS2007) / Alaska zone 8", "code": 3475}, + {"name": "NAD83(NSRS2007) / Alaska zone 9", "code": 3476}, + {"name": "NAD83(NSRS2007) / Alaska zone 10", "code": 3477}, + {"name": "NAD83(NSRS2007) / Arizona Central", "code": 3478}, + {"name": "NAD83(NSRS2007) / Arizona Central (ft)", "code": 3479}, + {"name": "NAD83(NSRS2007) / Arizona East", "code": 3480}, + {"name": "NAD83(NSRS2007) / Arizona East (ft)", "code": 3481}, + {"name": "NAD83(NSRS2007) / Arizona West", "code": 3482}, + {"name": "NAD83(NSRS2007) / Arizona West (ft)", "code": 3483}, + {"name": "NAD83(NSRS2007) / Arkansas North", "code": 3484}, + {"name": "NAD83(NSRS2007) / Arkansas North (ftUS)", "code": 3485}, + {"name": "NAD83(NSRS2007) / Arkansas South", "code": 3486}, + {"name": "NAD83(NSRS2007) / Arkansas South (ftUS)", "code": 3487}, + {"name": "NAD83(NSRS2007) / California Albers", "code": 3488}, + {"name": "NAD83(NSRS2007) / California zone 1", "code": 3489}, + {"name": "NAD83(NSRS2007) / California zone 1 (ftUS)", "code": 3490}, + {"name": "NAD83(NSRS2007) / California zone 2", "code": 3491}, + {"name": "NAD83(NSRS2007) / California zone 2 (ftUS)", "code": 3492}, + {"name": "NAD83(NSRS2007) / California zone 3", "code": 3493}, + {"name": "NAD83(NSRS2007) / California zone 3 (ftUS)", "code": 3494}, + {"name": "NAD83(NSRS2007) / California zone 4", "code": 3495}, + {"name": "NAD83(NSRS2007) / California zone 4 (ftUS)", "code": 3496}, + {"name": "NAD83(NSRS2007) / California zone 5", "code": 3497}, + {"name": "NAD83(NSRS2007) / California zone 5 (ftUS)", "code": 3498}, + {"name": "NAD83(NSRS2007) / California zone 6", "code": 3499}, + {"name": "NAD83(NSRS2007) / California zone 6 (ftUS)", "code": 3500}, + {"name": "NAD83(NSRS2007) / Colorado Central", "code": 3501}, + {"name": "NAD83(NSRS2007) / Colorado Central (ftUS)", "code": 3502}, + {"name": "NAD83(NSRS2007) / Colorado North", "code": 3503}, + {"name": "NAD83(NSRS2007) / Colorado North (ftUS)", "code": 3504}, + {"name": "NAD83(NSRS2007) / Colorado South", "code": 3505}, + {"name": "NAD83(NSRS2007) / Colorado South (ftUS)", "code": 3506}, + {"name": "NAD83(NSRS2007) / Connecticut", "code": 3507}, + {"name": "NAD83(NSRS2007) / Connecticut (ftUS)", "code": 3508}, + {"name": "NAD83(NSRS2007) / Delaware", "code": 3509}, + {"name": "NAD83(NSRS2007) / Delaware (ftUS)", "code": 3510}, + {"name": "NAD83(NSRS2007) / Florida East", "code": 3511}, + {"name": "NAD83(NSRS2007) / Florida East (ftUS)", "code": 3512}, + {"name": "NAD83(NSRS2007) / Florida GDL Albers", "code": 3513}, + {"name": "NAD83(NSRS2007) / Florida North", "code": 3514}, + {"name": "NAD83(NSRS2007) / Florida North (ftUS)", "code": 3515}, + {"name": "NAD83(NSRS2007) / Florida West", "code": 3516}, + {"name": "NAD83(NSRS2007) / Florida West (ftUS)", "code": 3517}, + {"name": "NAD83(NSRS2007) / Georgia East", "code": 3518}, + {"name": "NAD83(NSRS2007) / Georgia East (ftUS)", "code": 3519}, + {"name": "NAD83(NSRS2007) / Georgia West", "code": 3520}, + {"name": "NAD83(NSRS2007) / Georgia West (ftUS)", "code": 3521}, + {"name": "NAD83(NSRS2007) / Idaho Central", "code": 3522}, + {"name": "NAD83(NSRS2007) / Idaho Central (ftUS)", "code": 3523}, + {"name": "NAD83(NSRS2007) / Idaho East", "code": 3524}, + {"name": "NAD83(NSRS2007) / Idaho East (ftUS)", "code": 3525}, + {"name": "NAD83(NSRS2007) / Idaho West", "code": 3526}, + {"name": "NAD83(NSRS2007) / Idaho West (ftUS)", "code": 3527}, + {"name": "NAD83(NSRS2007) / Illinois East", "code": 3528}, + {"name": "NAD83(NSRS2007) / Illinois East (ftUS)", "code": 3529}, + {"name": "NAD83(NSRS2007) / Illinois West", "code": 3530}, + {"name": "NAD83(NSRS2007) / Illinois West (ftUS)", "code": 3531}, + {"name": "NAD83(NSRS2007) / Indiana East", "code": 3532}, + {"name": "NAD83(NSRS2007) / Indiana East (ftUS)", "code": 3533}, + {"name": "NAD83(NSRS2007) / Indiana West", "code": 3534}, + {"name": "NAD83(NSRS2007) / Indiana West (ftUS)", "code": 3535}, + {"name": "NAD83(NSRS2007) / Iowa North", "code": 3536}, + {"name": "NAD83(NSRS2007) / Iowa North (ftUS)", "code": 3537}, + {"name": "NAD83(NSRS2007) / Iowa South", "code": 3538}, + {"name": "NAD83(NSRS2007) / Iowa South (ftUS)", "code": 3539}, + {"name": "NAD83(NSRS2007) / Kansas North", "code": 3540}, + {"name": "NAD83(NSRS2007) / Kansas North (ftUS)", "code": 3541}, + {"name": "NAD83(NSRS2007) / Kansas South", "code": 3542}, + {"name": "NAD83(NSRS2007) / Kansas South (ftUS)", "code": 3543}, + {"name": "NAD83(NSRS2007) / Kentucky North", "code": 3544}, + {"name": "NAD83(NSRS2007) / Kentucky North (ftUS)", "code": 3545}, + {"name": "NAD83(NSRS2007) / Kentucky Single Zone", "code": 3546}, + {"name": "NAD83(NSRS2007) / Kentucky Single Zone (ftUS)", "code": 3547}, + {"name": "NAD83(NSRS2007) / Kentucky South", "code": 3548}, + {"name": "NAD83(NSRS2007) / Kentucky South (ftUS)", "code": 3549}, + {"name": "NAD83(NSRS2007) / Louisiana North", "code": 3550}, + {"name": "NAD83(NSRS2007) / Louisiana North (ftUS)", "code": 3551}, + {"name": "NAD83(NSRS2007) / Louisiana South", "code": 3552}, + {"name": "NAD83(NSRS2007) / Louisiana South (ftUS)", "code": 3553}, + {"name": "NAD83(NSRS2007) / Maine CS2000 Central", "code": 3554}, + {"name": "NAD83(NSRS2007) / Maine CS2000 East", "code": 3555}, + {"name": "NAD83(NSRS2007) / Maine CS2000 West", "code": 3556}, + {"name": "NAD83(NSRS2007) / Maine East", "code": 3557}, + {"name": "NAD83(NSRS2007) / Maine West", "code": 3558}, + {"name": "NAD83(NSRS2007) / Maryland", "code": 3559}, + {"name": "NAD83 / Utah North (ftUS)", "code": 3560}, + {"name": "Old Hawaiian / Hawaii zone 1", "code": 3561}, + {"name": "Old Hawaiian / Hawaii zone 2", "code": 3562}, + {"name": "Old Hawaiian / Hawaii zone 3", "code": 3563}, + {"name": "Old Hawaiian / Hawaii zone 4", "code": 3564}, + {"name": "Old Hawaiian / Hawaii zone 5", "code": 3565}, + {"name": "NAD83 / Utah Central (ftUS)", "code": 3566}, + {"name": "NAD83 / Utah South (ftUS)", "code": 3567}, + {"name": "NAD83(HARN) / Utah North (ftUS)", "code": 3568}, + {"name": "NAD83(HARN) / Utah Central (ftUS)", "code": 3569}, + {"name": "NAD83(HARN) / Utah South (ftUS)", "code": 3570}, + {"name": "WGS 84 / North Pole LAEA Bering Sea", "code": 3571}, + {"name": "WGS 84 / North Pole LAEA Alaska", "code": 3572}, + {"name": "WGS 84 / North Pole LAEA Canada", "code": 3573}, + {"name": "WGS 84 / North Pole LAEA Atlantic", "code": 3574}, + {"name": "WGS 84 / North Pole LAEA Europe", "code": 3575}, + {"name": "WGS 84 / North Pole LAEA Russia", "code": 3576}, + {"name": "GDA94 / Australian Albers", "code": 3577}, + {"name": "NAD83 / Yukon Albers", "code": 3578}, + {"name": "NAD83(CSRS) / Yukon Albers", "code": 3579}, + {"name": "NAD83 / NWT Lambert", "code": 3580}, + {"name": "NAD83(CSRS) / NWT Lambert", "code": 3581}, + {"name": "NAD83(NSRS2007) / Maryland (ftUS)", "code": 3582}, + {"name": "NAD83(NSRS2007) / Massachusetts Island", "code": 3583}, + {"name": "NAD83(NSRS2007) / Massachusetts Island (ftUS)", "code": 3584}, + {"name": "NAD83(NSRS2007) / Massachusetts Mainland", "code": 3585}, + {"name": "NAD83(NSRS2007) / Massachusetts Mainland (ftUS)", "code": 3586}, + {"name": "NAD83(NSRS2007) / Michigan Central", "code": 3587}, + {"name": "NAD83(NSRS2007) / Michigan Central (ft)", "code": 3588}, + {"name": "NAD83(NSRS2007) / Michigan North", "code": 3589}, + {"name": "NAD83(NSRS2007) / Michigan North (ft)", "code": 3590}, + {"name": "NAD83(NSRS2007) / Michigan Oblique Mercator", "code": 3591}, + {"name": "NAD83(NSRS2007) / Michigan South", "code": 3592}, + {"name": "NAD83(NSRS2007) / Michigan South (ft)", "code": 3593}, + {"name": "NAD83(NSRS2007) / Minnesota Central", "code": 3594}, + {"name": "NAD83(NSRS2007) / Minnesota North", "code": 3595}, + {"name": "NAD83(NSRS2007) / Minnesota South", "code": 3596}, + {"name": "NAD83(NSRS2007) / Mississippi East", "code": 3597}, + {"name": "NAD83(NSRS2007) / Mississippi East (ftUS)", "code": 3598}, + {"name": "NAD83(NSRS2007) / Mississippi West", "code": 3599}, + {"name": "NAD83(NSRS2007) / Mississippi West (ftUS)", "code": 3600}, + {"name": "NAD83(NSRS2007) / Missouri Central", "code": 3601}, + {"name": "NAD83(NSRS2007) / Missouri East", "code": 3602}, + {"name": "NAD83(NSRS2007) / Missouri West", "code": 3603}, + {"name": "NAD83(NSRS2007) / Montana", "code": 3604}, + {"name": "NAD83(NSRS2007) / Montana (ft)", "code": 3605}, + {"name": "NAD83(NSRS2007) / Nebraska", "code": 3606}, + {"name": "NAD83(NSRS2007) / Nevada Central", "code": 3607}, + {"name": "NAD83(NSRS2007) / Nevada Central (ftUS)", "code": 3608}, + {"name": "NAD83(NSRS2007) / Nevada East", "code": 3609}, + {"name": "NAD83(NSRS2007) / Nevada East (ftUS)", "code": 3610}, + {"name": "NAD83(NSRS2007) / Nevada West", "code": 3611}, + {"name": "NAD83(NSRS2007) / Nevada West (ftUS)", "code": 3612}, + {"name": "NAD83(NSRS2007) / New Hampshire", "code": 3613}, + {"name": "NAD83(NSRS2007) / New Hampshire (ftUS)", "code": 3614}, + {"name": "NAD83(NSRS2007) / New Jersey", "code": 3615}, + {"name": "NAD83(NSRS2007) / New Jersey (ftUS)", "code": 3616}, + {"name": "NAD83(NSRS2007) / New Mexico Central", "code": 3617}, + {"name": "NAD83(NSRS2007) / New Mexico Central (ftUS)", "code": 3618}, + {"name": "NAD83(NSRS2007) / New Mexico East", "code": 3619}, + {"name": "NAD83(NSRS2007) / New Mexico East (ftUS)", "code": 3620}, + {"name": "NAD83(NSRS2007) / New Mexico West", "code": 3621}, + {"name": "NAD83(NSRS2007) / New Mexico West (ftUS)", "code": 3622}, + {"name": "NAD83(NSRS2007) / New York Central", "code": 3623}, + {"name": "NAD83(NSRS2007) / New York Central (ftUS)", "code": 3624}, + {"name": "NAD83(NSRS2007) / New York East", "code": 3625}, + {"name": "NAD83(NSRS2007) / New York East (ftUS)", "code": 3626}, + {"name": "NAD83(NSRS2007) / New York Long Island", "code": 3627}, + {"name": "NAD83(NSRS2007) / New York Long Island (ftUS)", "code": 3628}, + {"name": "NAD83(NSRS2007) / New York West", "code": 3629}, + {"name": "NAD83(NSRS2007) / New York West (ftUS)", "code": 3630}, + {"name": "NAD83(NSRS2007) / North Carolina", "code": 3631}, + {"name": "NAD83(NSRS2007) / North Carolina (ftUS)", "code": 3632}, + {"name": "NAD83(NSRS2007) / North Dakota North", "code": 3633}, + {"name": "NAD83(NSRS2007) / North Dakota North (ft)", "code": 3634}, + {"name": "NAD83(NSRS2007) / North Dakota South", "code": 3635}, + {"name": "NAD83(NSRS2007) / North Dakota South (ft)", "code": 3636}, + {"name": "NAD83(NSRS2007) / Ohio North", "code": 3637}, + {"name": "NAD83(NSRS2007) / Ohio South", "code": 3638}, + {"name": "NAD83(NSRS2007) / Oklahoma North", "code": 3639}, + {"name": "NAD83(NSRS2007) / Oklahoma North (ftUS)", "code": 3640}, + {"name": "NAD83(NSRS2007) / Oklahoma South", "code": 3641}, + {"name": "NAD83(NSRS2007) / Oklahoma South (ftUS)", "code": 3642}, + {"name": "NAD83(NSRS2007) / Oregon LCC (m)", "code": 3643}, + {"name": "NAD83(NSRS2007) / Oregon GIC Lambert (ft)", "code": 3644}, + {"name": "NAD83(NSRS2007) / Oregon North", "code": 3645}, + {"name": "NAD83(NSRS2007) / Oregon North (ft)", "code": 3646}, + {"name": "NAD83(NSRS2007) / Oregon South", "code": 3647}, + {"name": "NAD83(NSRS2007) / Oregon South (ft)", "code": 3648}, + {"name": "NAD83(NSRS2007) / Pennsylvania North", "code": 3649}, + {"name": "NAD83(NSRS2007) / Pennsylvania North (ftUS)", "code": 3650}, + {"name": "NAD83(NSRS2007) / Pennsylvania South", "code": 3651}, + {"name": "NAD83(NSRS2007) / Pennsylvania South (ftUS)", "code": 3652}, + {"name": "NAD83(NSRS2007) / Rhode Island", "code": 3653}, + {"name": "NAD83(NSRS2007) / Rhode Island (ftUS)", "code": 3654}, + {"name": "NAD83(NSRS2007) / South Carolina", "code": 3655}, + {"name": "NAD83(NSRS2007) / South Carolina (ft)", "code": 3656}, + {"name": "NAD83(NSRS2007) / South Dakota North", "code": 3657}, + {"name": "NAD83(NSRS2007) / South Dakota North (ftUS)", "code": 3658}, + {"name": "NAD83(NSRS2007) / South Dakota South", "code": 3659}, + {"name": "NAD83(NSRS2007) / South Dakota South (ftUS)", "code": 3660}, + {"name": "NAD83(NSRS2007) / Tennessee", "code": 3661}, + {"name": "NAD83(NSRS2007) / Tennessee (ftUS)", "code": 3662}, + {"name": "NAD83(NSRS2007) / Texas Central", "code": 3663}, + {"name": "NAD83(NSRS2007) / Texas Central (ftUS)", "code": 3664}, + {"name": "NAD83(NSRS2007) / Texas Centric Albers Equal Area", "code": 3665}, + {"name": "NAD83(NSRS2007) / Texas Centric Lambert Conformal", "code": 3666}, + {"name": "NAD83(NSRS2007) / Texas North", "code": 3667}, + {"name": "NAD83(NSRS2007) / Texas North (ftUS)", "code": 3668}, + {"name": "NAD83(NSRS2007) / Texas North Central", "code": 3669}, + {"name": "NAD83(NSRS2007) / Texas North Central (ftUS)", "code": 3670}, + {"name": "NAD83(NSRS2007) / Texas South", "code": 3671}, + {"name": "NAD83(NSRS2007) / Texas South (ftUS)", "code": 3672}, + {"name": "NAD83(NSRS2007) / Texas South Central", "code": 3673}, + {"name": "NAD83(NSRS2007) / Texas South Central (ftUS)", "code": 3674}, + {"name": "NAD83(NSRS2007) / Utah Central", "code": 3675}, + {"name": "NAD83(NSRS2007) / Utah Central (ft)", "code": 3676}, + {"name": "NAD83(NSRS2007) / Utah Central (ftUS)", "code": 3677}, + {"name": "NAD83(NSRS2007) / Utah North", "code": 3678}, + {"name": "NAD83(NSRS2007) / Utah North (ft)", "code": 3679}, + {"name": "NAD83(NSRS2007) / Utah North (ftUS)", "code": 3680}, + {"name": "NAD83(NSRS2007) / Utah South", "code": 3681}, + {"name": "NAD83(NSRS2007) / Utah South (ft)", "code": 3682}, + {"name": "NAD83(NSRS2007) / Utah South (ftUS)", "code": 3683}, + {"name": "NAD83(NSRS2007) / Vermont", "code": 3684}, + {"name": "NAD83(NSRS2007) / Virginia North", "code": 3685}, + {"name": "NAD83(NSRS2007) / Virginia North (ftUS)", "code": 3686}, + {"name": "NAD83(NSRS2007) / Virginia South", "code": 3687}, + {"name": "NAD83(NSRS2007) / Virginia South (ftUS)", "code": 3688}, + {"name": "NAD83(NSRS2007) / Washington North", "code": 3689}, + {"name": "NAD83(NSRS2007) / Washington North (ftUS)", "code": 3690}, + {"name": "NAD83(NSRS2007) / Washington South", "code": 3691}, + {"name": "NAD83(NSRS2007) / Washington South (ftUS)", "code": 3692}, + {"name": "NAD83(NSRS2007) / West Virginia North", "code": 3693}, + {"name": "NAD83(NSRS2007) / West Virginia South", "code": 3694}, + {"name": "NAD83(NSRS2007) / Wisconsin Central", "code": 3695}, + {"name": "NAD83(NSRS2007) / Wisconsin Central (ftUS)", "code": 3696}, + {"name": "NAD83(NSRS2007) / Wisconsin North", "code": 3697}, + {"name": "NAD83(NSRS2007) / Wisconsin North (ftUS)", "code": 3698}, + {"name": "NAD83(NSRS2007) / Wisconsin South", "code": 3699}, + {"name": "NAD83(NSRS2007) / Wisconsin South (ftUS)", "code": 3700}, + {"name": "NAD83(NSRS2007) / Wisconsin Transverse Mercator", "code": 3701}, + {"name": "NAD83(NSRS2007) / Wyoming East", "code": 3702}, + {"name": "NAD83(NSRS2007) / Wyoming East Central", "code": 3703}, + {"name": "NAD83(NSRS2007) / Wyoming West Central", "code": 3704}, + {"name": "NAD83(NSRS2007) / Wyoming West", "code": 3705}, + {"name": "NAD83(NSRS2007) / UTM zone 59N", "code": 3706}, + {"name": "NAD83(NSRS2007) / UTM zone 60N", "code": 3707}, + {"name": "NAD83(NSRS2007) / UTM zone 1N", "code": 3708}, + {"name": "NAD83(NSRS2007) / UTM zone 2N", "code": 3709}, + {"name": "NAD83(NSRS2007) / UTM zone 3N", "code": 3710}, + {"name": "NAD83(NSRS2007) / UTM zone 4N", "code": 3711}, + {"name": "NAD83(NSRS2007) / UTM zone 5N", "code": 3712}, + {"name": "NAD83(NSRS2007) / UTM zone 6N", "code": 3713}, + {"name": "NAD83(NSRS2007) / UTM zone 7N", "code": 3714}, + {"name": "NAD83(NSRS2007) / UTM zone 8N", "code": 3715}, + {"name": "NAD83(NSRS2007) / UTM zone 9N", "code": 3716}, + {"name": "NAD83(NSRS2007) / UTM zone 10N", "code": 3717}, + {"name": "NAD83(NSRS2007) / UTM zone 11N", "code": 3718}, + {"name": "NAD83(NSRS2007) / UTM zone 12N", "code": 3719}, + {"name": "NAD83(NSRS2007) / UTM zone 13N", "code": 3720}, + {"name": "NAD83(NSRS2007) / UTM zone 14N", "code": 3721}, + {"name": "NAD83(NSRS2007) / UTM zone 15N", "code": 3722}, + {"name": "NAD83(NSRS2007) / UTM zone 16N", "code": 3723}, + {"name": "NAD83(NSRS2007) / UTM zone 17N", "code": 3724}, + {"name": "NAD83(NSRS2007) / UTM zone 18N", "code": 3725}, + {"name": "NAD83(NSRS2007) / UTM zone 19N", "code": 3726}, + {"name": "Reunion 1947 / TM Reunion", "code": 3727}, + {"name": "NAD83(NSRS2007) / Ohio North (ftUS)", "code": 3728}, + {"name": "NAD83(NSRS2007) / Ohio South (ftUS)", "code": 3729}, + {"name": "NAD83(NSRS2007) / Wyoming East (ftUS)", "code": 3730}, + {"name": "NAD83(NSRS2007) / Wyoming East Central (ftUS)", "code": 3731}, + {"name": "NAD83(NSRS2007) / Wyoming West Central (ftUS)", "code": 3732}, + {"name": "NAD83(NSRS2007) / Wyoming West (ftUS)", "code": 3733}, + {"name": "NAD83 / Ohio North (ftUS)", "code": 3734}, + {"name": "NAD83 / Ohio South (ftUS)", "code": 3735}, + {"name": "NAD83 / Wyoming East (ftUS)", "code": 3736}, + {"name": "NAD83 / Wyoming East Central (ftUS)", "code": 3737}, + {"name": "NAD83 / Wyoming West Central (ftUS)", "code": 3738}, + {"name": "NAD83 / Wyoming West (ftUS)", "code": 3739}, + {"name": "NAD83(HARN) / UTM zone 10N", "code": 3740}, + {"name": "NAD83(HARN) / UTM zone 11N", "code": 3741}, + {"name": "NAD83(HARN) / UTM zone 12N", "code": 3742}, + {"name": "NAD83(HARN) / UTM zone 13N", "code": 3743}, + {"name": "NAD83(HARN) / UTM zone 14N", "code": 3744}, + {"name": "NAD83(HARN) / UTM zone 15N", "code": 3745}, + {"name": "NAD83(HARN) / UTM zone 16N", "code": 3746}, + {"name": "NAD83(HARN) / UTM zone 17N", "code": 3747}, + {"name": "NAD83(HARN) / UTM zone 18N", "code": 3748}, + {"name": "NAD83(HARN) / UTM zone 19N", "code": 3749}, + {"name": "NAD83(HARN) / UTM zone 4N", "code": 3750}, + {"name": "NAD83(HARN) / UTM zone 5N", "code": 3751}, + {"name": "WGS 84 / Mercator 41", "code": 3752}, + {"name": "NAD83(HARN) / Ohio North (ftUS)", "code": 3753}, + {"name": "NAD83(HARN) / Ohio South (ftUS)", "code": 3754}, + {"name": "NAD83(HARN) / Wyoming East (ftUS)", "code": 3755}, + {"name": "NAD83(HARN) / Wyoming East Central (ftUS)", "code": 3756}, + {"name": "NAD83(HARN) / Wyoming West Central (ftUS)", "code": 3757}, + {"name": "NAD83(HARN) / Wyoming West (ftUS)", "code": 3758}, + {"name": "NAD83 / Hawaii zone 3 (ftUS)", "code": 3759}, + {"name": "NAD83(HARN) / Hawaii zone 3 (ftUS)", "code": 3760}, + {"name": "NAD83(CSRS) / UTM zone 22N", "code": 3761}, + {"name": "WGS 84 / South Georgia Lambert", "code": 3762}, + {"name": "ETRS89 / Portugal TM06", "code": 3763}, + {"name": "NZGD2000 / Chatham Island Circuit 2000", "code": 3764}, + {"name": "HTRS96 / Croatia TM", "code": 3765}, + {"name": "HTRS96 / Croatia LCC", "code": 3766}, + {"name": "HTRS96 / UTM zone 33N", "code": 3767}, + {"name": "HTRS96 / UTM zone 34N", "code": 3768}, + {"name": "Bermuda 1957 / UTM zone 20N", "code": 3769}, + {"name": "BDA2000 / Bermuda 2000 National Grid", "code": 3770}, + {"name": "NAD27 / Alberta 3TM ref merid 111 W", "code": 3771}, + {"name": "NAD27 / Alberta 3TM ref merid 114 W", "code": 3772}, + {"name": "NAD27 / Alberta 3TM ref merid 117 W", "code": 3773}, + {"name": "NAD27 / Alberta 3TM ref merid 120 W", "code": 3774}, + {"name": "NAD83 / Alberta 3TM ref merid 111 W", "code": 3775}, + {"name": "NAD83 / Alberta 3TM ref merid 114 W", "code": 3776}, + {"name": "NAD83 / Alberta 3TM ref merid 117 W", "code": 3777}, + {"name": "NAD83 / Alberta 3TM ref merid 120 W", "code": 3778}, + {"name": "NAD83(CSRS) / Alberta 3TM ref merid 111 W", "code": 3779}, + {"name": "NAD83(CSRS) / Alberta 3TM ref merid 114 W", "code": 3780}, + {"name": "NAD83(CSRS) / Alberta 3TM ref merid 117 W", "code": 3781}, + {"name": "NAD83(CSRS) / Alberta 3TM ref merid 120 W", "code": 3782}, + {"name": "Pitcairn 2006 / Pitcairn TM 2006", "code": 3783}, + {"name": "Pitcairn 1967 / UTM zone 9S", "code": 3784}, + {"name": "Popular Visualisation CRS / Mercator", "code": 3785}, + {"name": "World Equidistant Cylindrical (Sphere)", "code": 3786}, + {"name": "MGI / Slovene National Grid", "code": 3787}, + {"name": "NZGD2000 / Auckland Islands TM 2000", "code": 3788}, + {"name": "NZGD2000 / Campbell Island TM 2000", "code": 3789}, + {"name": "NZGD2000 / Antipodes Islands TM 2000", "code": 3790}, + {"name": "NZGD2000 / Raoul Island TM 2000", "code": 3791}, + {"name": "NZGD2000 / Chatham Islands TM 2000", "code": 3793}, + {"name": "Slovenia 1996 / Slovene National Grid", "code": 3794}, + {"name": "NAD27 / Cuba Norte", "code": 3795}, + {"name": "NAD27 / Cuba Sur", "code": 3796}, + {"name": "NAD27 / MTQ Lambert", "code": 3797}, + {"name": "NAD83 / MTQ Lambert", "code": 3798}, + {"name": "NAD83(CSRS) / MTQ Lambert", "code": 3799}, + {"name": "NAD27 / Alberta 3TM ref merid 120 W", "code": 3800}, + {"name": "NAD83 / Alberta 3TM ref merid 120 W", "code": 3801}, + {"name": "NAD83(CSRS) / Alberta 3TM ref merid 120 W", "code": 3802}, + {"name": "ETRS89 / Belgian Lambert 2008", "code": 3812}, + {"name": "NAD83 / Mississippi TM", "code": 3814}, + {"name": "NAD83(HARN) / Mississippi TM", "code": 3815}, + {"name": "NAD83(NSRS2007) / Mississippi TM", "code": 3816}, + {"name": "TWD97 / TM2 zone 119", "code": 3825}, + {"name": "TWD97 / TM2 zone 121", "code": 3826}, + {"name": "TWD67 / TM2 zone 119", "code": 3827}, + {"name": "TWD67 / TM2 zone 121", "code": 3828}, + {"name": "Hu Tzu Shan 1950 / UTM zone 51N", "code": 3829}, + {"name": "WGS 84 / PDC Mercator", "code": 3832}, + {"name": "Pulkovo 1942(58) / Gauss-Kruger zone 2", "code": 3833}, + {"name": "Pulkovo 1942(83) / Gauss-Kruger zone 2", "code": 3834}, + {"name": "Pulkovo 1942(83) / Gauss-Kruger zone 3", "code": 3835}, + {"name": "Pulkovo 1942(83) / Gauss-Kruger zone 4", "code": 3836}, + {"name": "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 3", "code": 3837}, + {"name": "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 4", "code": 3838}, + {"name": "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 9", "code": 3839}, + {"name": "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 10", "code": 3840}, + {"name": "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 6", "code": 3841}, + {"name": "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 7", "code": 3842}, + {"name": "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 8", "code": 3843}, + {"name": "Pulkovo 1942(58) / Stereo70", "code": 3844}, + {"name": "SWEREF99 / RT90 7.5 gon V emulation", "code": 3845}, + {"name": "SWEREF99 / RT90 5 gon V emulation", "code": 3846}, + {"name": "SWEREF99 / RT90 2.5 gon V emulation", "code": 3847}, + {"name": "SWEREF99 / RT90 0 gon emulation", "code": 3848}, + {"name": "SWEREF99 / RT90 2.5 gon O emulation", "code": 3849}, + {"name": "SWEREF99 / RT90 5 gon O emulation", "code": 3850}, + {"name": "NZGD2000 / NZCS2000", "code": 3851}, + {"name": "RSRGD2000 / DGLC2000", "code": 3852}, + {"name": "County ST74", "code": 3854}, + {"name": "WGS 84 / Pseudo-Mercator", "code": 3857}, + {"name": "ETRS89 / GK19FIN", "code": 3873}, + {"name": "ETRS89 / GK20FIN", "code": 3874}, + {"name": "ETRS89 / GK21FIN", "code": 3875}, + {"name": "ETRS89 / GK22FIN", "code": 3876}, + {"name": "ETRS89 / GK23FIN", "code": 3877}, + {"name": "ETRS89 / GK24FIN", "code": 3878}, + {"name": "ETRS89 / GK25FIN", "code": 3879}, + {"name": "ETRS89 / GK26FIN", "code": 3880}, + {"name": "ETRS89 / GK27FIN", "code": 3881}, + {"name": "ETRS89 / GK28FIN", "code": 3882}, + {"name": "ETRS89 / GK29FIN", "code": 3883}, + {"name": "ETRS89 / GK30FIN", "code": 3884}, + {"name": "ETRS89 / GK31FIN", "code": 3885}, + {"name": "IGRS / UTM zone 37N", "code": 3890}, + {"name": "IGRS / UTM zone 38N", "code": 3891}, + {"name": "IGRS / UTM zone 39N", "code": 3892}, + {"name": "ED50 / Iraq National Grid", "code": 3893}, + {"name": "MGI 1901 / Balkans zone 5", "code": 3907}, + {"name": "MGI 1901 / Balkans zone 6", "code": 3908}, + {"name": "MGI 1901 / Balkans zone 7", "code": 3909}, + {"name": "MGI 1901 / Balkans zone 8", "code": 3910}, + {"name": "MGI 1901 / Slovenia Grid", "code": 3911}, + {"name": "MGI 1901 / Slovene National Grid", "code": 3912}, + {"name": "Puerto Rico / UTM zone 20N", "code": 3920}, + {"name": "RGF93 / CC42", "code": 3942}, + {"name": "RGF93 / CC43", "code": 3943}, + {"name": "RGF93 / CC44", "code": 3944}, + {"name": "RGF93 / CC45", "code": 3945}, + {"name": "RGF93 / CC46", "code": 3946}, + {"name": "RGF93 / CC47", "code": 3947}, + {"name": "RGF93 / CC48", "code": 3948}, + {"name": "RGF93 / CC49", "code": 3949}, + {"name": "RGF93 / CC50", "code": 3950}, + {"name": "NAD83 / Virginia Lambert", "code": 3968}, + {"name": "NAD83(HARN) / Virginia Lambert", "code": 3969}, + {"name": "NAD83(NSRS2007) / Virginia Lambert", "code": 3970}, + {"name": "WGS 84 / NSIDC EASE-Grid North", "code": 3973}, + {"name": "WGS 84 / NSIDC EASE-Grid South", "code": 3974}, + {"name": "WGS 84 / NSIDC EASE-Grid Global", "code": 3975}, + {"name": "WGS 84 / NSIDC Sea Ice Polar Stereographic South", "code": 3976}, + {"name": "NAD83 / Canada Atlas Lambert", "code": 3978}, + {"name": "NAD83(CSRS) / Canada Atlas Lambert", "code": 3979}, + {"name": "Katanga 1955 / Katanga Lambert", "code": 3985}, + {"name": "Katanga 1955 / Katanga Gauss zone A", "code": 3986}, + {"name": "Katanga 1955 / Katanga Gauss zone B", "code": 3987}, + {"name": "Katanga 1955 / Katanga Gauss zone C", "code": 3988}, + {"name": "Katanga 1955 / Katanga Gauss zone D", "code": 3989}, + {"name": "Puerto Rico State Plane CS of 1927", "code": 3991}, + {"name": "Puerto Rico / St. Croix", "code": 3992}, + {"name": "Guam 1963 / Guam SPCS", "code": 3993}, + {"name": "WGS 84 / Mercator 41", "code": 3994}, + {"name": "WGS 84 / Arctic Polar Stereographic", "code": 3995}, + {"name": "WGS 84 / IBCAO Polar Stereographic", "code": 3996}, + {"name": "WGS 84 / Dubai Local TM", "code": 3997}, + {"name": "MOLDREF99 / Moldova TM", "code": 4026}, + {"name": "WGS 84 / TMzn35N", "code": 4037}, + {"name": "WGS 84 / TMzn36N", "code": 4038}, + {"name": "RGRDC 2005 / Congo TM zone 12", "code": 4048}, + {"name": "RGRDC 2005 / Congo TM zone 14", "code": 4049}, + {"name": "RGRDC 2005 / Congo TM zone 16", "code": 4050}, + {"name": "RGRDC 2005 / Congo TM zone 18", "code": 4051}, + {"name": "RGRDC 2005 / Congo TM zone 20", "code": 4056}, + {"name": "RGRDC 2005 / Congo TM zone 22", "code": 4057}, + {"name": "RGRDC 2005 / Congo TM zone 24", "code": 4058}, + {"name": "RGRDC 2005 / Congo TM zone 26", "code": 4059}, + {"name": "RGRDC 2005 / Congo TM zone 28", "code": 4060}, + {"name": "RGRDC 2005 / UTM zone 33S", "code": 4061}, + {"name": "RGRDC 2005 / UTM zone 34S", "code": 4062}, + {"name": "RGRDC 2005 / UTM zone 35S", "code": 4063}, + {"name": "Chua / UTM zone 23S", "code": 4071}, + {"name": "REGCAN95 / UTM zone 27N", "code": 4082}, + {"name": "REGCAN95 / UTM zone 28N", "code": 4083}, + {"name": "WGS 84 / World Equidistant Cylindrical", "code": 4087}, + {"name": "World Equidistant Cylindrical (Sphere)", "code": 4088}, + {"name": "ETRS89 / DKTM1", "code": 4093}, + {"name": "ETRS89 / DKTM2", "code": 4094}, + {"name": "ETRS89 / DKTM3", "code": 4095}, + {"name": "ETRS89 / DKTM4", "code": 4096}, + {"name": "NAD83 / BLM 59N (ftUS)", "code": 4217}, + {"name": "Kertau 1968 / Johor Grid", "code": 4390}, + {"name": "Kertau 1968 / Sembilan and Melaka Grid", "code": 4391}, + {"name": "Kertau 1968 / Pahang Grid", "code": 4392}, + {"name": "Kertau 1968 / Selangor Grid", "code": 4393}, + {"name": "Kertau 1968 / Terengganu Grid", "code": 4394}, + {"name": "Kertau 1968 / Pinang Grid", "code": 4395}, + {"name": "Kertau 1968 / Kedah and Perlis Grid", "code": 4396}, + {"name": "Kertau 1968 / Perak Revised Grid", "code": 4397}, + {"name": "Kertau 1968 / Kelantan Grid", "code": 4398}, + {"name": "NAD27 / BLM 59N (ftUS)", "code": 4399}, + {"name": "NAD27 / BLM 60N (ftUS)", "code": 4400}, + {"name": "NAD27 / BLM 1N (ftUS)", "code": 4401}, + {"name": "NAD27 / BLM 2N (ftUS)", "code": 4402}, + {"name": "NAD27 / BLM 3N (ftUS)", "code": 4403}, + {"name": "NAD27 / BLM 4N (ftUS)", "code": 4404}, + {"name": "NAD27 / BLM 5N (ftUS)", "code": 4405}, + {"name": "NAD27 / BLM 6N (ftUS)", "code": 4406}, + {"name": "NAD27 / BLM 7N (ftUS)", "code": 4407}, + {"name": "NAD27 / BLM 8N (ftUS)", "code": 4408}, + {"name": "NAD27 / BLM 9N (ftUS)", "code": 4409}, + {"name": "NAD27 / BLM 10N (ftUS)", "code": 4410}, + {"name": "NAD27 / BLM 11N (ftUS)", "code": 4411}, + {"name": "NAD27 / BLM 12N (ftUS)", "code": 4412}, + {"name": "NAD27 / BLM 13N (ftUS)", "code": 4413}, + {"name": "NAD83(HARN) / Guam Map Grid", "code": 4414}, + {"name": "Katanga 1955 / Katanga Lambert", "code": 4415}, + {"name": "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 7", "code": 4417}, + {"name": "NAD27 / BLM 18N (ftUS)", "code": 4418}, + {"name": "NAD27 / BLM 19N (ftUS)", "code": 4419}, + {"name": "NAD83 / BLM 60N (ftUS)", "code": 4420}, + {"name": "NAD83 / BLM 1N (ftUS)", "code": 4421}, + {"name": "NAD83 / BLM 2N (ftUS)", "code": 4422}, + {"name": "NAD83 / BLM 3N (ftUS)", "code": 4423}, + {"name": "NAD83 / BLM 4N (ftUS)", "code": 4424}, + {"name": "NAD83 / BLM 5N (ftUS)", "code": 4425}, + {"name": "NAD83 / BLM 6N (ftUS)", "code": 4426}, + {"name": "NAD83 / BLM 7N (ftUS)", "code": 4427}, + {"name": "NAD83 / BLM 8N (ftUS)", "code": 4428}, + {"name": "NAD83 / BLM 9N (ftUS)", "code": 4429}, + {"name": "NAD83 / BLM 10N (ftUS)", "code": 4430}, + {"name": "NAD83 / BLM 11N (ftUS)", "code": 4431}, + {"name": "NAD83 / BLM 12N (ftUS)", "code": 4432}, + {"name": "NAD83 / BLM 13N (ftUS)", "code": 4433}, + {"name": "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 8", "code": 4434}, + {"name": "NAD83(NSRS2007) / Puerto Rico and Virgin Is.", "code": 4437}, + {"name": "NAD83 / BLM 18N (ftUS)", "code": 4438}, + {"name": "NAD83 / BLM 19N (ftUS)", "code": 4439}, + {"name": "NAD27 / Pennsylvania South", "code": 4455}, + {"name": "NAD27 / New York Long Island", "code": 4456}, + {"name": "NAD83 / South Dakota North (ftUS)", "code": 4457}, + {"name": "WGS 84 / Australian Centre for Remote Sensing Lambert", "code": 4462}, + {"name": "RGSPM06 / UTM zone 21N", "code": 4467}, + {"name": "RGM04 / UTM zone 38S", "code": 4471}, + {"name": "Cadastre 1997 / UTM zone 38S", "code": 4474}, + {"name": "Mexico ITRF92 / UTM zone 11N", "code": 4484}, + {"name": "Mexico ITRF92 / UTM zone 12N", "code": 4485}, + {"name": "Mexico ITRF92 / UTM zone 13N", "code": 4486}, + {"name": "Mexico ITRF92 / UTM zone 14N", "code": 4487}, + {"name": "Mexico ITRF92 / UTM zone 15N", "code": 4488}, + {"name": "Mexico ITRF92 / UTM zone 16N", "code": 4489}, + {"name": "CGCS2000 / Gauss-Kruger zone 13", "code": 4491}, + {"name": "CGCS2000 / Gauss-Kruger zone 14", "code": 4492}, + {"name": "CGCS2000 / Gauss-Kruger zone 15", "code": 4493}, + {"name": "CGCS2000 / Gauss-Kruger zone 16", "code": 4494}, + {"name": "CGCS2000 / Gauss-Kruger zone 17", "code": 4495}, + {"name": "CGCS2000 / Gauss-Kruger zone 18", "code": 4496}, + {"name": "CGCS2000 / Gauss-Kruger zone 19", "code": 4497}, + {"name": "CGCS2000 / Gauss-Kruger zone 20", "code": 4498}, + {"name": "CGCS2000 / Gauss-Kruger zone 21", "code": 4499}, + {"name": "CGCS2000 / Gauss-Kruger zone 22", "code": 4500}, + {"name": "CGCS2000 / Gauss-Kruger zone 23", "code": 4501}, + {"name": "CGCS2000 / Gauss-Kruger CM 75E", "code": 4502}, + {"name": "CGCS2000 / Gauss-Kruger CM 81E", "code": 4503}, + {"name": "CGCS2000 / Gauss-Kruger CM 87E", "code": 4504}, + {"name": "CGCS2000 / Gauss-Kruger CM 93E", "code": 4505}, + {"name": "CGCS2000 / Gauss-Kruger CM 99E", "code": 4506}, + {"name": "CGCS2000 / Gauss-Kruger CM 105E", "code": 4507}, + {"name": "CGCS2000 / Gauss-Kruger CM 111E", "code": 4508}, + {"name": "CGCS2000 / Gauss-Kruger CM 117E", "code": 4509}, + {"name": "CGCS2000 / Gauss-Kruger CM 123E", "code": 4510}, + {"name": "CGCS2000 / Gauss-Kruger CM 129E", "code": 4511}, + {"name": "CGCS2000 / Gauss-Kruger CM 135E", "code": 4512}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger zone 25", "code": 4513}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger zone 26", "code": 4514}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger zone 27", "code": 4515}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger zone 28", "code": 4516}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger zone 29", "code": 4517}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger zone 30", "code": 4518}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger zone 31", "code": 4519}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger zone 32", "code": 4520}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger zone 33", "code": 4521}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger zone 34", "code": 4522}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger zone 35", "code": 4523}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger zone 36", "code": 4524}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger zone 37", "code": 4525}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger zone 38", "code": 4526}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger zone 39", "code": 4527}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger zone 40", "code": 4528}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger zone 41", "code": 4529}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger zone 42", "code": 4530}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger zone 43", "code": 4531}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger zone 44", "code": 4532}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger zone 45", "code": 4533}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger CM 75E", "code": 4534}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger CM 78E", "code": 4535}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger CM 81E", "code": 4536}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger CM 84E", "code": 4537}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger CM 87E", "code": 4538}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger CM 90E", "code": 4539}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger CM 93E", "code": 4540}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger CM 96E", "code": 4541}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger CM 99E", "code": 4542}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger CM 102E", "code": 4543}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger CM 105E", "code": 4544}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger CM 108E", "code": 4545}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger CM 111E", "code": 4546}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger CM 114E", "code": 4547}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger CM 117E", "code": 4548}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger CM 120E", "code": 4549}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger CM 123E", "code": 4550}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger CM 126E", "code": 4551}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger CM 129E", "code": 4552}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger CM 132E", "code": 4553}, + {"name": "CGCS2000 / 3-degree Gauss-Kruger CM 135E", "code": 4554}, + {"name": "RRAF 1991 / UTM zone 20N", "code": 4559}, + {"name": "New Beijing / Gauss-Kruger zone 13", "code": 4568}, + {"name": "New Beijing / Gauss-Kruger zone 14", "code": 4569}, + {"name": "New Beijing / Gauss-Kruger zone 15", "code": 4570}, + {"name": "New Beijing / Gauss-Kruger zone 16", "code": 4571}, + {"name": "New Beijing / Gauss-Kruger zone 17", "code": 4572}, + {"name": "New Beijing / Gauss-Kruger zone 18", "code": 4573}, + {"name": "New Beijing / Gauss-Kruger zone 19", "code": 4574}, + {"name": "New Beijing / Gauss-Kruger zone 20", "code": 4575}, + {"name": "New Beijing / Gauss-Kruger zone 21", "code": 4576}, + {"name": "New Beijing / Gauss-Kruger zone 22", "code": 4577}, + {"name": "New Beijing / Gauss-Kruger zone 23", "code": 4578}, + {"name": "New Beijing / Gauss-Kruger CM 75E", "code": 4579}, + {"name": "New Beijing / Gauss-Kruger CM 81E", "code": 4580}, + {"name": "New Beijing / Gauss-Kruger CM 87E", "code": 4581}, + {"name": "New Beijing / Gauss-Kruger CM 93E", "code": 4582}, + {"name": "New Beijing / Gauss-Kruger CM 99E", "code": 4583}, + {"name": "New Beijing / Gauss-Kruger CM 105E", "code": 4584}, + {"name": "New Beijing / Gauss-Kruger CM 111E", "code": 4585}, + {"name": "New Beijing / Gauss-Kruger CM 117E", "code": 4586}, + {"name": "New Beijing / Gauss-Kruger CM 123E", "code": 4587}, + {"name": "New Beijing / Gauss-Kruger CM 129E", "code": 4588}, + {"name": "New Beijing / Gauss-Kruger CM 135E", "code": 4589}, + {"name": "ETRS89 / UTM zone 32N (zE-N)", "code": 4647}, + {"name": "New Beijing / 3-degree Gauss-Kruger zone 25", "code": 4652}, + {"name": "New Beijing / 3-degree Gauss-Kruger zone 26", "code": 4653}, + {"name": "New Beijing / 3-degree Gauss-Kruger zone 27", "code": 4654}, + {"name": "New Beijing / 3-degree Gauss-Kruger zone 28", "code": 4655}, + {"name": "New Beijing / 3-degree Gauss-Kruger zone 29", "code": 4656}, + {"name": "New Beijing / 3-degree Gauss-Kruger zone 30", "code": 4766}, + {"name": "New Beijing / 3-degree Gauss-Kruger zone 31", "code": 4767}, + {"name": "New Beijing / 3-degree Gauss-Kruger zone 32", "code": 4768}, + {"name": "New Beijing / 3-degree Gauss-Kruger zone 33", "code": 4769}, + {"name": "New Beijing / 3-degree Gauss-Kruger zone 34", "code": 4770}, + {"name": "New Beijing / 3-degree Gauss-Kruger zone 35", "code": 4771}, + {"name": "New Beijing / 3-degree Gauss-Kruger zone 36", "code": 4772}, + {"name": "New Beijing / 3-degree Gauss-Kruger zone 37", "code": 4773}, + {"name": "New Beijing / 3-degree Gauss-Kruger zone 38", "code": 4774}, + {"name": "New Beijing / 3-degree Gauss-Kruger zone 39", "code": 4775}, + {"name": "New Beijing / 3-degree Gauss-Kruger zone 40", "code": 4776}, + {"name": "New Beijing / 3-degree Gauss-Kruger zone 41", "code": 4777}, + {"name": "New Beijing / 3-degree Gauss-Kruger zone 42", "code": 4778}, + {"name": "New Beijing / 3-degree Gauss-Kruger zone 43", "code": 4779}, + {"name": "New Beijing / 3-degree Gauss-Kruger zone 44", "code": 4780}, + {"name": "New Beijing / 3-degree Gauss-Kruger zone 45", "code": 4781}, + {"name": "New Beijing / 3-degree Gauss-Kruger CM 75E", "code": 4782}, + {"name": "New Beijing / 3-degree Gauss-Kruger CM 78E", "code": 4783}, + {"name": "New Beijing / 3-degree Gauss-Kruger CM 81E", "code": 4784}, + {"name": "New Beijing / 3-degree Gauss-Kruger CM 84E", "code": 4785}, + {"name": "New Beijing / 3-degree Gauss-Kruger CM 87E", "code": 4786}, + {"name": "New Beijing / 3-degree Gauss-Kruger CM 90E", "code": 4787}, + {"name": "New Beijing / 3-degree Gauss-Kruger CM 93E", "code": 4788}, + {"name": "New Beijing / 3-degree Gauss-Kruger CM 96E", "code": 4789}, + {"name": "New Beijing / 3-degree Gauss-Kruger CM 99E", "code": 4790}, + {"name": "New Beijing / 3-degree Gauss-Kruger CM 102E", "code": 4791}, + {"name": "New Beijing / 3-degree Gauss-Kruger CM 105E", "code": 4792}, + {"name": "New Beijing / 3-degree Gauss-Kruger CM 108E", "code": 4793}, + {"name": "New Beijing / 3-degree Gauss-Kruger CM 111E", "code": 4794}, + {"name": "New Beijing / 3-degree Gauss-Kruger CM 114E", "code": 4795}, + {"name": "New Beijing / 3-degree Gauss-Kruger CM 117E", "code": 4796}, + {"name": "New Beijing / 3-degree Gauss-Kruger CM 120E", "code": 4797}, + {"name": "New Beijing / 3-degree Gauss-Kruger CM 123E", "code": 4798}, + {"name": "New Beijing / 3-degree Gauss-Kruger CM 126E", "code": 4799}, + {"name": "New Beijing / 3-degree Gauss-Kruger CM 129E", "code": 4800}, + {"name": "New Beijing / 3-degree Gauss-Kruger CM 132E", "code": 4812}, + {"name": "New Beijing / 3-degree Gauss-Kruger CM 135E", "code": 4822}, + {"name": "WGS 84 / Cape Verde National", "code": 4826}, + {"name": "ETRS89 / LCC Germany (N-E)", "code": 4839}, + {"name": "ETRS89 / NTM zone 5", "code": 4855}, + {"name": "ETRS89 / NTM zone 6", "code": 4856}, + {"name": "ETRS89 / NTM zone 7", "code": 4857}, + {"name": "ETRS89 / NTM zone 8", "code": 4858}, + {"name": "ETRS89 / NTM zone 9", "code": 4859}, + {"name": "ETRS89 / NTM zone 10", "code": 4860}, + {"name": "ETRS89 / NTM zone 11", "code": 4861}, + {"name": "ETRS89 / NTM zone 12", "code": 4862}, + {"name": "ETRS89 / NTM zone 13", "code": 4863}, + {"name": "ETRS89 / NTM zone 14", "code": 4864}, + {"name": "ETRS89 / NTM zone 15", "code": 4865}, + {"name": "ETRS89 / NTM zone 16", "code": 4866}, + {"name": "ETRS89 / NTM zone 17", "code": 4867}, + {"name": "ETRS89 / NTM zone 18", "code": 4868}, + {"name": "ETRS89 / NTM zone 19", "code": 4869}, + {"name": "ETRS89 / NTM zone 20", "code": 4870}, + {"name": "ETRS89 / NTM zone 21", "code": 4871}, + {"name": "ETRS89 / NTM zone 22", "code": 4872}, + {"name": "ETRS89 / NTM zone 23", "code": 4873}, + {"name": "ETRS89 / NTM zone 24", "code": 4874}, + {"name": "ETRS89 / NTM zone 25", "code": 4875}, + {"name": "ETRS89 / NTM zone 26", "code": 4876}, + {"name": "ETRS89 / NTM zone 27", "code": 4877}, + {"name": "ETRS89 / NTM zone 28", "code": 4878}, + {"name": "ETRS89 / NTM zone 29", "code": 4879}, + {"name": "ETRS89 / NTM zone 30", "code": 4880}, + {"name": "PTRA08 / UTM zone 25N", "code": 5014}, + {"name": "PTRA08 / UTM zone 26N", "code": 5015}, + {"name": "PTRA08 / UTM zone 28N", "code": 5016}, + {"name": "Lisbon 1890 / Portugal Bonne New", "code": 5017}, + {"name": "Lisbon / Portuguese Grid New", "code": 5018}, + {"name": "WGS 84 / UPS North (E,N)", "code": 5041}, + {"name": "WGS 84 / UPS South (E,N)", "code": 5042}, + {"name": "ETRS89 / TM35FIN(N,E)", "code": 5048}, + {"name": "NAD27 / Conus Albers", "code": 5069}, + {"name": "NAD83 / Conus Albers", "code": 5070}, + {"name": "NAD83(HARN) / Conus Albers", "code": 5071}, + {"name": "NAD83(NSRS2007) / Conus Albers", "code": 5072}, + {"name": "ETRS89 / NTM zone 5", "code": 5105}, + {"name": "ETRS89 / NTM zone 6", "code": 5106}, + {"name": "ETRS89 / NTM zone 7", "code": 5107}, + {"name": "ETRS89 / NTM zone 8", "code": 5108}, + {"name": "ETRS89 / NTM zone 9", "code": 5109}, + {"name": "ETRS89 / NTM zone 10", "code": 5110}, + {"name": "ETRS89 / NTM zone 11", "code": 5111}, + {"name": "ETRS89 / NTM zone 12", "code": 5112}, + {"name": "ETRS89 / NTM zone 13", "code": 5113}, + {"name": "ETRS89 / NTM zone 14", "code": 5114}, + {"name": "ETRS89 / NTM zone 15", "code": 5115}, + {"name": "ETRS89 / NTM zone 16", "code": 5116}, + {"name": "ETRS89 / NTM zone 17", "code": 5117}, + {"name": "ETRS89 / NTM zone 18", "code": 5118}, + {"name": "ETRS89 / NTM zone 19", "code": 5119}, + {"name": "ETRS89 / NTM zone 20", "code": 5120}, + {"name": "ETRS89 / NTM zone 21", "code": 5121}, + {"name": "ETRS89 / NTM zone 22", "code": 5122}, + {"name": "ETRS89 / NTM zone 23", "code": 5123}, + {"name": "ETRS89 / NTM zone 24", "code": 5124}, + {"name": "ETRS89 / NTM zone 25", "code": 5125}, + {"name": "ETRS89 / NTM zone 26", "code": 5126}, + {"name": "ETRS89 / NTM zone 27", "code": 5127}, + {"name": "ETRS89 / NTM zone 28", "code": 5128}, + {"name": "ETRS89 / NTM zone 29", "code": 5129}, + {"name": "ETRS89 / NTM zone 30", "code": 5130}, + {"name": "Korean 1985 / East Sea Belt", "code": 5167}, + {"name": "Korean 1985 / Central Belt Jeju", "code": 5168}, + {"name": "Tokyo 1892 / Korea West Belt", "code": 5169}, + {"name": "Tokyo 1892 / Korea Central Belt", "code": 5170}, + {"name": "Tokyo 1892 / Korea East Belt", "code": 5171}, + {"name": "Tokyo 1892 / Korea East Sea Belt", "code": 5172}, + {"name": "Korean 1985 / Modified West Belt", "code": 5173}, + {"name": "Korean 1985 / Modified Central Belt", "code": 5174}, + {"name": "Korean 1985 / Modified Central Belt Jeju", "code": 5175}, + {"name": "Korean 1985 / Modified East Belt", "code": 5176}, + {"name": "Korean 1985 / Modified East Sea Belt", "code": 5177}, + {"name": "Korean 1985 / Unified CS", "code": 5178}, + {"name": "Korea 2000 / Unified CS", "code": 5179}, + {"name": "Korea 2000 / West Belt", "code": 5180}, + {"name": "Korea 2000 / Central Belt", "code": 5181}, + {"name": "Korea 2000 / Central Belt Jeju", "code": 5182}, + {"name": "Korea 2000 / East Belt", "code": 5183}, + {"name": "Korea 2000 / East Sea Belt", "code": 5184}, + {"name": "Korea 2000 / West Belt 2010", "code": 5185}, + {"name": "Korea 2000 / Central Belt 2010", "code": 5186}, + {"name": "Korea 2000 / East Belt 2010", "code": 5187}, + {"name": "Korea 2000 / East Sea Belt 2010", "code": 5188}, + {"name": "S-JTSK (Ferro) / Krovak East North", "code": 5221}, + {"name": "WGS 84 / Gabon TM", "code": 5223}, + {"name": "S-JTSK/05 (Ferro) / Modified Krovak", "code": 5224}, + {"name": "S-JTSK/05 (Ferro) / Modified Krovak East North", "code": 5225}, + {"name": "Kandawala / Sri Lanka Grid", "code": 5234}, + {"name": "SLD99 / Sri Lanka Grid 1999", "code": 5235}, + {"name": "ETRS89 / LCC Germany (E-N)", "code": 5243}, + {"name": "GDBD2009 / Brunei BRSO", "code": 5247}, + {"name": "TUREF / TM27", "code": 5253}, + {"name": "TUREF / TM30", "code": 5254}, + {"name": "TUREF / TM33", "code": 5255}, + {"name": "TUREF / TM36", "code": 5256}, + {"name": "TUREF / TM39", "code": 5257}, + {"name": "TUREF / TM42", "code": 5258}, + {"name": "TUREF / TM45", "code": 5259}, + {"name": "DRUKREF 03 / Bhutan National Grid", "code": 5266}, + {"name": "TUREF / 3-degree Gauss-Kruger zone 9", "code": 5269}, + {"name": "TUREF / 3-degree Gauss-Kruger zone 10", "code": 5270}, + {"name": "TUREF / 3-degree Gauss-Kruger zone 11", "code": 5271}, + {"name": "TUREF / 3-degree Gauss-Kruger zone 12", "code": 5272}, + {"name": "TUREF / 3-degree Gauss-Kruger zone 13", "code": 5273}, + {"name": "TUREF / 3-degree Gauss-Kruger zone 14", "code": 5274}, + {"name": "TUREF / 3-degree Gauss-Kruger zone 15", "code": 5275}, + {"name": "DRUKREF 03 / Bumthang TM", "code": 5292}, + {"name": "DRUKREF 03 / Chhukha TM", "code": 5293}, + {"name": "DRUKREF 03 / Dagana TM", "code": 5294}, + {"name": "DRUKREF 03 / Gasa TM", "code": 5295}, + {"name": "DRUKREF 03 / Ha TM", "code": 5296}, + {"name": "DRUKREF 03 / Lhuentse TM", "code": 5297}, + {"name": "DRUKREF 03 / Mongar TM", "code": 5298}, + {"name": "DRUKREF 03 / Paro TM", "code": 5299}, + {"name": "DRUKREF 03 / Pemagatshel TM", "code": 5300}, + {"name": "DRUKREF 03 / Punakha TM", "code": 5301}, + {"name": "DRUKREF 03 / Samdrup Jongkhar TM", "code": 5302}, + {"name": "DRUKREF 03 / Samtse TM", "code": 5303}, + {"name": "DRUKREF 03 / Sarpang TM", "code": 5304}, + {"name": "DRUKREF 03 / Thimphu TM", "code": 5305}, + {"name": "DRUKREF 03 / Trashigang TM", "code": 5306}, + {"name": "DRUKREF 03 / Trongsa TM", "code": 5307}, + {"name": "DRUKREF 03 / Tsirang TM", "code": 5308}, + {"name": "DRUKREF 03 / Wangdue Phodrang TM", "code": 5309}, + {"name": "DRUKREF 03 / Yangtse TM", "code": 5310}, + {"name": "DRUKREF 03 / Zhemgang TM", "code": 5311}, + {"name": "ETRS89 / Faroe TM", "code": 5316}, + {"name": "NAD83 / Teranet Ontario Lambert", "code": 5320}, + {"name": "NAD83(CSRS) / Teranet Ontario Lambert", "code": 5321}, + {"name": "ISN2004 / Lambert 2004", "code": 5325}, + {"name": "Segara (Jakarta) / NEIEZ", "code": 5329}, + {"name": "Batavia (Jakarta) / NEIEZ", "code": 5330}, + {"name": "Makassar (Jakarta) / NEIEZ", "code": 5331}, + {"name": "Aratu / UTM zone 25S", "code": 5337}, + {"name": "POSGAR 2007 / Argentina 1", "code": 5343}, + {"name": "POSGAR 2007 / Argentina 2", "code": 5344}, + {"name": "POSGAR 2007 / Argentina 3", "code": 5345}, + {"name": "POSGAR 2007 / Argentina 4", "code": 5346}, + {"name": "POSGAR 2007 / Argentina 5", "code": 5347}, + {"name": "POSGAR 2007 / Argentina 6", "code": 5348}, + {"name": "POSGAR 2007 / Argentina 7", "code": 5349}, + {"name": "MARGEN / UTM zone 20S", "code": 5355}, + {"name": "MARGEN / UTM zone 19S", "code": 5356}, + {"name": "MARGEN / UTM zone 21S", "code": 5357}, + {"name": "SIRGAS-Chile 2002 / UTM zone 19S", "code": 5361}, + {"name": "SIRGAS-Chile 2002 / UTM zone 18S", "code": 5362}, + {"name": "CR05 / CRTM05", "code": 5367}, + {"name": "SIRGAS-ROU98 / UTM zone 21S", "code": 5382}, + {"name": "SIRGAS-ROU98 / UTM zone 22S", "code": 5383}, + {"name": "Peru96 / UTM zone 18S", "code": 5387}, + {"name": "Peru96 / UTM zone 17S", "code": 5388}, + {"name": "Peru96 / UTM zone 19S", "code": 5389}, + {"name": "SIRGAS 2000 / UTM zone 26S", "code": 5396}, + {"name": "Ocotepeque 1935 / Costa Rica Norte", "code": 5456}, + {"name": "Ocotepeque 1935 / Costa Rica Sur", "code": 5457}, + {"name": "Ocotepeque 1935 / Guatemala Norte", "code": 5458}, + {"name": "Ocotepeque 1935 / Guatemala Sur", "code": 5459}, + {"name": "Ocotepeque 1935 / El Salvador Lambert", "code": 5460}, + {"name": "Ocotepeque 1935 / Nicaragua Norte", "code": 5461}, + {"name": "Ocotepeque 1935 / Nicaragua Sur", "code": 5462}, + {"name": "SAD69 / UTM zone 17N", "code": 5463}, + {"name": "Sibun Gorge 1922 / Colony Grid", "code": 5466}, + {"name": "Panama-Colon 1911 / Panama Lambert", "code": 5469}, + {"name": "Panama-Colon 1911 / Panama Polyconic", "code": 5472}, + {"name": "RSRGD2000 / MSLC2000", "code": 5479}, + {"name": "RSRGD2000 / BCLC2000", "code": 5480}, + {"name": "RSRGD2000 / PCLC2000", "code": 5481}, + {"name": "RSRGD2000 / RSPS2000", "code": 5482}, + {"name": "RGAF09 / UTM zone 20N", "code": 5490}, + {"name": "S-JTSK / Krovak", "code": 5513}, + {"name": "S-JTSK / Krovak East North", "code": 5514}, + {"name": "S-JTSK/05 / Modified Krovak", "code": 5515}, + {"name": "S-JTSK/05 / Modified Krovak East North", "code": 5516}, + {"name": "CI1971 / Chatham Islands Map Grid", "code": 5518}, + {"name": "CI1979 / Chatham Islands Map Grid", "code": 5519}, + {"name": "DHDN / 3-degree Gauss-Kruger zone 1", "code": 5520}, + {"name": "WGS 84 / Gabon TM 2011", "code": 5523}, + {"name": "SAD69(96) / Brazil Polyconic", "code": 5530}, + {"name": "SAD69(96) / UTM zone 21S", "code": 5531}, + {"name": "SAD69(96) / UTM zone 22S", "code": 5532}, + {"name": "SAD69(96) / UTM zone 23S", "code": 5533}, + {"name": "SAD69(96) / UTM zone 24S", "code": 5534}, + {"name": "SAD69(96) / UTM zone 25S", "code": 5535}, + {"name": "Corrego Alegre 1961 / UTM zone 21S", "code": 5536}, + {"name": "Corrego Alegre 1961 / UTM zone 22S", "code": 5537}, + {"name": "Corrego Alegre 1961 / UTM zone 23S", "code": 5538}, + {"name": "Corrego Alegre 1961 / UTM zone 24S", "code": 5539}, + {"name": "PNG94 / PNGMG94 zone 54", "code": 5550}, + {"name": "PNG94 / PNGMG94 zone 55", "code": 5551}, + {"name": "PNG94 / PNGMG94 zone 56", "code": 5552}, + {"name": "Ocotepeque 1935 / Guatemala Norte", "code": 5559}, + {"name": "UCS-2000 / Gauss-Kruger zone 4", "code": 5562}, + {"name": "UCS-2000 / Gauss-Kruger zone 5", "code": 5563}, + {"name": "UCS-2000 / Gauss-Kruger zone 6", "code": 5564}, + {"name": "UCS-2000 / Gauss-Kruger zone 7", "code": 5565}, + {"name": "UCS-2000 / Gauss-Kruger CM 21E", "code": 5566}, + {"name": "UCS-2000 / Gauss-Kruger CM 27E", "code": 5567}, + {"name": "UCS-2000 / Gauss-Kruger CM 33E", "code": 5568}, + {"name": "UCS-2000 / Gauss-Kruger CM 39E", "code": 5569}, + {"name": "UCS-2000 / 3-degree Gauss-Kruger zone 7", "code": 5570}, + {"name": "UCS-2000 / 3-degree Gauss-Kruger zone 8", "code": 5571}, + {"name": "UCS-2000 / 3-degree Gauss-Kruger zone 9", "code": 5572}, + {"name": "UCS-2000 / 3-degree Gauss-Kruger zone 10", "code": 5573}, + {"name": "UCS-2000 / 3-degree Gauss-Kruger zone 11", "code": 5574}, + {"name": "UCS-2000 / 3-degree Gauss-Kruger zone 12", "code": 5575}, + {"name": "UCS-2000 / 3-degree Gauss-Kruger zone 13", "code": 5576}, + {"name": "UCS-2000 / 3-degree Gauss-Kruger CM 21E", "code": 5577}, + {"name": "UCS-2000 / 3-degree Gauss-Kruger CM 24E", "code": 5578}, + {"name": "UCS-2000 / 3-degree Gauss-Kruger CM 27E", "code": 5579}, + {"name": "UCS-2000 / 3-degree Gauss-Kruger CM 30E", "code": 5580}, + {"name": "UCS-2000 / 3-degree Gauss-Kruger CM 33E", "code": 5581}, + {"name": "UCS-2000 / 3-degree Gauss-Kruger CM 36E", "code": 5582}, + {"name": "UCS-2000 / 3-degree Gauss-Kruger CM 39E", "code": 5583}, + {"name": "NAD27 / New Brunswick Stereographic (NAD27)", "code": 5588}, + {"name": "Sibun Gorge 1922 / Colony Grid", "code": 5589}, + {"name": "FEH2010 / Fehmarnbelt TM", "code": 5596}, + {"name": "NAD27 / Michigan East", "code": 5623}, + {"name": "NAD27 / Michigan Old Central", "code": 5624}, + {"name": "NAD27 / Michigan West", "code": 5625}, + {"name": "ED50 / TM 6 NE", "code": 5627}, + {"name": "Moznet / UTM zone 38S", "code": 5629}, + {"name": "Pulkovo 1942(58) / Gauss-Kruger zone 2 (E-N)", "code": 5631}, + {"name": "PTRA08 / LCC Europe", "code": 5632}, + {"name": "PTRA08 / LAEA Europe", "code": 5633}, + {"name": "REGCAN95 / LCC Europe", "code": 5634}, + {"name": "REGCAN95 / LAEA Europe", "code": 5635}, + {"name": "TUREF / LAEA Europe", "code": 5636}, + {"name": "TUREF / LCC Europe", "code": 5637}, + {"name": "ISN2004 / LAEA Europe", "code": 5638}, + {"name": "ISN2004 / LCC Europe", "code": 5639}, + {"name": "SIRGAS 2000 / Brazil Mercator", "code": 5641}, + {"name": "ED50 / SPBA LCC", "code": 5643}, + {"name": "RGR92 / UTM zone 39S", "code": 5644}, + {"name": "NAD83 / Vermont (ftUS)", "code": 5646}, + {"name": "ETRS89 / UTM zone 31N (zE-N)", "code": 5649}, + {"name": "ETRS89 / UTM zone 33N (zE-N)", "code": 5650}, + {"name": "ETRS89 / UTM zone 31N (N-zE)", "code": 5651}, + {"name": "ETRS89 / UTM zone 32N (N-zE)", "code": 5652}, + {"name": "ETRS89 / UTM zone 33N (N-zE)", "code": 5653}, + {"name": "NAD83(HARN) / Vermont (ftUS)", "code": 5654}, + {"name": "NAD83(NSRS2007) / Vermont (ftUS)", "code": 5655}, + {"name": "Monte Mario / TM Emilia-Romagna", "code": 5659}, + {"name": "Pulkovo 1942(58) / Gauss-Kruger zone 3 (E-N)", "code": 5663}, + {"name": "Pulkovo 1942(83) / Gauss-Kruger zone 2 (E-N)", "code": 5664}, + {"name": "Pulkovo 1942(83) / Gauss-Kruger zone 3 (E-N)", "code": 5665}, + {"name": "PD/83 / 3-degree Gauss-Kruger zone 3 (E-N)", "code": 5666}, + {"name": "PD/83 / 3-degree Gauss-Kruger zone 4 (E-N)", "code": 5667}, + {"name": "RD/83 / 3-degree Gauss-Kruger zone 4 (E-N)", "code": 5668}, + {"name": "RD/83 / 3-degree Gauss-Kruger zone 5 (E-N)", "code": 5669}, + {"name": "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 3 (E-N)", "code": 5670}, + {"name": "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 4 (E-N)", "code": 5671}, + {"name": "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 5 (E-N)", "code": 5672}, + {"name": "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 3 (E-N)", "code": 5673}, + {"name": "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 4 (E-N)", "code": 5674}, + {"name": "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 5 (E-N)", "code": 5675}, + {"name": "DHDN / 3-degree Gauss-Kruger zone 2 (E-N)", "code": 5676}, + {"name": "DHDN / 3-degree Gauss-Kruger zone 3 (E-N)", "code": 5677}, + {"name": "DHDN / 3-degree Gauss-Kruger zone 4 (E-N)", "code": 5678}, + {"name": "DHDN / 3-degree Gauss-Kruger zone 5 (E-N)", "code": 5679}, + {"name": "DHDN / 3-degree Gauss-Kruger zone 1 (E-N)", "code": 5680}, + {"name": "DB_REF / 3-degree Gauss-Kruger zone 2 (E-N)", "code": 5682}, + {"name": "DB_REF / 3-degree Gauss-Kruger zone 3 (E-N)", "code": 5683}, + {"name": "DB_REF / 3-degree Gauss-Kruger zone 4 (E-N)", "code": 5684}, + {"name": "DB_REF / 3-degree Gauss-Kruger zone 5 (E-N)", "code": 5685}, + {"name": "NZGD2000 / UTM zone 1S", "code": 5700}, + {"name": "EPSG topocentric example A", "code": 5819}, + {"name": "EPSG topocentric example B", "code": 5820}, + {"name": "AGD66 / ACT Standard Grid", "code": 5825}, + {"name": "Yemen NGN96 / UTM zone 37N", "code": 5836}, + {"name": "Yemen NGN96 / UTM zone 40N", "code": 5837}, + {"name": "Peru96 / UTM zone 17S", "code": 5839}, + {"name": "WGS 84 / TM 12 SE", "code": 5842}, + {"name": "RGRDC 2005 / Congo TM zone 30", "code": 5844}, + {"name": "SAD69(96) / UTM zone 22S", "code": 5858}, + {"name": "SAD69(96) / UTM zone 18S", "code": 5875}, + {"name": "SAD69(96) / UTM zone 19S", "code": 5876}, + {"name": "SAD69(96) / UTM zone 20S", "code": 5877}, + {"name": "Cadastre 1997 / UTM zone 38S", "code": 5879}, + {"name": "SIRGAS 2000 / Brazil Polyconic", "code": 5880}, + {"name": "TGD2005 / Tonga Map Grid", "code": 5887}, + {"name": "JAXA Snow Depth Polar Stereographic North", "code": 5890}, + {"name": "VN-2000 / TM-3 zone 481", "code": 5896}, + {"name": "VN-2000 / TM-3 zone 482", "code": 5897}, + {"name": "VN-2000 / TM-3 zone 491", "code": 5898}, + {"name": "VN-2000 / TM-3 107-45", "code": 5899}, + {"name": "WGS 84 / EPSG Arctic Regional zone A1", "code": 5921}, + {"name": "WGS 84 / EPSG Arctic Regional zone A2", "code": 5922}, + {"name": "WGS 84 / EPSG Arctic Regional zone A3", "code": 5923}, + {"name": "WGS 84 / EPSG Arctic Regional zone A4", "code": 5924}, + {"name": "WGS 84 / EPSG Arctic Regional zone A5", "code": 5925}, + {"name": "WGS 84 / EPSG Arctic Regional zone B1", "code": 5926}, + {"name": "WGS 84 / EPSG Arctic Regional zone B2", "code": 5927}, + {"name": "WGS 84 / EPSG Arctic Regional zone B3", "code": 5928}, + {"name": "WGS 84 / EPSG Arctic Regional zone B4", "code": 5929}, + {"name": "WGS 84 / EPSG Arctic Regional zone B5", "code": 5930}, + {"name": "WGS 84 / EPSG Arctic Regional zone C1", "code": 5931}, + {"name": "WGS 84 / EPSG Arctic Regional zone C2", "code": 5932}, + {"name": "WGS 84 / EPSG Arctic Regional zone C3", "code": 5933}, + {"name": "WGS 84 / EPSG Arctic Regional zone C4", "code": 5934}, + {"name": "WGS 84 / EPSG Arctic Regional zone C5", "code": 5935}, + {"name": "WGS 84 / EPSG Alaska Polar Stereographic", "code": 5936}, + {"name": "WGS 84 / EPSG Canada Polar Stereographic", "code": 5937}, + {"name": "WGS 84 / EPSG Greenland Polar Stereographic", "code": 5938}, + {"name": "WGS 84 / EPSG Norway Polar Stereographic", "code": 5939}, + {"name": "WGS 84 / EPSG Russia Polar Stereographic", "code": 5940}, + {"name": "GR96 / EPSG Arctic zone 1-25", "code": 6050}, + {"name": "GR96 / EPSG Arctic zone 2-18", "code": 6051}, + {"name": "GR96 / EPSG Arctic zone 2-20", "code": 6052}, + {"name": "GR96 / EPSG Arctic zone 3-29", "code": 6053}, + {"name": "GR96 / EPSG Arctic zone 3-31", "code": 6054}, + {"name": "GR96 / EPSG Arctic zone 3-33", "code": 6055}, + {"name": "GR96 / EPSG Arctic zone 4-20", "code": 6056}, + {"name": "GR96 / EPSG Arctic zone 4-22", "code": 6057}, + {"name": "GR96 / EPSG Arctic zone 4-24", "code": 6058}, + {"name": "GR96 / EPSG Arctic zone 5-41", "code": 6059}, + {"name": "GR96 / EPSG Arctic zone 5-43", "code": 6060}, + {"name": "GR96 / EPSG Arctic zone 5-45", "code": 6061}, + {"name": "GR96 / EPSG Arctic zone 6-26", "code": 6062}, + {"name": "GR96 / EPSG Arctic zone 6-28", "code": 6063}, + {"name": "GR96 / EPSG Arctic zone 6-30", "code": 6064}, + {"name": "GR96 / EPSG Arctic zone 7-11", "code": 6065}, + {"name": "GR96 / EPSG Arctic zone 7-13", "code": 6066}, + {"name": "GR96 / EPSG Arctic zone 8-20", "code": 6067}, + {"name": "GR96 / EPSG Arctic zone 8-22", "code": 6068}, + {"name": "ETRS89 / EPSG Arctic zone 2-22", "code": 6069}, + {"name": "ETRS89 / EPSG Arctic zone 3-11", "code": 6070}, + {"name": "ETRS89 / EPSG Arctic zone 4-26", "code": 6071}, + {"name": "ETRS89 / EPSG Arctic zone 4-28", "code": 6072}, + {"name": "ETRS89 / EPSG Arctic zone 5-11", "code": 6073}, + {"name": "ETRS89 / EPSG Arctic zone 5-13", "code": 6074}, + {"name": "WGS 84 / EPSG Arctic zone 2-24", "code": 6075}, + {"name": "WGS 84 / EPSG Arctic zone 2-26", "code": 6076}, + {"name": "WGS 84 / EPSG Arctic zone 3-13", "code": 6077}, + {"name": "WGS 84 / EPSG Arctic zone 3-15", "code": 6078}, + {"name": "WGS 84 / EPSG Arctic zone 3-17", "code": 6079}, + {"name": "WGS 84 / EPSG Arctic zone 3-19", "code": 6080}, + {"name": "WGS 84 / EPSG Arctic zone 4-30", "code": 6081}, + {"name": "WGS 84 / EPSG Arctic zone 4-32", "code": 6082}, + {"name": "WGS 84 / EPSG Arctic zone 4-34", "code": 6083}, + {"name": "WGS 84 / EPSG Arctic zone 4-36", "code": 6084}, + {"name": "WGS 84 / EPSG Arctic zone 4-38", "code": 6085}, + {"name": "WGS 84 / EPSG Arctic zone 4-40", "code": 6086}, + {"name": "WGS 84 / EPSG Arctic zone 5-15", "code": 6087}, + {"name": "WGS 84 / EPSG Arctic zone 5-17", "code": 6088}, + {"name": "WGS 84 / EPSG Arctic zone 5-19", "code": 6089}, + {"name": "WGS 84 / EPSG Arctic zone 5-21", "code": 6090}, + {"name": "WGS 84 / EPSG Arctic zone 5-23", "code": 6091}, + {"name": "WGS 84 / EPSG Arctic zone 5-25", "code": 6092}, + {"name": "WGS 84 / EPSG Arctic zone 5-27", "code": 6093}, + {"name": "NAD83(NSRS2007) / EPSG Arctic zone 5-29", "code": 6094}, + {"name": "NAD83(NSRS2007) / EPSG Arctic zone 5-31", "code": 6095}, + {"name": "NAD83(NSRS2007) / EPSG Arctic zone 6-14", "code": 6096}, + {"name": "NAD83(NSRS2007) / EPSG Arctic zone 6-16", "code": 6097}, + {"name": "NAD83(CSRS) / EPSG Arctic zone 1-23", "code": 6098}, + {"name": "NAD83(CSRS) / EPSG Arctic zone 2-14", "code": 6099}, + {"name": "NAD83(CSRS) / EPSG Arctic zone 2-16", "code": 6100}, + {"name": "NAD83(CSRS) / EPSG Arctic zone 3-25", "code": 6101}, + {"name": "NAD83(CSRS) / EPSG Arctic zone 3-27", "code": 6102}, + {"name": "NAD83(CSRS) / EPSG Arctic zone 3-29", "code": 6103}, + {"name": "NAD83(CSRS) / EPSG Arctic zone 4-14", "code": 6104}, + {"name": "NAD83(CSRS) / EPSG Arctic zone 4-16", "code": 6105}, + {"name": "NAD83(CSRS) / EPSG Arctic zone 4-18", "code": 6106}, + {"name": "NAD83(CSRS) / EPSG Arctic zone 5-33", "code": 6107}, + {"name": "NAD83(CSRS) / EPSG Arctic zone 5-35", "code": 6108}, + {"name": "NAD83(CSRS) / EPSG Arctic zone 5-37", "code": 6109}, + {"name": "NAD83(CSRS) / EPSG Arctic zone 5-39", "code": 6110}, + {"name": "NAD83(CSRS) / EPSG Arctic zone 6-18", "code": 6111}, + {"name": "NAD83(CSRS) / EPSG Arctic zone 6-20", "code": 6112}, + {"name": "NAD83(CSRS) / EPSG Arctic zone 6-22", "code": 6113}, + {"name": "NAD83(CSRS) / EPSG Arctic zone 6-24", "code": 6114}, + {"name": "WGS 84 / EPSG Arctic zone 1-27", "code": 6115}, + {"name": "WGS 84 / EPSG Arctic zone 1-29", "code": 6116}, + {"name": "WGS 84 / EPSG Arctic zone 1-31", "code": 6117}, + {"name": "WGS 84 / EPSG Arctic zone 1-21", "code": 6118}, + {"name": "WGS 84 / EPSG Arctic zone 2-28", "code": 6119}, + {"name": "WGS 84 / EPSG Arctic zone 2-10", "code": 6120}, + {"name": "WGS 84 / EPSG Arctic zone 2-12", "code": 6121}, + {"name": "WGS 84 / EPSG Arctic zone 3-21", "code": 6122}, + {"name": "WGS 84 / EPSG Arctic zone 3-23", "code": 6123}, + {"name": "WGS 84 / EPSG Arctic zone 4-12", "code": 6124}, + {"name": "ETRS89 / EPSG Arctic zone 5-47", "code": 6125}, + {"name": "Grand Cayman National Grid 1959", "code": 6128}, + {"name": "Sister Islands National Grid 1961", "code": 6129}, + {"name": "Cayman Islands National Grid 2011", "code": 6141}, + {"name": "NAD27 / Michigan North", "code": 6200}, + {"name": "NAD27 / Michigan Central", "code": 6201}, + {"name": "NAD27 / Michigan South", "code": 6202}, + {"name": "Macedonia State Coordinate System", "code": 6204}, + {"name": "SIRGAS 2000 / UTM zone 23N", "code": 6210}, + {"name": "SIRGAS 2000 / UTM zone 24N", "code": 6211}, + {"name": "MAGNA-SIRGAS / Arauca urban grid", "code": 6244}, + {"name": "MAGNA-SIRGAS / Armenia urban grid", "code": 6245}, + {"name": "MAGNA-SIRGAS / Barranquilla urban grid", "code": 6246}, + {"name": "MAGNA-SIRGAS / Bogota urban grid", "code": 6247}, + {"name": "MAGNA-SIRGAS / Bucaramanga urban grid", "code": 6248}, + {"name": "MAGNA-SIRGAS / Cali urban grid", "code": 6249}, + {"name": "MAGNA-SIRGAS / Cartagena urban grid", "code": 6250}, + {"name": "MAGNA-SIRGAS / Cucuta urban grid", "code": 6251}, + {"name": "MAGNA-SIRGAS / Florencia urban grid", "code": 6252}, + {"name": "MAGNA-SIRGAS / Ibague urban grid", "code": 6253}, + {"name": "MAGNA-SIRGAS / Inirida urban grid", "code": 6254}, + {"name": "MAGNA-SIRGAS / Leticia urban grid", "code": 6255}, + {"name": "MAGNA-SIRGAS / Manizales urban grid", "code": 6256}, + {"name": "MAGNA-SIRGAS / Medellin urban grid", "code": 6257}, + {"name": "MAGNA-SIRGAS / Mitu urban grid", "code": 6258}, + {"name": "MAGNA-SIRGAS / Mocoa urban grid", "code": 6259}, + {"name": "MAGNA-SIRGAS / Monteria urban grid", "code": 6260}, + {"name": "MAGNA-SIRGAS / Neiva urban grid", "code": 6261}, + {"name": "MAGNA-SIRGAS / Pasto urban grid", "code": 6262}, + {"name": "MAGNA-SIRGAS / Pereira urban grid", "code": 6263}, + {"name": "MAGNA-SIRGAS / Popayan urban grid", "code": 6264}, + {"name": "MAGNA-SIRGAS / Puerto Carreno urban grid", "code": 6265}, + {"name": "MAGNA-SIRGAS / Quibdo urban grid", "code": 6266}, + {"name": "MAGNA-SIRGAS / Riohacha urban grid", "code": 6267}, + {"name": "MAGNA-SIRGAS / San Andres urban grid", "code": 6268}, + {"name": "MAGNA-SIRGAS / San Jose del Guaviare urban grid", "code": 6269}, + {"name": "MAGNA-SIRGAS / Santa Marta urban grid", "code": 6270}, + {"name": "MAGNA-SIRGAS / Sucre urban grid", "code": 6271}, + {"name": "MAGNA-SIRGAS / Tunja urban grid", "code": 6272}, + {"name": "MAGNA-SIRGAS / Valledupar urban grid", "code": 6273}, + {"name": "MAGNA-SIRGAS / Villavicencio urban grid", "code": 6274}, + {"name": "MAGNA-SIRGAS / Yopal urban grid", "code": 6275}, + {"name": "NAD83(CORS96) / Puerto Rico and Virgin Is.", "code": 6307}, + {"name": "CGRS93 / Cyprus Local Transverse Mercator", "code": 6312}, + {"name": "MGI 1901 / Balkans zone 7", "code": 6316}, + {"name": "NAD83(2011) / UTM zone 59N", "code": 6328}, + {"name": "NAD83(2011) / UTM zone 60N", "code": 6329}, + {"name": "NAD83(2011) / UTM zone 1N", "code": 6330}, + {"name": "NAD83(2011) / UTM zone 2N", "code": 6331}, + {"name": "NAD83(2011) / UTM zone 3N", "code": 6332}, + {"name": "NAD83(2011) / UTM zone 4N", "code": 6333}, + {"name": "NAD83(2011) / UTM zone 5N", "code": 6334}, + {"name": "NAD83(2011) / UTM zone 6N", "code": 6335}, + {"name": "NAD83(2011) / UTM zone 7N", "code": 6336}, + {"name": "NAD83(2011) / UTM zone 8N", "code": 6337}, + {"name": "NAD83(2011) / UTM zone 9N", "code": 6338}, + {"name": "NAD83(2011) / UTM zone 10N", "code": 6339}, + {"name": "NAD83(2011) / UTM zone 11N", "code": 6340}, + {"name": "NAD83(2011) / UTM zone 12N", "code": 6341}, + {"name": "NAD83(2011) / UTM zone 13N", "code": 6342}, + {"name": "NAD83(2011) / UTM zone 14N", "code": 6343}, + {"name": "NAD83(2011) / UTM zone 15N", "code": 6344}, + {"name": "NAD83(2011) / UTM zone 16N", "code": 6345}, + {"name": "NAD83(2011) / UTM zone 17N", "code": 6346}, + {"name": "NAD83(2011) / UTM zone 18N", "code": 6347}, + {"name": "NAD83(2011) / UTM zone 19N", "code": 6348}, + {"name": "NAD83(2011) / Conus Albers", "code": 6350}, + {"name": "NAD83(2011) / EPSG Arctic zone 5-29", "code": 6351}, + {"name": "NAD83(2011) / EPSG Arctic zone 5-31", "code": 6352}, + {"name": "NAD83(2011) / EPSG Arctic zone 6-14", "code": 6353}, + {"name": "NAD83(2011) / EPSG Arctic zone 6-16", "code": 6354}, + {"name": "NAD83(2011) / Alabama East", "code": 6355}, + {"name": "NAD83(2011) / Alabama West", "code": 6356}, + {"name": "Mexico ITRF92 / LCC", "code": 6362}, + {"name": "Mexico ITRF2008 / UTM zone 11N", "code": 6366}, + {"name": "Mexico ITRF2008 / UTM zone 12N", "code": 6367}, + {"name": "Mexico ITRF2008 / UTM zone 13N", "code": 6368}, + {"name": "Mexico ITRF2008 / UTM zone 14N", "code": 6369}, + {"name": "Mexico ITRF2008 / UTM zone 15N", "code": 6370}, + {"name": "Mexico ITRF2008 / UTM zone 16N", "code": 6371}, + {"name": "Mexico ITRF2008 / LCC", "code": 6372}, + {"name": "UCS-2000 / Ukraine TM zone 7", "code": 6381}, + {"name": "UCS-2000 / Ukraine TM zone 8", "code": 6382}, + {"name": "UCS-2000 / Ukraine TM zone 9", "code": 6383}, + {"name": "UCS-2000 / Ukraine TM zone 10", "code": 6384}, + {"name": "UCS-2000 / Ukraine TM zone 11", "code": 6385}, + {"name": "UCS-2000 / Ukraine TM zone 12", "code": 6386}, + {"name": "UCS-2000 / Ukraine TM zone 13", "code": 6387}, + {"name": "Cayman Islands National Grid 2011", "code": 6391}, + {"name": "NAD83(2011) / Alaska Albers", "code": 6393}, + {"name": "NAD83(2011) / Alaska zone 1", "code": 6394}, + {"name": "NAD83(2011) / Alaska zone 2", "code": 6395}, + {"name": "NAD83(2011) / Alaska zone 3", "code": 6396}, + {"name": "NAD83(2011) / Alaska zone 4", "code": 6397}, + {"name": "NAD83(2011) / Alaska zone 5", "code": 6398}, + {"name": "NAD83(2011) / Alaska zone 6", "code": 6399}, + {"name": "NAD83(2011) / Alaska zone 7", "code": 6400}, + {"name": "NAD83(2011) / Alaska zone 8", "code": 6401}, + {"name": "NAD83(2011) / Alaska zone 9", "code": 6402}, + {"name": "NAD83(2011) / Alaska zone 10", "code": 6403}, + {"name": "NAD83(2011) / Arizona Central", "code": 6404}, + {"name": "NAD83(2011) / Arizona Central (ft)", "code": 6405}, + {"name": "NAD83(2011) / Arizona East", "code": 6406}, + {"name": "NAD83(2011) / Arizona East (ft)", "code": 6407}, + {"name": "NAD83(2011) / Arizona West", "code": 6408}, + {"name": "NAD83(2011) / Arizona West (ft)", "code": 6409}, + {"name": "NAD83(2011) / Arkansas North", "code": 6410}, + {"name": "NAD83(2011) / Arkansas North (ftUS)", "code": 6411}, + {"name": "NAD83(2011) / Arkansas South", "code": 6412}, + {"name": "NAD83(2011) / Arkansas South (ftUS)", "code": 6413}, + {"name": "NAD83(2011) / California Albers", "code": 6414}, + {"name": "NAD83(2011) / California zone 1", "code": 6415}, + {"name": "NAD83(2011) / California zone 1 (ftUS)", "code": 6416}, + {"name": "NAD83(2011) / California zone 2", "code": 6417}, + {"name": "NAD83(2011) / California zone 2 (ftUS)", "code": 6418}, + {"name": "NAD83(2011) / California zone 3", "code": 6419}, + {"name": "NAD83(2011) / California zone 3 (ftUS)", "code": 6420}, + {"name": "NAD83(2011) / California zone 4", "code": 6421}, + {"name": "NAD83(2011) / California zone 4 (ftUS)", "code": 6422}, + {"name": "NAD83(2011) / California zone 5", "code": 6423}, + {"name": "NAD83(2011) / California zone 5 (ftUS)", "code": 6424}, + {"name": "NAD83(2011) / California zone 6", "code": 6425}, + {"name": "NAD83(2011) / California zone 6 (ftUS)", "code": 6426}, + {"name": "NAD83(2011) / Colorado Central", "code": 6427}, + {"name": "NAD83(2011) / Colorado Central (ftUS)", "code": 6428}, + {"name": "NAD83(2011) / Colorado North", "code": 6429}, + {"name": "NAD83(2011) / Colorado North (ftUS)", "code": 6430}, + {"name": "NAD83(2011) / Colorado South", "code": 6431}, + {"name": "NAD83(2011) / Colorado South (ftUS)", "code": 6432}, + {"name": "NAD83(2011) / Connecticut", "code": 6433}, + {"name": "NAD83(2011) / Connecticut (ftUS)", "code": 6434}, + {"name": "NAD83(2011) / Delaware", "code": 6435}, + {"name": "NAD83(2011) / Delaware (ftUS)", "code": 6436}, + {"name": "NAD83(2011) / Florida East", "code": 6437}, + {"name": "NAD83(2011) / Florida East (ftUS)", "code": 6438}, + {"name": "NAD83(2011) / Florida GDL Albers", "code": 6439}, + {"name": "NAD83(2011) / Florida North", "code": 6440}, + {"name": "NAD83(2011) / Florida North (ftUS)", "code": 6441}, + {"name": "NAD83(2011) / Florida West", "code": 6442}, + {"name": "NAD83(2011) / Florida West (ftUS)", "code": 6443}, + {"name": "NAD83(2011) / Georgia East", "code": 6444}, + {"name": "NAD83(2011) / Georgia East (ftUS)", "code": 6445}, + {"name": "NAD83(2011) / Georgia West", "code": 6446}, + {"name": "NAD83(2011) / Georgia West (ftUS)", "code": 6447}, + {"name": "NAD83(2011) / Idaho Central", "code": 6448}, + {"name": "NAD83(2011) / Idaho Central (ftUS)", "code": 6449}, + {"name": "NAD83(2011) / Idaho East", "code": 6450}, + {"name": "NAD83(2011) / Idaho East (ftUS)", "code": 6451}, + {"name": "NAD83(2011) / Idaho West", "code": 6452}, + {"name": "NAD83(2011) / Idaho West (ftUS)", "code": 6453}, + {"name": "NAD83(2011) / Illinois East", "code": 6454}, + {"name": "NAD83(2011) / Illinois East (ftUS)", "code": 6455}, + {"name": "NAD83(2011) / Illinois West", "code": 6456}, + {"name": "NAD83(2011) / Illinois West (ftUS)", "code": 6457}, + {"name": "NAD83(2011) / Indiana East", "code": 6458}, + {"name": "NAD83(2011) / Indiana East (ftUS)", "code": 6459}, + {"name": "NAD83(2011) / Indiana West", "code": 6460}, + {"name": "NAD83(2011) / Indiana West (ftUS)", "code": 6461}, + {"name": "NAD83(2011) / Iowa North", "code": 6462}, + {"name": "NAD83(2011) / Iowa North (ftUS)", "code": 6463}, + {"name": "NAD83(2011) / Iowa South", "code": 6464}, + {"name": "NAD83(2011) / Iowa South (ftUS)", "code": 6465}, + {"name": "NAD83(2011) / Kansas North", "code": 6466}, + {"name": "NAD83(2011) / Kansas North (ftUS)", "code": 6467}, + {"name": "NAD83(2011) / Kansas South", "code": 6468}, + {"name": "NAD83(2011) / Kansas South (ftUS)", "code": 6469}, + {"name": "NAD83(2011) / Kentucky North", "code": 6470}, + {"name": "NAD83(2011) / Kentucky North (ftUS)", "code": 6471}, + {"name": "NAD83(2011) / Kentucky Single Zone", "code": 6472}, + {"name": "NAD83(2011) / Kentucky Single Zone (ftUS)", "code": 6473}, + {"name": "NAD83(2011) / Kentucky South", "code": 6474}, + {"name": "NAD83(2011) / Kentucky South (ftUS)", "code": 6475}, + {"name": "NAD83(2011) / Louisiana North", "code": 6476}, + {"name": "NAD83(2011) / Louisiana North (ftUS)", "code": 6477}, + {"name": "NAD83(2011) / Louisiana South", "code": 6478}, + {"name": "NAD83(2011) / Louisiana South (ftUS)", "code": 6479}, + {"name": "NAD83(2011) / Maine CS2000 Central", "code": 6480}, + {"name": "NAD83(2011) / Maine CS2000 East", "code": 6481}, + {"name": "NAD83(2011) / Maine CS2000 West", "code": 6482}, + {"name": "NAD83(2011) / Maine East", "code": 6483}, + {"name": "NAD83(2011) / Maine East (ftUS)", "code": 6484}, + {"name": "NAD83(2011) / Maine West", "code": 6485}, + {"name": "NAD83(2011) / Maine West (ftUS)", "code": 6486}, + {"name": "NAD83(2011) / Maryland", "code": 6487}, + {"name": "NAD83(2011) / Maryland (ftUS)", "code": 6488}, + {"name": "NAD83(2011) / Massachusetts Island", "code": 6489}, + {"name": "NAD83(2011) / Massachusetts Island (ftUS)", "code": 6490}, + {"name": "NAD83(2011) / Massachusetts Mainland", "code": 6491}, + {"name": "NAD83(2011) / Massachusetts Mainland (ftUS)", "code": 6492}, + {"name": "NAD83(2011) / Michigan Central", "code": 6493}, + {"name": "NAD83(2011) / Michigan Central (ft)", "code": 6494}, + {"name": "NAD83(2011) / Michigan North", "code": 6495}, + {"name": "NAD83(2011) / Michigan North (ft)", "code": 6496}, + {"name": "NAD83(2011) / Michigan Oblique Mercator", "code": 6497}, + {"name": "NAD83(2011) / Michigan South", "code": 6498}, + {"name": "NAD83(2011) / Michigan South (ft)", "code": 6499}, + {"name": "NAD83(2011) / Minnesota Central", "code": 6500}, + {"name": "NAD83(2011) / Minnesota Central (ftUS)", "code": 6501}, + {"name": "NAD83(2011) / Minnesota North", "code": 6502}, + {"name": "NAD83(2011) / Minnesota North (ftUS)", "code": 6503}, + {"name": "NAD83(2011) / Minnesota South", "code": 6504}, + {"name": "NAD83(2011) / Minnesota South (ftUS)", "code": 6505}, + {"name": "NAD83(2011) / Mississippi East", "code": 6506}, + {"name": "NAD83(2011) / Mississippi East (ftUS)", "code": 6507}, + {"name": "NAD83(2011) / Mississippi TM", "code": 6508}, + {"name": "NAD83(2011) / Mississippi West", "code": 6509}, + {"name": "NAD83(2011) / Mississippi West (ftUS)", "code": 6510}, + {"name": "NAD83(2011) / Missouri Central", "code": 6511}, + {"name": "NAD83(2011) / Missouri East", "code": 6512}, + {"name": "NAD83(2011) / Missouri West", "code": 6513}, + {"name": "NAD83(2011) / Montana", "code": 6514}, + {"name": "NAD83(2011) / Montana (ft)", "code": 6515}, + {"name": "NAD83(2011) / Nebraska", "code": 6516}, + {"name": "NAD83(2011) / Nebraska (ftUS)", "code": 6517}, + {"name": "NAD83(2011) / Nevada Central", "code": 6518}, + {"name": "NAD83(2011) / Nevada Central (ftUS)", "code": 6519}, + {"name": "NAD83(2011) / Nevada East", "code": 6520}, + {"name": "NAD83(2011) / Nevada East (ftUS)", "code": 6521}, + {"name": "NAD83(2011) / Nevada West", "code": 6522}, + {"name": "NAD83(2011) / Nevada West (ftUS)", "code": 6523}, + {"name": "NAD83(2011) / New Hampshire", "code": 6524}, + {"name": "NAD83(2011) / New Hampshire (ftUS)", "code": 6525}, + {"name": "NAD83(2011) / New Jersey", "code": 6526}, + {"name": "NAD83(2011) / New Jersey (ftUS)", "code": 6527}, + {"name": "NAD83(2011) / New Mexico Central", "code": 6528}, + {"name": "NAD83(2011) / New Mexico Central (ftUS)", "code": 6529}, + {"name": "NAD83(2011) / New Mexico East", "code": 6530}, + {"name": "NAD83(2011) / New Mexico East (ftUS)", "code": 6531}, + {"name": "NAD83(2011) / New Mexico West", "code": 6532}, + {"name": "NAD83(2011) / New Mexico West (ftUS)", "code": 6533}, + {"name": "NAD83(2011) / New York Central", "code": 6534}, + {"name": "NAD83(2011) / New York Central (ftUS)", "code": 6535}, + {"name": "NAD83(2011) / New York East", "code": 6536}, + {"name": "NAD83(2011) / New York East (ftUS)", "code": 6537}, + {"name": "NAD83(2011) / New York Long Island", "code": 6538}, + {"name": "NAD83(2011) / New York Long Island (ftUS)", "code": 6539}, + {"name": "NAD83(2011) / New York West", "code": 6540}, + {"name": "NAD83(2011) / New York West (ftUS)", "code": 6541}, + {"name": "NAD83(2011) / North Carolina", "code": 6542}, + {"name": "NAD83(2011) / North Carolina (ftUS)", "code": 6543}, + {"name": "NAD83(2011) / North Dakota North", "code": 6544}, + {"name": "NAD83(2011) / North Dakota North (ft)", "code": 6545}, + {"name": "NAD83(2011) / North Dakota South", "code": 6546}, + {"name": "NAD83(2011) / North Dakota South (ft)", "code": 6547}, + {"name": "NAD83(2011) / Ohio North", "code": 6548}, + {"name": "NAD83(2011) / Ohio North (ftUS)", "code": 6549}, + {"name": "NAD83(2011) / Ohio South", "code": 6550}, + {"name": "NAD83(2011) / Ohio South (ftUS)", "code": 6551}, + {"name": "NAD83(2011) / Oklahoma North", "code": 6552}, + {"name": "NAD83(2011) / Oklahoma North (ftUS)", "code": 6553}, + {"name": "NAD83(2011) / Oklahoma South", "code": 6554}, + {"name": "NAD83(2011) / Oklahoma South (ftUS)", "code": 6555}, + {"name": "NAD83(2011) / Oregon LCC (m)", "code": 6556}, + {"name": "NAD83(2011) / Oregon GIC Lambert (ft)", "code": 6557}, + {"name": "NAD83(2011) / Oregon North", "code": 6558}, + {"name": "NAD83(2011) / Oregon North (ft)", "code": 6559}, + {"name": "NAD83(2011) / Oregon South", "code": 6560}, + {"name": "NAD83(2011) / Oregon South (ft)", "code": 6561}, + {"name": "NAD83(2011) / Pennsylvania North", "code": 6562}, + {"name": "NAD83(2011) / Pennsylvania North (ftUS)", "code": 6563}, + {"name": "NAD83(2011) / Pennsylvania South", "code": 6564}, + {"name": "NAD83(2011) / Pennsylvania South (ftUS)", "code": 6565}, + {"name": "NAD83(2011) / Puerto Rico and Virgin Is.", "code": 6566}, + {"name": "NAD83(2011) / Rhode Island", "code": 6567}, + {"name": "NAD83(2011) / Rhode Island (ftUS)", "code": 6568}, + {"name": "NAD83(2011) / South Carolina", "code": 6569}, + {"name": "NAD83(2011) / South Carolina (ft)", "code": 6570}, + {"name": "NAD83(2011) / South Dakota North", "code": 6571}, + {"name": "NAD83(2011) / South Dakota North (ftUS)", "code": 6572}, + {"name": "NAD83(2011) / South Dakota South", "code": 6573}, + {"name": "NAD83(2011) / South Dakota South (ftUS)", "code": 6574}, + {"name": "NAD83(2011) / Tennessee", "code": 6575}, + {"name": "NAD83(2011) / Tennessee (ftUS)", "code": 6576}, + {"name": "NAD83(2011) / Texas Central", "code": 6577}, + {"name": "NAD83(2011) / Texas Central (ftUS)", "code": 6578}, + {"name": "NAD83(2011) / Texas Centric Albers Equal Area", "code": 6579}, + {"name": "NAD83(2011) / Texas Centric Lambert Conformal", "code": 6580}, + {"name": "NAD83(2011) / Texas North", "code": 6581}, + {"name": "NAD83(2011) / Texas North (ftUS)", "code": 6582}, + {"name": "NAD83(2011) / Texas North Central", "code": 6583}, + {"name": "NAD83(2011) / Texas North Central (ftUS)", "code": 6584}, + {"name": "NAD83(2011) / Texas South", "code": 6585}, + {"name": "NAD83(2011) / Texas South (ftUS)", "code": 6586}, + {"name": "NAD83(2011) / Texas South Central", "code": 6587}, + {"name": "NAD83(2011) / Texas South Central (ftUS)", "code": 6588}, + {"name": "NAD83(2011) / Vermont", "code": 6589}, + {"name": "NAD83(2011) / Vermont (ftUS)", "code": 6590}, + {"name": "NAD83(2011) / Virginia Lambert", "code": 6591}, + {"name": "NAD83(2011) / Virginia North", "code": 6592}, + {"name": "NAD83(2011) / Virginia North (ftUS)", "code": 6593}, + {"name": "NAD83(2011) / Virginia South", "code": 6594}, + {"name": "NAD83(2011) / Virginia South (ftUS)", "code": 6595}, + {"name": "NAD83(2011) / Washington North", "code": 6596}, + {"name": "NAD83(2011) / Washington North (ftUS)", "code": 6597}, + {"name": "NAD83(2011) / Washington South", "code": 6598}, + {"name": "NAD83(2011) / Washington South (ftUS)", "code": 6599}, + {"name": "NAD83(2011) / West Virginia North", "code": 6600}, + {"name": "NAD83(2011) / West Virginia North (ftUS)", "code": 6601}, + {"name": "NAD83(2011) / West Virginia South", "code": 6602}, + {"name": "NAD83(2011) / West Virginia South (ftUS)", "code": 6603}, + {"name": "NAD83(2011) / Wisconsin Central", "code": 6604}, + {"name": "NAD83(2011) / Wisconsin Central (ftUS)", "code": 6605}, + {"name": "NAD83(2011) / Wisconsin North", "code": 6606}, + {"name": "NAD83(2011) / Wisconsin North (ftUS)", "code": 6607}, + {"name": "NAD83(2011) / Wisconsin South", "code": 6608}, + {"name": "NAD83(2011) / Wisconsin South (ftUS)", "code": 6609}, + {"name": "NAD83(2011) / Wisconsin Transverse Mercator", "code": 6610}, + {"name": "NAD83(2011) / Wyoming East", "code": 6611}, + {"name": "NAD83(2011) / Wyoming East (ftUS)", "code": 6612}, + {"name": "NAD83(2011) / Wyoming East Central", "code": 6613}, + {"name": "NAD83(2011) / Wyoming East Central (ftUS)", "code": 6614}, + {"name": "NAD83(2011) / Wyoming West", "code": 6615}, + {"name": "NAD83(2011) / Wyoming West (ftUS)", "code": 6616}, + {"name": "NAD83(2011) / Wyoming West Central", "code": 6617}, + {"name": "NAD83(2011) / Wyoming West Central (ftUS)", "code": 6618}, + {"name": "NAD83(2011) / Utah Central", "code": 6619}, + {"name": "NAD83(2011) / Utah North", "code": 6620}, + {"name": "NAD83(2011) / Utah South", "code": 6621}, + {"name": "NAD83(CSRS) / Quebec Lambert", "code": 6622}, + {"name": "NAD83 / Quebec Albers", "code": 6623}, + {"name": "NAD83(CSRS) / Quebec Albers", "code": 6624}, + {"name": "NAD83(2011) / Utah Central (ftUS)", "code": 6625}, + {"name": "NAD83(2011) / Utah North (ftUS)", "code": 6626}, + {"name": "NAD83(2011) / Utah South (ftUS)", "code": 6627}, + {"name": "NAD83(PA11) / Hawaii zone 1", "code": 6628}, + {"name": "NAD83(PA11) / Hawaii zone 2", "code": 6629}, + {"name": "NAD83(PA11) / Hawaii zone 3", "code": 6630}, + {"name": "NAD83(PA11) / Hawaii zone 4", "code": 6631}, + {"name": "NAD83(PA11) / Hawaii zone 5", "code": 6632}, + {"name": "NAD83(PA11) / Hawaii zone 3 (ftUS)", "code": 6633}, + {"name": "NAD83(PA11) / UTM zone 4N", "code": 6634}, + {"name": "NAD83(PA11) / UTM zone 5N", "code": 6635}, + {"name": "NAD83(PA11) / UTM zone 2S", "code": 6636}, + {"name": "NAD83(MA11) / Guam Map Grid", "code": 6637}, + {"name": "Karbala 1979 / Iraq National Grid", "code": 6646}, + {"name": "JGD2011 / Japan Plane Rectangular CS I", "code": 6669}, + {"name": "JGD2011 / Japan Plane Rectangular CS II", "code": 6670}, + {"name": "JGD2011 / Japan Plane Rectangular CS III", "code": 6671}, + {"name": "JGD2011 / Japan Plane Rectangular CS IV", "code": 6672}, + {"name": "JGD2011 / Japan Plane Rectangular CS V", "code": 6673}, + {"name": "JGD2011 / Japan Plane Rectangular CS VI", "code": 6674}, + {"name": "JGD2011 / Japan Plane Rectangular CS VII", "code": 6675}, + {"name": "JGD2011 / Japan Plane Rectangular CS VIII", "code": 6676}, + {"name": "JGD2011 / Japan Plane Rectangular CS IX", "code": 6677}, + {"name": "JGD2011 / Japan Plane Rectangular CS X", "code": 6678}, + {"name": "JGD2011 / Japan Plane Rectangular CS XI", "code": 6679}, + {"name": "JGD2011 / Japan Plane Rectangular CS XII", "code": 6680}, + {"name": "JGD2011 / Japan Plane Rectangular CS XIII", "code": 6681}, + {"name": "JGD2011 / Japan Plane Rectangular CS XIV", "code": 6682}, + {"name": "JGD2011 / Japan Plane Rectangular CS XV", "code": 6683}, + {"name": "JGD2011 / Japan Plane Rectangular CS XVI", "code": 6684}, + {"name": "JGD2011 / Japan Plane Rectangular CS XVII", "code": 6685}, + {"name": "JGD2011 / Japan Plane Rectangular CS XVIII", "code": 6686}, + {"name": "JGD2011 / Japan Plane Rectangular CS XIX", "code": 6687}, + {"name": "JGD2011 / UTM zone 51N", "code": 6688}, + {"name": "JGD2011 / UTM zone 52N", "code": 6689}, + {"name": "JGD2011 / UTM zone 53N", "code": 6690}, + {"name": "JGD2011 / UTM zone 54N", "code": 6691}, + {"name": "JGD2011 / UTM zone 55N", "code": 6692}, + {"name": "WGS 84 / TM 60 SW", "code": 6703}, + {"name": "RDN2008 / UTM zone 32N (N-E)", "code": 6707}, + {"name": "RDN2008 / UTM zone 33N (N-E)", "code": 6708}, + {"name": "RDN2008 / UTM zone 34N (N-E)", "code": 6709}, + {"name": "WGS 84 / CIG92", "code": 6720}, + {"name": "GDA94 / CIG94", "code": 6721}, + {"name": "WGS 84 / CKIG92", "code": 6722}, + {"name": "GDA94 / CKIG94", "code": 6723}, + {"name": "GDA94 / MGA zone 41", "code": 6732}, + {"name": "GDA94 / MGA zone 42", "code": 6733}, + {"name": "GDA94 / MGA zone 43", "code": 6734}, + {"name": "GDA94 / MGA zone 44", "code": 6735}, + {"name": "GDA94 / MGA zone 46", "code": 6736}, + {"name": "GDA94 / MGA zone 47", "code": 6737}, + {"name": "GDA94 / MGA zone 59", "code": 6738}, + {"name": "NAD83(CORS96) / Oregon Baker zone (m)", "code": 6784}, + {"name": "NAD83(CORS96) / Oregon Baker zone (ft)", "code": 6785}, + {"name": "NAD83(2011) / Oregon Baker zone (m)", "code": 6786}, + {"name": "NAD83(2011) / Oregon Baker zone (ft)", "code": 6787}, + {"name": "NAD83(CORS96) / Oregon Bend-Klamath Falls zone (m)", "code": 6788}, + {"name": "NAD83(CORS96) / Oregon Bend-Klamath Falls zone (ft)", "code": 6789}, + {"name": "NAD83(2011) / Oregon Bend-Klamath Falls zone (m)", "code": 6790}, + {"name": "NAD83(2011) / Oregon Bend-Klamath Falls zone (ft)", "code": 6791}, + {"name": "NAD83(CORS96) / Oregon Bend-Redmond-Prineville zone (m)", "code": 6792}, + {"name": "NAD83(CORS96) / Oregon Bend-Redmond-Prineville zone (ft)", "code": 6793}, + {"name": "NAD83(2011) / Oregon Bend-Redmond-Prineville zone (m)", "code": 6794}, + {"name": "NAD83(2011) / Oregon Bend-Redmond-Prineville zone (ft)", "code": 6795}, + {"name": "NAD83(CORS96) / Oregon Bend-Burns zone (m)", "code": 6796}, + {"name": "NAD83(CORS96) / Oregon Bend-Burns zone (ft)", "code": 6797}, + {"name": "NAD83(2011) / Oregon Bend-Burns zone (m)", "code": 6798}, + {"name": "NAD83(2011) / Oregon Bend-Burns zone (ft)", "code": 6799}, + {"name": "NAD83(CORS96) / Oregon Canyonville-Grants Pass zone (m)", "code": 6800}, + {"name": "NAD83(CORS96) / Oregon Canyonville-Grants Pass zone (ft)", "code": 6801}, + {"name": "NAD83(2011) / Oregon Canyonville-Grants Pass zone (m)", "code": 6802}, + {"name": "NAD83(2011) / Oregon Canyonville-Grants Pass zone (ft)", "code": 6803}, + {"name": "NAD83(CORS96) / Oregon Columbia River East zone (m)", "code": 6804}, + {"name": "NAD83(CORS96) / Oregon Columbia River East zone (ft)", "code": 6805}, + {"name": "NAD83(2011) / Oregon Columbia River East zone (m)", "code": 6806}, + {"name": "NAD83(2011) / Oregon Columbia River East zone (ft)", "code": 6807}, + {"name": "NAD83(CORS96) / Oregon Columbia River West zone (m)", "code": 6808}, + {"name": "NAD83(CORS96) / Oregon Columbia River West zone (ft)", "code": 6809}, + {"name": "NAD83(2011) / Oregon Columbia River West zone (m)", "code": 6810}, + {"name": "NAD83(2011) / Oregon Columbia River West zone (ft)", "code": 6811}, + {"name": "NAD83(CORS96) / Oregon Cottage Grove-Canyonville zone (m)", "code": 6812}, + {"name": "NAD83(CORS96) / Oregon Cottage Grove-Canyonville zone (ft)", "code": 6813}, + {"name": "NAD83(2011) / Oregon Cottage Grove-Canyonville zone (m)", "code": 6814}, + {"name": "NAD83(2011) / Oregon Cottage Grove-Canyonville zone (ft)", "code": 6815}, + {"name": "NAD83(CORS96) / Oregon Dufur-Madras zone (m)", "code": 6816}, + {"name": "NAD83(CORS96) / Oregon Dufur-Madras zone (ft)", "code": 6817}, + {"name": "NAD83(2011) / Oregon Dufur-Madras zone (m)", "code": 6818}, + {"name": "NAD83(2011) / Oregon Dufur-Madras zone (ft)", "code": 6819}, + {"name": "NAD83(CORS96) / Oregon Eugene zone (m)", "code": 6820}, + {"name": "NAD83(CORS96) / Oregon Eugene zone (ft)", "code": 6821}, + {"name": "NAD83(2011) / Oregon Eugene zone (m)", "code": 6822}, + {"name": "NAD83(2011) / Oregon Eugene zone (ft)", "code": 6823}, + {"name": "NAD83(CORS96) / Oregon Grants Pass-Ashland zone (m)", "code": 6824}, + {"name": "NAD83(CORS96) / Oregon Grants Pass-Ashland zone (ft)", "code": 6825}, + {"name": "NAD83(2011) / Oregon Grants Pass-Ashland zone (m)", "code": 6826}, + {"name": "NAD83(2011) / Oregon Grants Pass-Ashland zone (ft)", "code": 6827}, + {"name": "NAD83(CORS96) / Oregon Gresham-Warm Springs zone (m)", "code": 6828}, + {"name": "NAD83(CORS96) / Oregon Gresham-Warm Springs zone (ft)", "code": 6829}, + {"name": "NAD83(2011) / Oregon Gresham-Warm Springs zone (m)", "code": 6830}, + {"name": "NAD83(2011) / Oregon Gresham-Warm Springs zone (ft)", "code": 6831}, + {"name": "NAD83(CORS96) / Oregon La Grande zone (m)", "code": 6832}, + {"name": "NAD83(CORS96) / Oregon La Grande zone (ft)", "code": 6833}, + {"name": "NAD83(2011) / Oregon La Grande zone (m)", "code": 6834}, + {"name": "NAD83(2011) / Oregon La Grande zone (ft)", "code": 6835}, + {"name": "NAD83(CORS96) / Oregon Ontario zone (m)", "code": 6836}, + {"name": "NAD83(CORS96) / Oregon Ontario zone (ft)", "code": 6837}, + {"name": "NAD83(2011) / Oregon Ontario zone (m)", "code": 6838}, + {"name": "NAD83(2011) / Oregon Ontario zone (ft)", "code": 6839}, + {"name": "NAD83(CORS96) / Oregon Coast zone (m)", "code": 6840}, + {"name": "NAD83(CORS96) / Oregon Coast zone (ft)", "code": 6841}, + {"name": "NAD83(2011) / Oregon Coast zone (m)", "code": 6842}, + {"name": "NAD83(2011) / Oregon Coast zone (ft)", "code": 6843}, + {"name": "NAD83(CORS96) / Oregon Pendleton zone (m)", "code": 6844}, + {"name": "NAD83(CORS96) / Oregon Pendleton zone (ft)", "code": 6845}, + {"name": "NAD83(2011) / Oregon Pendleton zone (m)", "code": 6846}, + {"name": "NAD83(2011) / Oregon Pendleton zone (ft)", "code": 6847}, + {"name": "NAD83(CORS96) / Oregon Pendleton-La Grande zone (m)", "code": 6848}, + {"name": "NAD83(CORS96) / Oregon Pendleton-La Grande zone (ft)", "code": 6849}, + {"name": "NAD83(2011) / Oregon Pendleton-La Grande zone (m)", "code": 6850}, + {"name": "NAD83(2011) / Oregon Pendleton-La Grande zone (ft)", "code": 6851}, + {"name": "NAD83(CORS96) / Oregon Portland zone (m)", "code": 6852}, + {"name": "NAD83(CORS96) / Oregon Portland zone (ft)", "code": 6853}, + {"name": "NAD83(2011) / Oregon Portland zone (m)", "code": 6854}, + {"name": "NAD83(2011) / Oregon Portland zone (ft)", "code": 6855}, + {"name": "NAD83(CORS96) / Oregon Salem zone (m)", "code": 6856}, + {"name": "NAD83(CORS96) / Oregon Salem zone (ft)", "code": 6857}, + {"name": "NAD83(2011) / Oregon Salem zone (m)", "code": 6858}, + {"name": "NAD83(2011) / Oregon Salem zone (ft)", "code": 6859}, + {"name": "NAD83(CORS96) / Oregon Santiam Pass zone (m)", "code": 6860}, + {"name": "NAD83(CORS96) / Oregon Santiam Pass zone (ft)", "code": 6861}, + {"name": "NAD83(2011) / Oregon Santiam Pass zone (m)", "code": 6862}, + {"name": "NAD83(2011) / Oregon Santiam Pass zone (ft)", "code": 6863}, + {"name": "NAD83(CORS96) / Oregon LCC (m)", "code": 6867}, + {"name": "NAD83(CORS96) / Oregon GIC Lambert (ft)", "code": 6868}, + {"name": "ETRS89 / Albania TM 2010", "code": 6870}, + {"name": "RDN2008 / Italy zone (N-E)", "code": 6875}, + {"name": "RDN2008 / Zone 12 (N-E)", "code": 6876}, + {"name": "NAD83(2011) / Wisconsin Central", "code": 6879}, + {"name": "NAD83(2011) / Nebraska (ftUS)", "code": 6880}, + {"name": "NAD83(CORS96) / Oregon North", "code": 6884}, + {"name": "NAD83(CORS96) / Oregon North (ft)", "code": 6885}, + {"name": "NAD83(CORS96) / Oregon South", "code": 6886}, + {"name": "NAD83(CORS96) / Oregon South (ft)", "code": 6887}, + {"name": "South East Island 1943 / UTM zone 40N", "code": 6915}, + {"name": "NAD83 / Kansas LCC", "code": 6922}, + {"name": "NAD83 / Kansas LCC (ftUS)", "code": 6923}, + {"name": "NAD83(2011) / Kansas LCC", "code": 6924}, + {"name": "NAD83(2011) / Kansas LCC (ftUS)", "code": 6925}, + {"name": "WGS 84 / NSIDC EASE-Grid 2.0 North", "code": 6931}, + {"name": "WGS 84 / NSIDC EASE-Grid 2.0 South", "code": 6932}, + {"name": "WGS 84 / NSIDC EASE-Grid 2.0 Global", "code": 6933}, + {"name": "VN-2000 / TM-3 zone 481", "code": 6956}, + {"name": "VN-2000 / TM-3 zone 482", "code": 6957}, + {"name": "VN-2000 / TM-3 zone 491", "code": 6958}, + {"name": "VN-2000 / TM-3 Da Nang zone", "code": 6959}, + {"name": "ETRS89 / Albania LCC 2010", "code": 6962}, + {"name": "NAD27 / Michigan North", "code": 6966}, + {"name": "Israeli Grid 05", "code": 6984}, + {"name": "Israeli Grid 05/12", "code": 6991}, + {"name": "NAD83(2011) / San Francisco CS13", "code": 6996}, + {"name": "NAD83(2011) / San Francisco CS13 (ftUS)", "code": 6997}, + {"name": "Nahrwan 1934 / UTM zone 37N", "code": 7005}, + {"name": "Nahrwan 1934 / UTM zone 38N", "code": 7006}, + {"name": "Nahrwan 1934 / UTM zone 39N", "code": 7007}, + {"name": "NAD83(2011) / IaRCS zone 1", "code": 7057}, + {"name": "NAD83(2011) / IaRCS zone 2", "code": 7058}, + {"name": "NAD83(2011) / IaRCS zone 3", "code": 7059}, + {"name": "NAD83(2011) / IaRCS zone 4", "code": 7060}, + {"name": "NAD83(2011) / IaRCS zone 5", "code": 7061}, + {"name": "NAD83(2011) / IaRCS zone 6", "code": 7062}, + {"name": "NAD83(2011) / IaRCS zone 7", "code": 7063}, + {"name": "NAD83(2011) / IaRCS zone 8", "code": 7064}, + {"name": "NAD83(2011) / IaRCS zone 9", "code": 7065}, + {"name": "NAD83(2011) / IaRCS zone 10", "code": 7066}, + {"name": "NAD83(2011) / IaRCS zone 11", "code": 7067}, + {"name": "NAD83(2011) / IaRCS zone 12", "code": 7068}, + {"name": "NAD83(2011) / IaRCS zone 13", "code": 7069}, + {"name": "NAD83(2011) / IaRCS zone 14", "code": 7070}, + {"name": "RGTAAF07 / UTM zone 37S", "code": 7074}, + {"name": "RGTAAF07 / UTM zone 38S", "code": 7075}, + {"name": "RGTAAF07 / UTM zone 39S", "code": 7076}, + {"name": "RGTAAF07 / UTM zone 40S", "code": 7077}, + {"name": "RGTAAF07 / UTM zone 41S", "code": 7078}, + {"name": "RGTAAF07 / UTM zone 42S", "code": 7079}, + {"name": "RGTAAF07 / UTM zone 43S", "code": 7080}, + {"name": "RGTAAF07 / UTM zone 44S", "code": 7081}, + {"name": "RGTAAF07 / Terre Adelie Polar Stereographic", "code": 7082}, + {"name": "NAD83(2011) / RMTCRS St Mary (m)", "code": 7109}, + {"name": "NAD83(2011) / RMTCRS Blackfeet (m)", "code": 7110}, + {"name": "NAD83(2011) / RMTCRS Milk River (m)", "code": 7111}, + {"name": "NAD83(2011) / RMTCRS Fort Belknap (m)", "code": 7112}, + {"name": "NAD83(2011) / RMTCRS Fort Peck Assiniboine (m)", "code": 7113}, + {"name": "NAD83(2011) / RMTCRS Fort Peck Sioux (m)", "code": 7114}, + {"name": "NAD83(2011) / RMTCRS Crow (m)", "code": 7115}, + {"name": "NAD83(2011) / RMTCRS Bobcat (m)", "code": 7116}, + {"name": "NAD83(2011) / RMTCRS Billings (m)", "code": 7117}, + {"name": "NAD83(2011) / RMTCRS Wind River (m)", "code": 7118}, + {"name": "NAD83(2011) / RMTCRS St Mary (ft)", "code": 7119}, + {"name": "NAD83(2011) / RMTCRS Blackfeet (ft)", "code": 7120}, + {"name": "NAD83(2011) / RMTCRS Milk River (ft)", "code": 7121}, + {"name": "NAD83(2011) / RMTCRS Fort Belknap (ft)", "code": 7122}, + {"name": "NAD83(2011) / RMTCRS Fort Peck Assiniboine (ft)", "code": 7123}, + {"name": "NAD83(2011) / RMTCRS Fort Peck Sioux (ft)", "code": 7124}, + {"name": "NAD83(2011) / RMTCRS Crow (ft)", "code": 7125}, + {"name": "NAD83(2011) / RMTCRS Bobcat (ft)", "code": 7126}, + {"name": "NAD83(2011) / RMTCRS Billings (ft)", "code": 7127}, + {"name": "NAD83(2011) / RMTCRS Wind River (ftUS)", "code": 7128}, + {"name": "NAD83(2011) / San Francisco CS13", "code": 7131}, + {"name": "NAD83(2011) / San Francisco CS13 (ftUS)", "code": 7132}, + {"name": "Palestine 1923 / Palestine Grid modified", "code": 7142}, + {"name": "NAD83(2011) / InGCS Adams (m)", "code": 7257}, + {"name": "NAD83(2011) / InGCS Adams (ftUS)", "code": 7258}, + {"name": "NAD83(2011) / InGCS Allen (m)", "code": 7259}, + {"name": "NAD83(2011) / InGCS Allen (ftUS)", "code": 7260}, + {"name": "NAD83(2011) / InGCS Bartholomew (m)", "code": 7261}, + {"name": "NAD83(2011) / InGCS Bartholomew (ftUS)", "code": 7262}, + {"name": "NAD83(2011) / InGCS Benton (m)", "code": 7263}, + {"name": "NAD83(2011) / InGCS Benton (ftUS)", "code": 7264}, + {"name": "NAD83(2011) / InGCS Blackford-Delaware (m)", "code": 7265}, + {"name": "NAD83(2011) / InGCS Blackford-Delaware (ftUS)", "code": 7266}, + {"name": "NAD83(2011) / InGCS Boone-Hendricks (m)", "code": 7267}, + {"name": "NAD83(2011) / InGCS Boone-Hendricks (ftUS)", "code": 7268}, + {"name": "NAD83(2011) / InGCS Brown (m)", "code": 7269}, + {"name": "NAD83(2011) / InGCS Brown (ftUS)", "code": 7270}, + {"name": "NAD83(2011) / InGCS Carroll (m)", "code": 7271}, + {"name": "NAD83(2011) / InGCS Carroll (ftUS)", "code": 7272}, + {"name": "NAD83(2011) / InGCS Cass (m)", "code": 7273}, + {"name": "NAD83(2011) / InGCS Cass (ftUS)", "code": 7274}, + {"name": "NAD83(2011) / InGCS Clark-Floyd-Scott (m)", "code": 7275}, + {"name": "NAD83(2011) / InGCS Clark-Floyd-Scott (ftUS)", "code": 7276}, + {"name": "NAD83(2011) / InGCS Clay (m)", "code": 7277}, + {"name": "NAD83(2011) / InGCS Clay (ftUS)", "code": 7278}, + {"name": "NAD83(2011) / InGCS Clinton (m)", "code": 7279}, + {"name": "NAD83(2011) / InGCS Clinton (ftUS)", "code": 7280}, + {"name": "NAD83(2011) / InGCS Crawford-Lawrence-Orange (m)", "code": 7281}, + {"name": "NAD83(2011) / InGCS Crawford-Lawrence-Orange (ftUS)", "code": 7282}, + {"name": "NAD83(2011) / InGCS Daviess-Greene (m)", "code": 7283}, + {"name": "NAD83(2011) / InGCS Daviess-Greene (ftUS)", "code": 7284}, + {"name": "NAD83(2011) / InGCS Dearborn-Ohio-Switzerland (m)", "code": 7285}, + {"name": "NAD83(2011) / InGCS Dearborn-Ohio-Switzerland (ftUS)", "code": 7286}, + {"name": "NAD83(2011) / InGCS Decatur-Rush (m)", "code": 7287}, + {"name": "NAD83(2011) / InGCS Decatur-Rush (ftUS)", "code": 7288}, + {"name": "NAD83(2011) / InGCS DeKalb (m)", "code": 7289}, + {"name": "NAD83(2011) / InGCS DeKalb (ftUS)", "code": 7290}, + {"name": "NAD83(2011) / InGCS Dubois-Martin (m)", "code": 7291}, + {"name": "NAD83(2011) / InGCS Dubois-Martin (ftUS)", "code": 7292}, + {"name": "NAD83(2011) / InGCS Elkhart-Kosciusko-Wabash (m)", "code": 7293}, + {"name": "NAD83(2011) / InGCS Elkhart-Kosciusko-Wabash (ftUS)", "code": 7294}, + {"name": "NAD83(2011) / InGCS Fayette-Franklin-Union (m)", "code": 7295}, + {"name": "NAD83(2011) / InGCS Fayette-Franklin-Union (ftUS)", "code": 7296}, + {"name": "NAD83(2011) / InGCS Fountain-Warren (m)", "code": 7297}, + {"name": "NAD83(2011) / InGCS Fountain-Warren (ftUS)", "code": 7298}, + {"name": "NAD83(2011) / InGCS Fulton-Marshall-St. Joseph (m)", "code": 7299}, + {"name": "NAD83(2011) / InGCS Fulton-Marshall-St. Joseph (ftUS)", "code": 7300}, + {"name": "NAD83(2011) / InGCS Gibson (m)", "code": 7301}, + {"name": "NAD83(2011) / InGCS Gibson (ftUS)", "code": 7302}, + {"name": "NAD83(2011) / InGCS Grant (m)", "code": 7303}, + {"name": "NAD83(2011) / InGCS Grant (ftUS)", "code": 7304}, + {"name": "NAD83(2011) / InGCS Hamilton-Tipton (m)", "code": 7305}, + {"name": "NAD83(2011) / InGCS Hamilton-Tipton (ftUS)", "code": 7306}, + {"name": "NAD83(2011) / InGCS Hancock-Madison (m)", "code": 7307}, + {"name": "NAD83(2011) / InGCS Hancock-Madison (ftUS)", "code": 7308}, + {"name": "NAD83(2011) / InGCS Harrison-Washington (m)", "code": 7309}, + {"name": "NAD83(2011) / InGCS Harrison-Washington (ftUS)", "code": 7310}, + {"name": "NAD83(2011) / InGCS Henry (m)", "code": 7311}, + {"name": "NAD83(2011) / InGCS Henry (ftUS)", "code": 7312}, + {"name": "NAD83(2011) / InGCS Howard-Miami (m)", "code": 7313}, + {"name": "NAD83(2011) / InGCS Howard-Miami (ftUS)", "code": 7314}, + {"name": "NAD83(2011) / InGCS Huntington-Whitley (m)", "code": 7315}, + {"name": "NAD83(2011) / InGCS Huntington-Whitley (ftUS)", "code": 7316}, + {"name": "NAD83(2011) / InGCS Jackson (m)", "code": 7317}, + {"name": "NAD83(2011) / InGCS Jackson (ftUS)", "code": 7318}, + {"name": "NAD83(2011) / InGCS Jasper-Porter (m)", "code": 7319}, + {"name": "NAD83(2011) / InGCS Jasper-Porter (ftUS)", "code": 7320}, + {"name": "NAD83(2011) / InGCS Jay (m)", "code": 7321}, + {"name": "NAD83(2011) / InGCS Jay (ftUS)", "code": 7322}, + {"name": "NAD83(2011) / InGCS Jefferson (m)", "code": 7323}, + {"name": "NAD83(2011) / InGCS Jefferson (ftUS)", "code": 7324}, + {"name": "NAD83(2011) / InGCS Jennings (m)", "code": 7325}, + {"name": "NAD83(2011) / InGCS Jennings (ftUS)", "code": 7326}, + {"name": "NAD83(2011) / InGCS Johnson-Marion (m)", "code": 7327}, + {"name": "NAD83(2011) / InGCS Johnson-Marion (ftUS)", "code": 7328}, + {"name": "NAD83(2011) / InGCS Knox (m)", "code": 7329}, + {"name": "NAD83(2011) / InGCS Knox (ftUS)", "code": 7330}, + {"name": "NAD83(2011) / InGCS LaGrange-Noble (m)", "code": 7331}, + {"name": "NAD83(2011) / InGCS LaGrange-Noble (ftUS)", "code": 7332}, + {"name": "NAD83(2011) / InGCS Lake-Newton (m)", "code": 7333}, + {"name": "NAD83(2011) / InGCS Lake-Newton (ftUS)", "code": 7334}, + {"name": "NAD83(2011) / InGCS LaPorte-Pulaski-Starke (m)", "code": 7335}, + {"name": "NAD83(2011) / InGCS LaPorte-Pulaski-Starke (ftUS)", "code": 7336}, + {"name": "NAD83(2011) / InGCS Monroe-Morgan (m)", "code": 7337}, + {"name": "NAD83(2011) / InGCS Monroe-Morgan (ftUS)", "code": 7338}, + {"name": "NAD83(2011) / InGCS Montgomery-Putnam (m)", "code": 7339}, + {"name": "NAD83(2011) / InGCS Montgomery-Putnam (ftUS)", "code": 7340}, + {"name": "NAD83(2011) / InGCS Owen (m)", "code": 7341}, + {"name": "NAD83(2011) / InGCS Owen (ftUS)", "code": 7342}, + {"name": "NAD83(2011) / InGCS Parke-Vermillion (m)", "code": 7343}, + {"name": "NAD83(2011) / InGCS Parke-Vermillion (ftUS)", "code": 7344}, + {"name": "NAD83(2011) / InGCS Perry (m)", "code": 7345}, + {"name": "NAD83(2011) / InGCS Perry (ftUS)", "code": 7346}, + {"name": "NAD83(2011) / InGCS Pike-Warrick (m)", "code": 7347}, + {"name": "NAD83(2011) / InGCS Pike-Warrick (ftUS)", "code": 7348}, + {"name": "NAD83(2011) / InGCS Posey (m)", "code": 7349}, + {"name": "NAD83(2011) / InGCS Posey (ftUS)", "code": 7350}, + {"name": "NAD83(2011) / InGCS Randolph-Wayne (m)", "code": 7351}, + {"name": "NAD83(2011) / InGCS Randolph-Wayne (ftUS)", "code": 7352}, + {"name": "NAD83(2011) / InGCS Ripley (m)", "code": 7353}, + {"name": "NAD83(2011) / InGCS Ripley (ftUS)", "code": 7354}, + {"name": "NAD83(2011) / InGCS Shelby (m)", "code": 7355}, + {"name": "NAD83(2011) / InGCS Shelby (ftUS)", "code": 7356}, + {"name": "NAD83(2011) / InGCS Spencer (m)", "code": 7357}, + {"name": "NAD83(2011) / InGCS Spencer (ftUS)", "code": 7358}, + {"name": "NAD83(2011) / InGCS Steuben (m)", "code": 7359}, + {"name": "NAD83(2011) / InGCS Steuben (ftUS)", "code": 7360}, + {"name": "NAD83(2011) / InGCS Sullivan (m)", "code": 7361}, + {"name": "NAD83(2011) / InGCS Sullivan (ftUS)", "code": 7362}, + {"name": "NAD83(2011) / InGCS Tippecanoe-White (m)", "code": 7363}, + {"name": "NAD83(2011) / InGCS Tippecanoe-White (ftUS)", "code": 7364}, + {"name": "NAD83(2011) / InGCS Vanderburgh (m)", "code": 7365}, + {"name": "NAD83(2011) / InGCS Vanderburgh (ftUS)", "code": 7366}, + {"name": "NAD83(2011) / InGCS Vigo (m)", "code": 7367}, + {"name": "NAD83(2011) / InGCS Vigo (ftUS)", "code": 7368}, + {"name": "NAD83(2011) / InGCS Wells (m)", "code": 7369}, + {"name": "NAD83(2011) / InGCS Wells (ftUS)", "code": 7370}, + {"name": "ONGD14 / UTM zone 39N", "code": 7374}, + {"name": "ONGD14 / UTM zone 40N", "code": 7375}, + {"name": "ONGD14 / UTM zone 41N", "code": 7376}, + {"name": "NAD83(2011) / WISCRS Adams and Juneau (m)", "code": 7528}, + {"name": "NAD83(2011) / WISCRS Ashland (m)", "code": 7529}, + {"name": "NAD83(2011) / WISCRS Barron (m)", "code": 7530}, + {"name": "NAD83(2011) / WISCRS Bayfield (m)", "code": 7531}, + {"name": "NAD83(2011) / WISCRS Brown (m)", "code": 7532}, + {"name": "NAD83(2011) / WISCRS Buffalo (m)", "code": 7533}, + {"name": "NAD83(2011) / WISCRS Burnett (m)", "code": 7534}, + {"name": "NAD83(2011) / WISCRS Calumet, Fond du Lac, Outagamie and Winnebago (m)", "code": 7535}, + {"name": "NAD83(2011) / WISCRS Chippewa (m)", "code": 7536}, + {"name": "NAD83(2011) / WISCRS Clark (m)", "code": 7537}, + {"name": "NAD83(2011) / WISCRS Columbia (m)", "code": 7538}, + {"name": "NAD83(2011) / WISCRS Crawford (m)", "code": 7539}, + {"name": "NAD83(2011) / WISCRS Dane (m)", "code": 7540}, + {"name": "NAD83(2011) / WISCRS Dodge and Jefferson (m)", "code": 7541}, + {"name": "NAD83(2011) / WISCRS Door (m)", "code": 7542}, + {"name": "NAD83(2011) / WISCRS Douglas (m)", "code": 7543}, + {"name": "NAD83(2011) / WISCRS Dunn (m)", "code": 7544}, + {"name": "NAD83(2011) / WISCRS Eau Claire (m)", "code": 7545}, + {"name": "NAD83(2011) / WISCRS Florence (m)", "code": 7546}, + {"name": "NAD83(2011) / WISCRS Forest (m)", "code": 7547}, + {"name": "NAD83(2011) / WISCRS Grant (m)", "code": 7548}, + {"name": "NAD83(2011) / WISCRS Green and Lafayette (m)", "code": 7549}, + {"name": "NAD83(2011) / WISCRS Green Lake and Marquette (m)", "code": 7550}, + {"name": "NAD83(2011) / WISCRS Iowa (m)", "code": 7551}, + {"name": "NAD83(2011) / WISCRS Iron (m)", "code": 7552}, + {"name": "NAD83(2011) / WISCRS Jackson (m)", "code": 7553}, + {"name": "NAD83(2011) / WISCRS Kenosha, Milwaukee, Ozaukee and Racine (m)", "code": 7554}, + {"name": "NAD83(2011) / WISCRS Kewaunee, Manitowoc and Sheboygan (m)", "code": 7555}, + {"name": "NAD83(2011) / WISCRS La Crosse (m)", "code": 7556}, + {"name": "NAD83(2011) / WISCRS Langlade (m)", "code": 7557}, + {"name": "NAD83(2011) / WISCRS Lincoln (m)", "code": 7558}, + {"name": "NAD83(2011) / WISCRS Marathon (m)", "code": 7559}, + {"name": "NAD83(2011) / WISCRS Marinette (m)", "code": 7560}, + {"name": "NAD83(2011) / WISCRS Menominee (m)", "code": 7561}, + {"name": "NAD83(2011) / WISCRS Monroe (m)", "code": 7562}, + {"name": "NAD83(2011) / WISCRS Oconto (m)", "code": 7563}, + {"name": "NAD83(2011) / WISCRS Oneida (m)", "code": 7564}, + {"name": "NAD83(2011) / WISCRS Pepin and Pierce (m)", "code": 7565}, + {"name": "NAD83(2011) / WISCRS Polk (m)", "code": 7566}, + {"name": "NAD83(2011) / WISCRS Portage (m)", "code": 7567}, + {"name": "NAD83(2011) / WISCRS Price (m)", "code": 7568}, + {"name": "NAD83(2011) / WISCRS Richland (m)", "code": 7569}, + {"name": "NAD83(2011) / WISCRS Rock (m)", "code": 7570}, + {"name": "NAD83(2011) / WISCRS Rusk (m)", "code": 7571}, + {"name": "NAD83(2011) / WISCRS Sauk (m)", "code": 7572}, + {"name": "NAD83(2011) / WISCRS Sawyer (m)", "code": 7573}, + {"name": "NAD83(2011) / WISCRS Shawano (m)", "code": 7574}, + {"name": "NAD83(2011) / WISCRS St. Croix (m)", "code": 7575}, + {"name": "NAD83(2011) / WISCRS Taylor (m)", "code": 7576}, + {"name": "NAD83(2011) / WISCRS Trempealeau (m)", "code": 7577}, + {"name": "NAD83(2011) / WISCRS Vernon (m)", "code": 7578}, + {"name": "NAD83(2011) / WISCRS Vilas (m)", "code": 7579}, + {"name": "NAD83(2011) / WISCRS Walworth (m)", "code": 7580}, + {"name": "NAD83(2011) / WISCRS Washburn (m)", "code": 7581}, + {"name": "NAD83(2011) / WISCRS Washington (m)", "code": 7582}, + {"name": "NAD83(2011) / WISCRS Waukesha (m)", "code": 7583}, + {"name": "NAD83(2011) / WISCRS Waupaca (m)", "code": 7584}, + {"name": "NAD83(2011) / WISCRS Waushara (m)", "code": 7585}, + {"name": "NAD83(2011) / WISCRS Wood (m)", "code": 7586}, + {"name": "NAD83(2011) / WISCRS Adams and Juneau (ftUS)", "code": 7587}, + {"name": "NAD83(2011) / WISCRS Ashland (ftUS)", "code": 7588}, + {"name": "NAD83(2011) / WISCRS Barron (ftUS)", "code": 7589}, + {"name": "NAD83(2011) / WISCRS Bayfield (ftUS)", "code": 7590}, + {"name": "NAD83(2011) / WISCRS Brown (ftUS)", "code": 7591}, + {"name": "NAD83(2011) / WISCRS Buffalo (ftUS)", "code": 7592}, + {"name": "NAD83(2011) / WISCRS Burnett (ftUS)", "code": 7593}, + {"name": "NAD83(2011) / WISCRS Calumet, Fond du Lac, Outagamie and Winnebago (ftUS)", "code": 7594}, + {"name": "NAD83(2011) / WISCRS Chippewa (ftUS)", "code": 7595}, + {"name": "NAD83(2011) / WISCRS Clark (ftUS)", "code": 7596}, + {"name": "NAD83(2011) / WISCRS Columbia (ftUS)", "code": 7597}, + {"name": "NAD83(2011) / WISCRS Crawford (ftUS)", "code": 7598}, + {"name": "NAD83(2011) / WISCRS Dane (ftUS)", "code": 7599}, + {"name": "NAD83(2011) / WISCRS Dodge and Jefferson (ftUS)", "code": 7600}, + {"name": "NAD83(2011) / WISCRS Door (ftUS)", "code": 7601}, + {"name": "NAD83(2011) / WISCRS Douglas (ftUS)", "code": 7602}, + {"name": "NAD83(2011) / WISCRS Dunn (ftUS)", "code": 7603}, + {"name": "NAD83(2011) / WISCRS Eau Claire (ftUS)", "code": 7604}, + {"name": "NAD83(2011) / WISCRS Florence (ftUS)", "code": 7605}, + {"name": "NAD83(2011) / WISCRS Forest (ftUS)", "code": 7606}, + {"name": "NAD83(2011) / WISCRS Grant (ftUS)", "code": 7607}, + {"name": "NAD83(2011) / WISCRS Green and Lafayette (ftUS)", "code": 7608}, + {"name": "NAD83(2011) / WISCRS Green Lake and Marquette (ftUS)", "code": 7609}, + {"name": "NAD83(2011) / WISCRS Iowa (ftUS)", "code": 7610}, + {"name": "NAD83(2011) / WISCRS Iron (ftUS)", "code": 7611}, + {"name": "NAD83(2011) / WISCRS Jackson (ftUS)", "code": 7612}, + {"name": "NAD83(2011) / WISCRS Kenosha, Milwaukee, Ozaukee and Racine (ftUS)", "code": 7613}, + {"name": "NAD83(2011) / WISCRS Kewaunee, Manitowoc and Sheboygan (ftUS)", "code": 7614}, + {"name": "NAD83(2011) / WISCRS La Crosse (ftUS)", "code": 7615}, + {"name": "NAD83(2011) / WISCRS Langlade (ftUS)", "code": 7616}, + {"name": "NAD83(2011) / WISCRS Lincoln (ftUS)", "code": 7617}, + {"name": "NAD83(2011) / WISCRS Marathon (ftUS)", "code": 7618}, + {"name": "NAD83(2011) / WISCRS Marinette (ftUS)", "code": 7619}, + {"name": "NAD83(2011) / WISCRS Menominee (ftUS)", "code": 7620}, + {"name": "NAD83(2011) / WISCRS Monroe (ftUS)", "code": 7621}, + {"name": "NAD83(2011) / WISCRS Oconto (ftUS)", "code": 7622}, + {"name": "NAD83(2011) / WISCRS Oneida (ftUS)", "code": 7623}, + {"name": "NAD83(2011) / WISCRS Pepin and Pierce (ftUS)", "code": 7624}, + {"name": "NAD83(2011) / WISCRS Polk (ftUS)", "code": 7625}, + {"name": "NAD83(2011) / WISCRS Portage (ftUS)", "code": 7626}, + {"name": "NAD83(2011) / WISCRS Price (ftUS)", "code": 7627}, + {"name": "NAD83(2011) / WISCRS Richland (ftUS)", "code": 7628}, + {"name": "NAD83(2011) / WISCRS Rock (ftUS)", "code": 7629}, + {"name": "NAD83(2011) / WISCRS Rusk (ftUS)", "code": 7630}, + {"name": "NAD83(2011) / WISCRS Sauk (ftUS)", "code": 7631}, + {"name": "NAD83(2011) / WISCRS Sawyer (ftUS)", "code": 7632}, + {"name": "NAD83(2011) / WISCRS Shawano (ftUS)", "code": 7633}, + {"name": "NAD83(2011) / WISCRS St. Croix (ftUS)", "code": 7634}, + {"name": "NAD83(2011) / WISCRS Taylor (ftUS)", "code": 7635}, + {"name": "NAD83(2011) / WISCRS Trempealeau (ftUS)", "code": 7636}, + {"name": "NAD83(2011) / WISCRS Vernon (ftUS)", "code": 7637}, + {"name": "NAD83(2011) / WISCRS Vilas (ftUS)", "code": 7638}, + {"name": "NAD83(2011) / WISCRS Walworth (ftUS)", "code": 7639}, + {"name": "NAD83(2011) / WISCRS Washburn (ftUS)", "code": 7640}, + {"name": "NAD83(2011) / WISCRS Washington (ftUS)", "code": 7641}, + {"name": "NAD83(2011) / WISCRS Waukesha (ftUS)", "code": 7642}, + {"name": "NAD83(2011) / WISCRS Waupaca (ftUS)", "code": 7643}, + {"name": "NAD83(2011) / WISCRS Waushara (ftUS)", "code": 7644}, + {"name": "NAD83(2011) / WISCRS Wood (ftUS)", "code": 7645}, + {"name": "Kyrg-06 / zone 1", "code": 7692}, + {"name": "Kyrg-06 / zone 2", "code": 7693}, + {"name": "Kyrg-06 / zone 3", "code": 7694}, + {"name": "Kyrg-06 / zone 4", "code": 7695}, + {"name": "Kyrg-06 / zone 5", "code": 7696}, + {"name": "WGS 84 / India NSF LCC", "code": 7755}, + {"name": "WGS 84 / Andhra Pradesh", "code": 7756}, + {"name": "WGS 84 / Arunachal Pradesh", "code": 7757}, + {"name": "WGS 84 / Assam", "code": 7758}, + {"name": "WGS 84 / Bihar", "code": 7759}, + {"name": "WGS 84 / Delhi", "code": 7760}, + {"name": "WGS 84 / Gujarat", "code": 7761}, + {"name": "WGS 84 / Haryana", "code": 7762}, + {"name": "WGS 84 / Himachal Pradesh", "code": 7763}, + {"name": "WGS 84 / Jammu and Kashmir", "code": 7764}, + {"name": "WGS 84 / Jharkhand", "code": 7765}, + {"name": "WGS 84 / Madhya Pradesh", "code": 7766}, + {"name": "WGS 84 / Maharashtra", "code": 7767}, + {"name": "WGS 84 / Manipur", "code": 7768}, + {"name": "WGS 84 / Meghalaya", "code": 7769}, + {"name": "WGS 84 / Nagaland", "code": 7770}, + {"name": "WGS 84 / India Northeast", "code": 7771}, + {"name": "WGS 84 / Orissa", "code": 7772}, + {"name": "WGS 84 / Punjab", "code": 7773}, + {"name": "WGS 84 / Rajasthan", "code": 7774}, + {"name": "WGS 84 / Uttar Pradesh", "code": 7775}, + {"name": "WGS 84 / Uttaranchal", "code": 7776}, + {"name": "WGS 84 / Andaman and Nicobar", "code": 7777}, + {"name": "WGS 84 / Chhattisgarh", "code": 7778}, + {"name": "WGS 84 / Goa", "code": 7779}, + {"name": "WGS 84 / Karnataka", "code": 7780}, + {"name": "WGS 84 / Kerala", "code": 7781}, + {"name": "WGS 84 / Lakshadweep", "code": 7782}, + {"name": "WGS 84 / Mizoram", "code": 7783}, + {"name": "WGS 84 / Sikkim", "code": 7784}, + {"name": "WGS 84 / Tamil Nadu", "code": 7785}, + {"name": "WGS 84 / Tripura", "code": 7786}, + {"name": "WGS 84 / West Bengal", "code": 7787}, + {"name": "RDN2008 / UTM zone 32N", "code": 7791}, + {"name": "RDN2008 / UTM zone 33N", "code": 7792}, + {"name": "RDN2008 / UTM zone 34N", "code": 7793}, + {"name": "RDN2008 / Italy zone (E-N)", "code": 7794}, + {"name": "RDN2008 / Zone 12 (E-N)", "code": 7795}, + {"name": "BGS2005 / UTM zone 34N (N-E)", "code": 7799}, + {"name": "BGS2005 / UTM zone 35N (N-E)", "code": 7800}, + {"name": "BGS2005 / CCS2005", "code": 7801}, + {"name": "BGS2005 / UTM zone 34N", "code": 7803}, + {"name": "BGS2005 / UTM zone 35N", "code": 7804}, + {"name": "BGS2005 / UTM zone 36N", "code": 7805}, + {"name": "Pulkovo 1942 / CS63 zone X1", "code": 7825}, + {"name": "Pulkovo 1942 / CS63 zone X2", "code": 7826}, + {"name": "Pulkovo 1942 / CS63 zone X3", "code": 7827}, + {"name": "Pulkovo 1942 / CS63 zone X4", "code": 7828}, + {"name": "Pulkovo 1942 / CS63 zone X5", "code": 7829}, + {"name": "Pulkovo 1942 / CS63 zone X6", "code": 7830}, + {"name": "Pulkovo 1942 / CS63 zone X7", "code": 7831}, + {"name": "GDA2020 / GA LCC", "code": 7845}, + {"name": "GDA2020 / MGA zone 46", "code": 7846}, + {"name": "GDA2020 / MGA zone 47", "code": 7847}, + {"name": "GDA2020 / MGA zone 48", "code": 7848}, + {"name": "GDA2020 / MGA zone 49", "code": 7849}, + {"name": "GDA2020 / MGA zone 50", "code": 7850}, + {"name": "GDA2020 / MGA zone 51", "code": 7851}, + {"name": "GDA2020 / MGA zone 52", "code": 7852}, + {"name": "GDA2020 / MGA zone 53", "code": 7853}, + {"name": "GDA2020 / MGA zone 54", "code": 7854}, + {"name": "GDA2020 / MGA zone 55", "code": 7855}, + {"name": "GDA2020 / MGA zone 56", "code": 7856}, + {"name": "GDA2020 / MGA zone 57", "code": 7857}, + {"name": "GDA2020 / MGA zone 58", "code": 7858}, + {"name": "GDA2020 / MGA zone 59", "code": 7859}, + {"name": "Astro DOS 71 / SHLG71", "code": 7877}, + {"name": "Astro DOS 71 / UTM zone 30S", "code": 7878}, + {"name": "St. Helena Tritan / SHLG(Tritan)", "code": 7882}, + {"name": "St. Helena Tritan / UTM zone 30S", "code": 7883}, + {"name": "SHMG2015", "code": 7887}, + {"name": "GDA2020 / Vicgrid", "code": 7899}, + {"name": "NAD27 / MTM zone 10", "code": 7991}, + {"name": "Malongo 1987 / UTM zone 33S", "code": 7992}, + {"name": "GDA2020 / ALB2020", "code": 8013}, + {"name": "GDA2020 / BIO2020", "code": 8014}, + {"name": "GDA2020 / BRO2020", "code": 8015}, + {"name": "GDA2020 / BCG2020", "code": 8016}, + {"name": "GDA2020 / CARN2020", "code": 8017}, + {"name": "GDA2020 / CIG2020", "code": 8018}, + {"name": "GDA2020 / CKIG2020", "code": 8019}, + {"name": "GDA2020 / COL2020", "code": 8020}, + {"name": "GDA2020 / ESP2020", "code": 8021}, + {"name": "GDA2020 / EXM2020", "code": 8022}, + {"name": "GDA2020 / GCG2020", "code": 8023}, + {"name": "GDA2020 / GOLD2020", "code": 8024}, + {"name": "GDA2020 / JCG2020", "code": 8025}, + {"name": "GDA2020 / KALB2020", "code": 8026}, + {"name": "GDA2020 / KAR2020", "code": 8027}, + {"name": "GDA2020 / KUN2020", "code": 8028}, + {"name": "GDA2020 / LCG2020", "code": 8029}, + {"name": "GDA2020 / MRCG2020", "code": 8030}, + {"name": "GDA2020 / PCG2020", "code": 8031}, + {"name": "GDA2020 / PHG2020", "code": 8032}, + {"name": "WGS 84 / TM Zone 20N (ftUS)", "code": 8035}, + {"name": "WGS 84 / TM Zone 21N (ftUS)", "code": 8036}, + {"name": "Gusterberg Grid (Ferro)", "code": 8044}, + {"name": "St. Stephen Grid (Ferro)", "code": 8045}, + {"name": "GDA2020 / NSW Lambert", "code": 8058}, + {"name": "GDA2020 / SA Lambert", "code": 8059}, + {"name": "NAD83(2011) / PCCS zone 1 (ft)", "code": 8065}, + {"name": "NAD83(2011) / PCCS zone 2 (ft)", "code": 8066}, + {"name": "NAD83(2011) / PCCS zone 3 (ft)", "code": 8067}, + {"name": "NAD83(2011) / PCCS zone 4 (ft)", "code": 8068}, + {"name": "NAD83(CSRS)v6 / MTM Nova Scotia zone 4", "code": 8082}, + {"name": "NAD83(CSRS)v6 / MTM Nova Scotia zone 5", "code": 8083}, + {"name": "ISN2016 / Lambert 2016", "code": 8088}, + {"name": "NAD83(HARN) / WISCRS Florence (m)", "code": 8090}, + {"name": "NAD83(HARN) / WISCRS Florence (ftUS)", "code": 8091}, + {"name": "NAD83(HARN) / WISCRS Eau Claire (m)", "code": 8092}, + {"name": "NAD83(HARN) / WISCRS Eau Claire (ftUS)", "code": 8093}, + {"name": "NAD83(HARN) / WISCRS Wood (m)", "code": 8095}, + {"name": "NAD83(HARN) / WISCRS Wood (ftUS)", "code": 8096}, + {"name": "NAD83(HARN) / WISCRS Waushara (m)", "code": 8097}, + {"name": "NAD83(HARN) / WISCRS Waushara (ftUS)", "code": 8098}, + {"name": "NAD83(HARN) / WISCRS Waupaca (m)", "code": 8099}, + {"name": "NAD83(HARN) / WISCRS Waupaca (ftUS)", "code": 8100}, + {"name": "NAD83(HARN) / WISCRS Waukesha (m)", "code": 8101}, + {"name": "NAD83(HARN) / WISCRS Waukesha (ftUS)", "code": 8102}, + {"name": "NAD83(HARN) / WISCRS Washington (m)", "code": 8103}, + {"name": "NAD83(HARN) / WISCRS Washington (ftUS)", "code": 8104}, + {"name": "NAD83(HARN) / WISCRS Washburn (m)", "code": 8105}, + {"name": "NAD83(HARN) / WISCRS Washburn (ftUS)", "code": 8106}, + {"name": "NAD83(HARN) / WISCRS Walworth (m)", "code": 8107}, + {"name": "NAD83(HARN) / WISCRS Walworth (ftUS)", "code": 8108}, + {"name": "NAD83(HARN) / WISCRS Vilas (m)", "code": 8109}, + {"name": "NAD83(HARN) / WISCRS Vilas (ftUS)", "code": 8110}, + {"name": "NAD83(HARN) / WISCRS Vernon (m)", "code": 8111}, + {"name": "NAD83(HARN) / WISCRS Vernon (ftUS)", "code": 8112}, + {"name": "NAD83(HARN) / WISCRS Trempealeau (m)", "code": 8113}, + {"name": "NAD83(HARN) / WISCRS Trempealeau (ftUS)", "code": 8114}, + {"name": "NAD83(HARN) / WISCRS Taylor (m)", "code": 8115}, + {"name": "NAD83(HARN) / WISCRS Taylor (ftUS)", "code": 8116}, + {"name": "NAD83(HARN) / WISCRS St. Croix (m)", "code": 8117}, + {"name": "NAD83(HARN) / WISCRS St. Croix (ftUS)", "code": 8118}, + {"name": "NAD83(HARN) / WISCRS Shawano (m)", "code": 8119}, + {"name": "NAD83(HARN) / WISCRS Shawano (ftUS)", "code": 8120}, + {"name": "NAD83(HARN) / WISCRS Sawyer (m)", "code": 8121}, + {"name": "NAD83(HARN) / WISCRS Sawyer (ftUS)", "code": 8122}, + {"name": "NAD83(HARN) / WISCRS Sauk (m)", "code": 8123}, + {"name": "NAD83(HARN) / WISCRS Sauk (ftUS)", "code": 8124}, + {"name": "NAD83(HARN) / WISCRS Rusk (m)", "code": 8125}, + {"name": "NAD83(HARN) / WISCRS Rusk (ftUS)", "code": 8126}, + {"name": "NAD83(HARN) / WISCRS Rock (m)", "code": 8127}, + {"name": "NAD83(HARN) / WISCRS Rock (ftUS)", "code": 8128}, + {"name": "NAD83(HARN) / WISCRS Richland (m)", "code": 8129}, + {"name": "NAD83(HARN) / WISCRS Richland (ftUS)", "code": 8130}, + {"name": "NAD83(HARN) / WISCRS Price (m)", "code": 8131}, + {"name": "NAD83(HARN) / WISCRS Price (ftUS)", "code": 8132}, + {"name": "NAD83(HARN) / WISCRS Portage (m)", "code": 8133}, + {"name": "NAD83(HARN) / WISCRS Portage (ftUS)", "code": 8134}, + {"name": "NAD83(HARN) / WISCRS Polk (m)", "code": 8135}, + {"name": "NAD83(HARN) / WISCRS Polk (ftUS)", "code": 8136}, + {"name": "NAD83(HARN) / WISCRS Pepin and Pierce (m)", "code": 8137}, + {"name": "NAD83(HARN) / WISCRS Pepin and Pierce (ftUS)", "code": 8138}, + {"name": "NAD83(HARN) / WISCRS Oneida (m)", "code": 8139}, + {"name": "NAD83(HARN) / WISCRS Oneida (ftUS)", "code": 8140}, + {"name": "NAD83(HARN) / WISCRS Oconto (m)", "code": 8141}, + {"name": "NAD83(HARN) / WISCRS Oconto (ftUS)", "code": 8142}, + {"name": "NAD83(HARN) / WISCRS Monroe (m)", "code": 8143}, + {"name": "NAD83(HARN) / WISCRS Monroe (ftUS)", "code": 8144}, + {"name": "NAD83(HARN) / WISCRS Menominee (m)", "code": 8145}, + {"name": "NAD83(HARN) / WISCRS Menominee (ftUS)", "code": 8146}, + {"name": "NAD83(HARN) / WISCRS Marinette (m)", "code": 8147}, + {"name": "NAD83(HARN) / WISCRS Marinette (ftUS)", "code": 8148}, + {"name": "NAD83(HARN) / WISCRS Marathon (m)", "code": 8149}, + {"name": "NAD83(HARN) / WISCRS Marathon (ftUS)", "code": 8150}, + {"name": "NAD83(HARN) / WISCRS Lincoln (m)", "code": 8151}, + {"name": "NAD83(HARN) / WISCRS Lincoln (ftUS)", "code": 8152}, + {"name": "NAD83(HARN) / WISCRS Langlade (m)", "code": 8153}, + {"name": "NAD83(HARN) / WISCRS Langlade (ftUS)", "code": 8154}, + {"name": "NAD83(HARN) / WISCRS La Crosse (m)", "code": 8155}, + {"name": "NAD83(HARN) / WISCRS La Crosse (ftUS)", "code": 8156}, + {"name": "NAD83(HARN) / WISCRS Kewaunee, Manitowoc and Sheboygan (m)", "code": 8157}, + {"name": "NAD83(HARN) / WISCRS Kewaunee, Manitowoc and Sheboygan (ftUS)", "code": 8158}, + {"name": "NAD83(HARN) / WISCRS Kenosha, Milwaukee, Ozaukee and Racine (m)", "code": 8159}, + {"name": "NAD83(HARN) / WISCRS Kenosha, Milwaukee, Ozaukee and Racine (ftUS)", "code": 8160}, + {"name": "NAD83(HARN) / WISCRS Jackson (m)", "code": 8161}, + {"name": "NAD83(HARN) / WISCRS Jackson (ftUS)", "code": 8162}, + {"name": "NAD83(HARN) / WISCRS Iron (m)", "code": 8163}, + {"name": "NAD83(HARN) / WISCRS Iron (ftUS)", "code": 8164}, + {"name": "NAD83(HARN) / WISCRS Iowa (m)", "code": 8165}, + {"name": "NAD83(HARN) / WISCRS Iowa (ftUS)", "code": 8166}, + {"name": "NAD83(HARN) / WISCRS Green Lake and Marquette (m)", "code": 8167}, + {"name": "NAD83(HARN) / WISCRS Green Lake and Marquette (ftUS)", "code": 8168}, + {"name": "NAD83(HARN) / WISCRS Green and Lafayette (m)", "code": 8169}, + {"name": "NAD83(HARN) / WISCRS Green and Lafayette (ftUS)", "code": 8170}, + {"name": "NAD83(HARN) / WISCRS Grant (m)", "code": 8171}, + {"name": "NAD83(HARN) / WISCRS Grant (ftUS)", "code": 8172}, + {"name": "NAD83(HARN) / WISCRS Forest (m)", "code": 8173}, + {"name": "NAD83(HARN) / WISCRS Forest (ftUS)", "code": 8177}, + {"name": "NAD83(HARN) / WISCRS Dunn (m)", "code": 8179}, + {"name": "NAD83(HARN) / WISCRS Dunn (ftUS)", "code": 8180}, + {"name": "NAD83(HARN) / WISCRS Douglas (m)", "code": 8181}, + {"name": "NAD83(HARN) / WISCRS Douglas (ftUS)", "code": 8182}, + {"name": "NAD83(HARN) / WISCRS Door (m)", "code": 8184}, + {"name": "NAD83(HARN) / WISCRS Door (ftUS)", "code": 8185}, + {"name": "NAD83(HARN) / WISCRS Dodge and Jefferson (m)", "code": 8187}, + {"name": "NAD83(HARN) / WISCRS Dodge and Jefferson (ftUS)", "code": 8189}, + {"name": "NAD83(HARN) / WISCRS Dane (m)", "code": 8191}, + {"name": "NAD83(HARN) / WISCRS Dane (ftUS)", "code": 8193}, + {"name": "NAD83(HARN) / WISCRS Crawford (m)", "code": 8196}, + {"name": "NAD83(HARN) / WISCRS Crawford (ftUS)", "code": 8197}, + {"name": "NAD83(HARN) / WISCRS Columbia (m)", "code": 8198}, + {"name": "NAD83(HARN) / WISCRS Columbia (ftUS)", "code": 8200}, + {"name": "NAD83(HARN) / WISCRS Clark (m)", "code": 8201}, + {"name": "NAD83(HARN) / WISCRS Clark (ftUS)", "code": 8202}, + {"name": "NAD83(HARN) / WISCRS Chippewa (m)", "code": 8203}, + {"name": "NAD83(HARN) / WISCRS Chippewa (ftUS)", "code": 8204}, + {"name": "NAD83(HARN) / WISCRS Calumet, Fond du Lac, Outagamie and Winnebago (m)", "code": 8205}, + {"name": "NAD83(HARN) / WISCRS Calumet, Fond du Lac, Outagamie and Winnebago (ftUS)", "code": 8206}, + {"name": "NAD83(HARN) / WISCRS Burnett (m)", "code": 8207}, + {"name": "NAD83(HARN) / WISCRS Burnett (ftUS)", "code": 8208}, + {"name": "NAD83(HARN) / WISCRS Buffalo (m)", "code": 8209}, + {"name": "NAD83(HARN) / WISCRS Buffalo (ftUS)", "code": 8210}, + {"name": "NAD83(HARN) / WISCRS Brown (m)", "code": 8212}, + {"name": "NAD83(HARN) / WISCRS Brown (ftUS)", "code": 8213}, + {"name": "NAD83(HARN) / WISCRS Bayfield (m)", "code": 8214}, + {"name": "NAD83(HARN) / WISCRS Bayfield (ftUS)", "code": 8216}, + {"name": "NAD83(HARN) / WISCRS Barron (m)", "code": 8218}, + {"name": "NAD83(HARN) / WISCRS Barron (ftUS)", "code": 8220}, + {"name": "NAD83(HARN) / WISCRS Ashland (m)", "code": 8222}, + {"name": "NAD83(HARN) / WISCRS Ashland (ftUS)", "code": 8224}, + {"name": "NAD83(HARN) / WISCRS Adams and Juneau (m)", "code": 8225}, + {"name": "NAD83(HARN) / WISCRS Adams and Juneau (ftUS)", "code": 8226}, + {"name": "NAD83(2011) / Oregon Burns-Harper zone (m)", "code": 8311}, + {"name": "NAD83(2011) / Oregon Burns-Harper zone (ft)", "code": 8312}, + {"name": "NAD83(2011) / Oregon Canyon City-Burns zone (m)", "code": 8313}, + {"name": "NAD83(2011) / Oregon Canyon City-Burns zone (ft)", "code": 8314}, + {"name": "NAD83(2011) / Oregon Coast Range North zone (m)", "code": 8315}, + {"name": "NAD83(2011) / Oregon Coast Range North zone (ft)", "code": 8316}, + {"name": "NAD83(2011) / Oregon Dayville-Prairie City zone (m)", "code": 8317}, + {"name": "NAD83(2011) / Oregon Dayville-Prairie City zone (ft)", "code": 8318}, + {"name": "NAD83(2011) / Oregon Denio-Burns zone (m)", "code": 8319}, + {"name": "NAD83(2011) / Oregon Denio-Burns zone (ft)", "code": 8320}, + {"name": "NAD83(2011) / Oregon Halfway zone (m)", "code": 8321}, + {"name": "NAD83(2011) / Oregon Halfway zone (ft)", "code": 8322}, + {"name": "NAD83(2011) / Oregon Medford-Diamond Lake zone (m)", "code": 8323}, + {"name": "NAD83(2011) / Oregon Medford-Diamond Lake zone (ft)", "code": 8324}, + {"name": "NAD83(2011) / Oregon Mitchell zone (m)", "code": 8325}, + {"name": "NAD83(2011) / Oregon Mitchell zone (ft)", "code": 8326}, + {"name": "NAD83(2011) / Oregon North Central zone (m)", "code": 8327}, + {"name": "NAD83(2011) / Oregon North Central zone (ft)", "code": 8328}, + {"name": "NAD83(2011) / Oregon Ochoco Summit zone (m)", "code": 8329}, + {"name": "NAD83(2011) / Oregon Ochoco Summit zone (ft)", "code": 8330}, + {"name": "NAD83(2011) / Oregon Owyhee zone (m)", "code": 8331}, + {"name": "NAD83(2011) / Oregon Owyhee zone (ft)", "code": 8332}, + {"name": "NAD83(2011) / Oregon Pilot Rock-Ukiah zone (m)", "code": 8333}, + {"name": "NAD83(2011) / Oregon Pilot Rock-Ukiah zone (ft)", "code": 8334}, + {"name": "NAD83(2011) / Oregon Prairie City-Brogan zone (m)", "code": 8335}, + {"name": "NAD83(2011) / Oregon Prairie City-Brogan zone (ft)", "code": 8336}, + {"name": "NAD83(2011) / Oregon Riley-Lakeview zone (m)", "code": 8337}, + {"name": "NAD83(2011) / Oregon Riley-Lakeview zone (ft)", "code": 8338}, + {"name": "NAD83(2011) / Oregon Siskiyou Pass zone (m)", "code": 8339}, + {"name": "NAD83(2011) / Oregon Siskiyou Pass zone (ft)", "code": 8340}, + {"name": "NAD83(2011) / Oregon Ukiah-Fox zone (m)", "code": 8341}, + {"name": "NAD83(2011) / Oregon Ukiah-Fox zone (ft)", "code": 8342}, + {"name": "NAD83(2011) / Oregon Wallowa zone (m)", "code": 8343}, + {"name": "NAD83(2011) / Oregon Wallowa zone (ft)", "code": 8344}, + {"name": "NAD83(2011) / Oregon Warner Highway zone (m)", "code": 8345}, + {"name": "NAD83(2011) / Oregon Warner Highway zone (ft)", "code": 8346}, + {"name": "NAD83(2011) / Oregon Willamette Pass zone (m)", "code": 8347}, + {"name": "NAD83(2011) / Oregon Willamette Pass zone (ft)", "code": 8348}, + {"name": "S-JTSK [JTSK03] / Krovak", "code": 8352}, + {"name": "S-JTSK [JTSK03] / Krovak East North", "code": 8353}, + {"name": "NAD83 / NCRS Las Vegas (m)", "code": 8379}, + {"name": "NAD83 / NCRS Las Vegas (ftUS)", "code": 8380}, + {"name": "NAD83 / NCRS Las Vegas high (m)", "code": 8381}, + {"name": "NAD83 / NCRS Las Vegas high (ftUS)", "code": 8382}, + {"name": "NAD83(2011) / NCRS Las Vegas (m)", "code": 8383}, + {"name": "NAD83(2011) / NCRS Las Vegas (ftUS)", "code": 8384}, + {"name": "NAD83(2011) / NCRS Las Vegas high (m)", "code": 8385}, + {"name": "NAD83(2011) / NCRS Las Vegas high (ftUS)", "code": 8387}, + {"name": "GDA94 / WEIPA94", "code": 8391}, + {"name": "ETRS89 / Gauss-Kruger CM 9E", "code": 8395}, + {"name": "Macao 1920 / Macao Grid", "code": 8433}, + {"name": "Tananarive / Laborde Grid", "code": 8441}, + {"name": "RGTAAF07 / UTM zone 53S", "code": 8455}, + {"name": "RGTAAF07 / UTM zone 54S", "code": 8456}, + {"name": "NAD83(2011) / KS RCS zone 1", "code": 8518}, + {"name": "NAD83(2011) / KS RCS zone 2", "code": 8519}, + {"name": "NAD83(2011) / KS RCS zone 3", "code": 8520}, + {"name": "NAD83(2011) / KS RCS zone 4", "code": 8521}, + {"name": "NAD83(2011) / KS RCS zone 5", "code": 8522}, + {"name": "NAD83(2011) / KS RCS zone 6", "code": 8523}, + {"name": "NAD83(2011) / KS RCS zone 7", "code": 8524}, + {"name": "NAD83(2011) / KS RCS zone 8", "code": 8525}, + {"name": "NAD83(2011) / KS RCS zone 9", "code": 8526}, + {"name": "NAD83(2011) / KS RCS zone 10", "code": 8527}, + {"name": "NAD83(2011) / KS RCS zone 11", "code": 8528}, + {"name": "NAD83(2011) / KS RCS zone 12", "code": 8529}, + {"name": "NAD83(2011) / KS RCS zone 13", "code": 8531}, + {"name": "NAD83(2011) / KS RCS zone 14", "code": 8533}, + {"name": "NAD83(2011) / KS RCS zone 15", "code": 8534}, + {"name": "NAD83(2011) / KS RCS zone 16", "code": 8535}, + {"name": "NAD83(2011) / KS RCS zone 17", "code": 8536}, + {"name": "NAD83(2011) / KS RCS zone 18", "code": 8538}, + {"name": "NAD83(2011) / KS RCS zone 19", "code": 8539}, + {"name": "NAD83(2011) / KS RCS zone 20", "code": 8540}, + {"name": "MGI 1901 / Balkans zone 5", "code": 8677}, + {"name": "MGI 1901 / Balkans zone 6", "code": 8678}, + {"name": "MGI 1901 / Balkans zone 8", "code": 8679}, + {"name": "SRB_ETRS89 / UTM zone 34N", "code": 8682}, + {"name": "MGI 1901 / Slovenia Grid", "code": 8686}, + {"name": "Slovenia 1996 / UTM zone 33N", "code": 8687}, + {"name": "NAD83(MA11) / UTM zone 54N", "code": 8692}, + {"name": "NAD83(MA11) / UTM zone 55N", "code": 8693}, + {"name": "NAD83 / Idaho Transverse Mercator", "code": 8826}, + {"name": "MTRF-2000 / UTM zone 36N", "code": 8836}, + {"name": "MTRF-2000 / UTM zone 37N", "code": 8837}, + {"name": "MTRF-2000 / UTM zone 38N", "code": 8838}, + {"name": "MTRF-2000 / UTM zone 39N", "code": 8839}, + {"name": "MTRF-2000 / UTM zone 40N", "code": 8840}, + {"name": "WGS 84 / Equal Earth Greenwich", "code": 8857}, + {"name": "WGS 84 / Equal Earth Americas", "code": 8858}, + {"name": "WGS 84 / Equal Earth Asia-Pacific", "code": 8859}, + {"name": "RGWF96 / UTM zone 1S", "code": 8903}, + {"name": "CR-SIRGAS / CRTM05", "code": 8908}, + {"name": "CR-SIRGAS / UTM zone 16N", "code": 8909}, + {"name": "CR-SIRGAS / UTM zone 17N", "code": 8910}, + {"name": "SIRGAS-Chile 2010 / UTM zone 18S", "code": 8950}, + {"name": "SIRGAS-Chile 2010 / UTM zone 19S", "code": 8951}, + {"name": "Google Maps Global Mercator", "code": 900913}, + {"name": "ISN2016 / LAEA Europe", "code": 9039}, + {"name": "ISN2016 / LCC Europe", "code": 9040}, + {"name": "KOSOVAREF01 / Balkans zone 7", "code": 9141}, + {"name": "SIRGAS-Chile 2013 / UTM zone 18S", "code": 9149}, + {"name": "SIRGAS-Chile 2013 / UTM zone 19S", "code": 9150}, + {"name": "SIRGAS-Chile 2016 / UTM zone 18S", "code": 9154}, + {"name": "SIRGAS-Chile 2016 / UTM zone 19S", "code": 9155}, + {"name": "RSAO13 / UTM zone 32S", "code": 9156}, + {"name": "RSAO13 / UTM zone 33S", "code": 9157}, + {"name": "RSAO13 / UTM zone 34S", "code": 9158}, + {"name": "RSAO13 / TM 12 SE", "code": 9159}, + {"name": "WGS 84 / NIWA Albers", "code": 9191}, + {"name": "VN-2000 / TM-3 103-00", "code": 9205}, + {"name": "VN-2000 / TM-3 104-00", "code": 9206}, + {"name": "VN-2000 / TM-3 104-30", "code": 9207}, + {"name": "VN-2000 / TM-3 104-45", "code": 9208}, + {"name": "VN-2000 / TM-3 105-30", "code": 9209}, + {"name": "VN-2000 / TM-3 105-45", "code": 9210}, + {"name": "VN-2000 / TM-3 106-00", "code": 9211}, + {"name": "VN-2000 / TM-3 106-15", "code": 9212}, + {"name": "VN-2000 / TM-3 106-30", "code": 9213}, + {"name": "VN-2000 / TM-3 107-00", "code": 9214}, + {"name": "VN-2000 / TM-3 107-15", "code": 9215}, + {"name": "VN-2000 / TM-3 107-30", "code": 9216}, + {"name": "VN-2000 / TM-3 108-15", "code": 9217}, + {"name": "VN-2000 / TM-3 108-30", "code": 9218}, + {"name": "Hartebeesthoek94 / ZAF BSU Albers 25E", "code": 9221}, + {"name": "Hartebeesthoek94 / ZAF BSU Albers 44E", "code": 9222}, + {"name": "Tapi Aike / Argentina 1", "code": 9249}, + {"name": "Tapi Aike / Argentina 2", "code": 9250}, + {"name": "MMN / Argentina 2", "code": 9252}, + {"name": "MMS / Argentina 2", "code": 9254}, + {"name": "POSGAR 2007 / UTM zone 19S", "code": 9265}, + {"name": "MGI / Austria West", "code": 9271}, + {"name": "MGI / Austria Central", "code": 9272}, + {"name": "MGI / Austria East", "code": 9273}, + {"name": "Pampa del Castillo / Argentina 1", "code": 9284}, + {"name": "Pampa del Castillo / Argentina 3", "code": 9285}, + {"name": "EGM2008 height", "code": 3855}, + {"name": "Fao 1979 height", "code": 3886}, + {"name": "N2000 height", "code": 3900}, + {"name": "NZVD2009 height", "code": 4440}, + {"name": "Dunedin-Bluff 1960 height", "code": 4458}, + {"name": "Incheon height", "code": 5193}, + {"name": "Trieste height", "code": 5195}, + {"name": "Genoa height", "code": 5214}, + {"name": "SLVD height", "code": 5237}, + {"name": "FVR09 height", "code": 5317}, + {"name": "Black Sea depth", "code": 5336}, + {"name": "FCSVR10 height", "code": 5597}, + {"name": "NGPF height", "code": 5600}, + {"name": "IGN 1966 height", "code": 5601}, + {"name": "Moorea SAU 1981 height", "code": 5602}, + {"name": "Raiatea SAU 2001 height", "code": 5603}, + {"name": "Maupiti SAU 2001 height", "code": 5604}, + {"name": "Huahine SAU 2001 height", "code": 5605}, + {"name": "Tahaa SAU 2001 height", "code": 5606}, + {"name": "Bora Bora SAU 2001 height", "code": 5607}, + {"name": "IGLD 1955 height", "code": 5608}, + {"name": "IGLD 1985 height", "code": 5609}, + {"name": "HVRS71 height", "code": 5610}, + {"name": "Caspian height", "code": 5611}, + {"name": "Baltic 1977 depth", "code": 5612}, + {"name": "RH2000 height", "code": 5613}, + {"name": "KOC WD depth (ft)", "code": 5614}, + {"name": "RH00 height", "code": 5615}, + {"name": "IGN 1988 LS height", "code": 5616}, + {"name": "IGN 1988 MG height", "code": 5617}, + {"name": "IGN 1992 LD height", "code": 5618}, + {"name": "IGN 1988 SB height", "code": 5619}, + {"name": "IGN 1988 SM height", "code": 5620}, + {"name": "EVRF2007 height", "code": 5621}, + {"name": "ODN height", "code": 5701}, + {"name": "NGVD29 height (ftUS)", "code": 5702}, + {"name": "NAVD88 height", "code": 5703}, + {"name": "Yellow Sea", "code": 5704}, + {"name": "Baltic 1977 height", "code": 5705}, + {"name": "Caspian depth", "code": 5706}, + {"name": "NAP height", "code": 5709}, + {"name": "Ostend height", "code": 5710}, + {"name": "AHD height", "code": 5711}, + {"name": "AHD (Tasmania) height", "code": 5712}, + {"name": "CGVD28 height", "code": 5713}, + {"name": "MSL height", "code": 5714}, + {"name": "MSL depth", "code": 5715}, + {"name": "Piraeus height", "code": 5716}, + {"name": "N60 height", "code": 5717}, + {"name": "RH70 height", "code": 5718}, + {"name": "NGF Lallemand height", "code": 5719}, + {"name": "NGF-IGN69 height", "code": 5720}, + {"name": "NGF-IGN78 height", "code": 5721}, + {"name": "Maputo height", "code": 5722}, + {"name": "JSLD69 height", "code": 5723}, + {"name": "PHD93 height", "code": 5724}, + {"name": "Fahud HD height", "code": 5725}, + {"name": "Ha Tien 1960 height", "code": 5726}, + {"name": "Hon Dau 1992 height", "code": 5727}, + {"name": "LN02 height", "code": 5728}, + {"name": "LHN95 height", "code": 5729}, + {"name": "EVRF2000 height", "code": 5730}, + {"name": "Malin Head height", "code": 5731}, + {"name": "Belfast height", "code": 5732}, + {"name": "DNN height", "code": 5733}, + {"name": "AIOC95 depth", "code": 5734}, + {"name": "Black Sea height", "code": 5735}, + {"name": "Yellow Sea 1956 height", "code": 5736}, + {"name": "Yellow Sea 1985 height", "code": 5737}, + {"name": "HKPD height", "code": 5738}, + {"name": "HKCD depth", "code": 5739}, + {"name": "ODN Orkney height", "code": 5740}, + {"name": "Fair Isle height", "code": 5741}, + {"name": "Lerwick height", "code": 5742}, + {"name": "Foula height", "code": 5743}, + {"name": "Sule Skerry height", "code": 5744}, + {"name": "North Rona height", "code": 5745}, + {"name": "Stornoway height", "code": 5746}, + {"name": "St Kilda height", "code": 5747}, + {"name": "Flannan Isles height", "code": 5748}, + {"name": "St Marys height", "code": 5749}, + {"name": "Douglas height", "code": 5750}, + {"name": "Fao height", "code": 5751}, + {"name": "Bandar Abbas height", "code": 5752}, + {"name": "NGNC height", "code": 5753}, + {"name": "Poolbeg height (ft(Br36))", "code": 5754}, + {"name": "NGG1977 height", "code": 5755}, + {"name": "Martinique 1987 height", "code": 5756}, + {"name": "Guadeloupe 1988 height", "code": 5757}, + {"name": "Reunion 1989 height", "code": 5758}, + {"name": "Auckland 1946 height", "code": 5759}, + {"name": "Bluff 1955 height", "code": 5760}, + {"name": "Dunedin 1958 height", "code": 5761}, + {"name": "Gisborne 1926 height", "code": 5762}, + {"name": "Lyttelton 1937 height", "code": 5763}, + {"name": "Moturiki 1953 height", "code": 5764}, + {"name": "Napier 1962 height", "code": 5765}, + {"name": "Nelson 1955 height", "code": 5766}, + {"name": "One Tree Point 1964 height", "code": 5767}, + {"name": "Tararu 1952 height", "code": 5768}, + {"name": "Taranaki 1970 height", "code": 5769}, + {"name": "Wellington 1953 height", "code": 5770}, + {"name": "Chatham Island 1959 height", "code": 5771}, + {"name": "Stewart Island 1977 height", "code": 5772}, + {"name": "EGM96 height", "code": 5773}, + {"name": "NG-L height", "code": 5774}, + {"name": "Antalya height", "code": 5775}, + {"name": "NN54 height", "code": 5776}, + {"name": "Durres height", "code": 5777}, + {"name": "GHA height", "code": 5778}, + {"name": "SVS2000 height", "code": 5779}, + {"name": "Cascais height", "code": 5780}, + {"name": "Constanta height", "code": 5781}, + {"name": "Alicante height", "code": 5782}, + {"name": "DHHN92 height", "code": 5783}, + {"name": "DHHN85 height", "code": 5784}, + {"name": "SNN76 height", "code": 5785}, + {"name": "Baltic 1982 height", "code": 5786}, + {"name": "EOMA 1980 height", "code": 5787}, + {"name": "Kuwait PWD height", "code": 5788}, + {"name": "KOC WD depth", "code": 5789}, + {"name": "KOC CD height", "code": 5790}, + {"name": "NGC 1948 height", "code": 5791}, + {"name": "Danger 1950 height", "code": 5792}, + {"name": "Mayotte 1950 height", "code": 5793}, + {"name": "Martinique 1955 height", "code": 5794}, + {"name": "Guadeloupe 1951 height", "code": 5795}, + {"name": "Lagos 1955 height", "code": 5796}, + {"name": "AIOC95 height", "code": 5797}, + {"name": "EGM84 height", "code": 5798}, + {"name": "DVR90 height", "code": 5799}, + {"name": "Instantaneous Water Level height", "code": 5829}, + {"name": "Instantaneous Water Level depth", "code": 5831}, + {"name": "Ras Ghumays height", "code": 5843}, + {"name": "LAT depth", "code": 5861}, + {"name": "LLWLT depth", "code": 5862}, + {"name": "ISLW depth", "code": 5863}, + {"name": "MLLWS depth", "code": 5864}, + {"name": "MLWS depth", "code": 5865}, + {"name": "MLLW depth", "code": 5866}, + {"name": "MLW depth", "code": 5867}, + {"name": "MHW height", "code": 5868}, + {"name": "MHHW height", "code": 5869}, + {"name": "MHWS height", "code": 5870}, + {"name": "HHWLT height", "code": 5871}, + {"name": "HAT height", "code": 5872}, + {"name": "Low Water depth", "code": 5873}, + {"name": "High Water height", "code": 5874}, + {"name": "NN2000 height", "code": 5941}, + {"name": "GCVD54 height (ft)", "code": 6130}, + {"name": "LCVD61 height (ft)", "code": 6131}, + {"name": "CBVD61 height (ft)", "code": 6132}, + {"name": "Cais da Pontinha - Funchal height", "code": 6178}, + {"name": "Cais da Vila - Porto Santo height", "code": 6179}, + {"name": "Cais das Velas height", "code": 6180}, + {"name": "Horta height", "code": 6181}, + {"name": "Cais da Madalena height", "code": 6182}, + {"name": "Santa Cruz da Graciosa height", "code": 6183}, + {"name": "Cais da Figueirinha - Angra do Heroismo height", "code": 6184}, + {"name": "Santa Cruz das Flores height", "code": 6185}, + {"name": "Cais da Vila do Porto height", "code": 6186}, + {"name": "Ponta Delgada height", "code": 6187}, + {"name": "NAVD88 depth", "code": 6357}, + {"name": "NAVD88 depth (ftUS)", "code": 6358}, + {"name": "NGVD29 depth (ftUS)", "code": 6359}, + {"name": "NAVD88 height (ftUS)", "code": 6360}, + {"name": "Tutuila 1962 height", "code": 6638}, + {"name": "Guam 1963 height", "code": 6639}, + {"name": "NMVD03 height", "code": 6640}, + {"name": "PRVD02 height", "code": 6641}, + {"name": "VIVD09 height", "code": 6642}, + {"name": "ASVD02 height", "code": 6643}, + {"name": "GUVD04 height", "code": 6644}, + {"name": "CGVD2013(CGG2013) height", "code": 6647}, + {"name": "JSLD72 height", "code": 6693}, + {"name": "JGD2000 (vertical) height", "code": 6694}, + {"name": "JGD2011 (vertical) height", "code": 6695}, + {"name": "SHD height", "code": 6916}, + {"name": "Famagusta 1960 height", "code": 7446}, + {"name": "PNG08 height", "code": 7447}, + {"name": "Kumul 34 height", "code": 7651}, + {"name": "Kiunga height", "code": 7652}, + {"name": "DHHN12 height", "code": 7699}, + {"name": "Latvia 2000 height", "code": 7700}, + {"name": "ODN (Offshore) height", "code": 7707}, + {"name": "POM96 height", "code": 7832}, + {"name": "DHHN2016 height", "code": 7837}, + {"name": "NZVD2016 height", "code": 7839}, + {"name": "POM08 height", "code": 7841}, + {"name": "Jamestown 1971 height", "code": 7888}, + {"name": "St. Helena Tritan 2011 height", "code": 7889}, + {"name": "SHVD2015 height", "code": 7890}, + {"name": "Poolbeg height (m)", "code": 7962}, + {"name": "NGVD29 height (m)", "code": 7968}, + {"name": "HKPD depth", "code": 7976}, + {"name": "KOC WD height", "code": 7979}, + {"name": "MSL height (ft)", "code": 8050}, + {"name": "MSL depth (ft)", "code": 8051}, + {"name": "MSL height (ftUS)", "code": 8052}, + {"name": "MSL depth (ftUS)", "code": 8053}, + {"name": "ISH2004 height", "code": 8089}, + {"name": "NAVD88 height (ft)", "code": 8228}, + {"name": "GVR2000 height", "code": 8266}, + {"name": "GVR2016 height", "code": 8267}, + {"name": "Baltic 1957 height", "code": 8357}, + {"name": "Baltic 1957 depth", "code": 8358}, + {"name": "EPSG example wellbore local vertical CRS", "code": 8378}, + {"name": "Macao height", "code": 8434}, + {"name": "N43 height", "code": 8675}, + {"name": "SVS2010 height", "code": 8690}, + {"name": "SRB_VRS12 height", "code": 8691}, + {"name": "MVGC height", "code": 8841}, + {"name": "EPSG example wellbore local vertical CRS (ft)", "code": 8897}, + {"name": "TWVD 2001 height", "code": 8904}, + {"name": "DACR52 height", "code": 8911}, + {"name": "IGN 2008 LD height", "code": 9130}, + {"name": "CGVD2013(CGG2013a) height", "code": 9245}, + {"name": "SRVN16 height", "code": 9255}, + {"name": "EVRF2000 Austria height", "code": 9274}, + {"name": "SA LLD height", "code": 9279}, + {"name": "KSA-VRF14 height", "code": 9335}, + {"name": "KKJ / Finland Uniform Coordinate System + N60 height", "code": 3901}, + {"name": "ETRS89 / TM35FIN(N,E) + N60 height", "code": 3902}, + {"name": "ETRS89 / TM35FIN(N,E) + N2000 height", "code": 3903}, + {"name": "ETRS89 / DKTM1 + DVR90 height", "code": 4097}, + {"name": "ETRS89 / DKTM2 + DVR90 height", "code": 4098}, + {"name": "ETRS89 / DKTM3 + DVR90 height", "code": 4099}, + {"name": "ETRS89 / DKTM4 + DVR90 height", "code": 4100}, + {"name": "ETRS89 / Faroe TM + FVR09 height", "code": 5318}, + {"name": "NAD83 + NAVD88 height", "code": 5498}, + {"name": "NAD83(HARN) + NAVD88 height", "code": 5499}, + {"name": "NAD83(NSRS2007) + NAVD88 height", "code": 5500}, + {"name": "ETRS89 / UTM zone 31N + DHHN92 height", "code": 5554}, + {"name": "ETRS89 / UTM zone 32N + DHHN92 height", "code": 5555}, + {"name": "ETRS89 / UTM zone 33N + DHHN92 height", "code": 5556}, + {"name": "FEH2010 / Fehmarnbelt TM + FCSVR10 height", "code": 5598}, + {"name": "SWEREF99 + RH2000 height", "code": 5628}, + {"name": "RGF93 / Lambert-93 + NGF-IGN69 height", "code": 5698}, + {"name": "RGF93 / Lambert-93 + NGF-IGN78 height", "code": 5699}, + {"name": "NTF (Paris) / Lambert zone I + NGF-IGN69 height", "code": 5707}, + {"name": "NTF (Paris) / Lambert zone IV + NGF-IGN78 height", "code": 5708}, + {"name": "DB_REF / 3-degree Gauss-Kruger zone 2 (E-N) + DHHN92 height", "code": 5832}, + {"name": "DB_REF / 3-degree Gauss-Kruger zone 3 (E-N) + DHHN92 height", "code": 5833}, + {"name": "DB_REF / 3-degree Gauss-Kruger zone 4 (E-N) + DHHN92 height", "code": 5834}, + {"name": "DB_REF / 3-degree Gauss-Kruger zone 5 (E-N) + DHHN92 height", "code": 5835}, + {"name": "SWEREF99 TM + RH2000 height", "code": 5845}, + {"name": "SWEREF99 12 00 + RH2000 height", "code": 5846}, + {"name": "SWEREF99 13 30 + RH2000 height", "code": 5847}, + {"name": "SWEREF99 15 00 + RH2000 height", "code": 5848}, + {"name": "SWEREF99 16 30 + RH2000 height", "code": 5849}, + {"name": "SWEREF99 18 00 + RH2000 height", "code": 5850}, + {"name": "SWEREF99 14 15 + RH2000 height", "code": 5851}, + {"name": "SWEREF99 15 45 + RH2000 height", "code": 5852}, + {"name": "SWEREF99 17 15 + RH2000 height", "code": 5853}, + {"name": "SWEREF99 18 45 + RH2000 height", "code": 5854}, + {"name": "SWEREF99 20 15 + RH2000 height", "code": 5855}, + {"name": "SWEREF99 21 45 + RH2000 height", "code": 5856}, + {"name": "SWEREF99 23 15 + RH2000 height", "code": 5857}, + {"name": "ETRS89 + NN2000 height", "code": 5942}, + {"name": "ETRS89 / NTM zone 5 + NN2000 height", "code": 5945}, + {"name": "ETRS89 / NTM zone 6 + NN2000 height", "code": 5946}, + {"name": "ETRS89 / NTM zone 7 + NN2000 height", "code": 5947}, + {"name": "ETRS89 / NTM zone 8 + NN2000 height", "code": 5948}, + {"name": "ETRS89 / NTM zone 9 + NN2000 height", "code": 5949}, + {"name": "ETRS89 / NTM zone 10 + NN2000 height", "code": 5950}, + {"name": "ETRS89 / NTM zone 11 + NN2000 height", "code": 5951}, + {"name": "ETRS89 / NTM zone 12 + NN2000 height", "code": 5952}, + {"name": "ETRS89 / NTM zone 13 + NN2000 height", "code": 5953}, + {"name": "ETRS89 / NTM zone 14 + NN2000 height", "code": 5954}, + {"name": "ETRS89 / NTM zone 15 + NN2000 height", "code": 5955}, + {"name": "ETRS89 / NTM zone 16 + NN2000 height", "code": 5956}, + {"name": "ETRS89 / NTM zone 17 + NN2000 height", "code": 5957}, + {"name": "ETRS89 / NTM zone 18 + NN2000 height", "code": 5958}, + {"name": "ETRS89 / NTM zone 19 + NN2000 height", "code": 5959}, + {"name": "ETRS89 / NTM zone 20 + NN2000 height", "code": 5960}, + {"name": "ETRS89 / NTM zone 21 + NN2000 height", "code": 5961}, + {"name": "ETRS89 / NTM zone 22 + NN2000 height", "code": 5962}, + {"name": "ETRS89 / NTM zone 23 + NN2000 height", "code": 5963}, + {"name": "ETRS89 / NTM zone 24 + NN2000 height", "code": 5964}, + {"name": "ETRS89 / NTM zone 25 + NN2000 height", "code": 5965}, + {"name": "ETRS89 / NTM zone 26 + NN2000 height", "code": 5966}, + {"name": "ETRS89 / NTM zone 27 + NN2000 height", "code": 5967}, + {"name": "ETRS89 / NTM zone 28 + NN2000 height", "code": 5968}, + {"name": "ETRS89 / NTM zone 29 + NN2000 height", "code": 5969}, + {"name": "ETRS89 / NTM zone 30 + NN2000 height", "code": 5970}, + {"name": "ETRS89 / UTM zone 31 + NN2000 height", "code": 5971}, + {"name": "ETRS89 / UTM zone 32 + NN2000 height", "code": 5972}, + {"name": "ETRS89 / UTM zone 33 + NN2000 height", "code": 5973}, + {"name": "ETRS89 / UTM zone 34 + NN2000 height", "code": 5974}, + {"name": "ETRS89 / UTM zone 35 + NN2000 height", "code": 5975}, + {"name": "ETRS89 / UTM zone 36 + NN2000 height", "code": 5976}, + {"name": "ETRS89 + NN54 height", "code": 6144}, + {"name": "ETRS89 / NTM zone 5 + NN54 height", "code": 6145}, + {"name": "ETRS89 / NTM zone 6 + NN54 height", "code": 6146}, + {"name": "ETRS89 / NTM zone 7 + NN54 height", "code": 6147}, + {"name": "ETRS89 / NTM zone 8 + NN54 height", "code": 6148}, + {"name": "ETRS89 / NTM zone 9 + NN54 height", "code": 6149}, + {"name": "ETRS89 / NTM zone 10 + NN54 height", "code": 6150}, + {"name": "ETRS89 / NTM zone 11 + NN54 height", "code": 6151}, + {"name": "ETRS89 / NTM zone 12 + NN54 height", "code": 6152}, + {"name": "ETRS89 / NTM zone 13 + NN54 height", "code": 6153}, + {"name": "ETRS89 / NTM zone 14 + NN54 height", "code": 6154}, + {"name": "ETRS89 / NTM zone 15 + NN54 height", "code": 6155}, + {"name": "ETRS89 / NTM zone 16 + NN54 height", "code": 6156}, + {"name": "ETRS89 / NTM zone 17 + NN54 height", "code": 6157}, + {"name": "ETRS89 / NTM zone 18 + NN54 height", "code": 6158}, + {"name": "ETRS89 / NTM zone 19 + NN54 height", "code": 6159}, + {"name": "ETRS89 / NTM zone 20 + NN54 height", "code": 6160}, + {"name": "ETRS89 / NTM zone 21 + NN54 height", "code": 6161}, + {"name": "ETRS89 / NTM zone 22 + NN54 height", "code": 6162}, + {"name": "ETRS89 / NTM zone 23 + NN54 height", "code": 6163}, + {"name": "ETRS89 / NTM zone 24 + NN54 height", "code": 6164}, + {"name": "ETRS89 / NTM zone 25 + NN54 height", "code": 6165}, + {"name": "ETRS89 / NTM zone 26 + NN54 height", "code": 6166}, + {"name": "ETRS89 / NTM zone 27 + NN54 height", "code": 6167}, + {"name": "ETRS89 / NTM zone 28 + NN54 height", "code": 6168}, + {"name": "ETRS89 / NTM zone 29 + NN54 height", "code": 6169}, + {"name": "ETRS89 / NTM zone 30 + NN54 height", "code": 6170}, + {"name": "ETRS89 / UTM zone 31 + NN54 height", "code": 6171}, + {"name": "ETRS89 / UTM zone 32 + NN54 height", "code": 6172}, + {"name": "ETRS89 / UTM zone 33 + NN54 height", "code": 6173}, + {"name": "ETRS89 / UTM zone 34 + NN54 height", "code": 6174}, + {"name": "ETRS89 / UTM zone 35 + NN54 height", "code": 6175}, + {"name": "ETRS89 / UTM zone 36 + NN54 height", "code": 6176}, + {"name": "Belge 1972 / Belgian Lambert 72 + Ostend height", "code": 6190}, + {"name": "NAD83(2011) + NAVD88 height", "code": 6349}, + {"name": "NAD83(CSRS) + CGVD2013 height", "code": 6649}, + {"name": "NAD83(CSRS) / UTM zone 7N + CGVD2013 height", "code": 6650}, + {"name": "NAD83(CSRS) / UTM zone 8N + CGVD2013 height", "code": 6651}, + {"name": "NAD83(CSRS) / UTM zone 9N + CGVD2013 height", "code": 6652}, + {"name": "NAD83(CSRS) / UTM zone 10N + CGVD2013 height", "code": 6653}, + {"name": "NAD83(CSRS) / UTM zone 11N + CGVD2013 height", "code": 6654}, + {"name": "NAD83(CSRS) / UTM zone 12N + CGVD2013 height", "code": 6655}, + {"name": "NAD83(CSRS) / UTM zone 13N + CGVD2013 height", "code": 6656}, + {"name": "NAD83(CSRS) / UTM zone 14N + CGVD2013 height", "code": 6657}, + {"name": "NAD83(CSRS) / UTM zone 15N + CGVD2013 height", "code": 6658}, + {"name": "NAD83(CSRS) / UTM zone 16N + CGVD2013 height", "code": 6659}, + {"name": "NAD83(CSRS) / UTM zone 17N + CGVD2013 height", "code": 6660}, + {"name": "NAD83(CSRS) / UTM zone 18N + CGVD2013 height", "code": 6661}, + {"name": "NAD83(CSRS) / UTM zone 19N + CGVD2013 height", "code": 6662}, + {"name": "NAD83(CSRS) / UTM zone 20N + CGVD2013 height", "code": 6663}, + {"name": "NAD83(CSRS) / UTM zone 21N + CGVD2013 height", "code": 6664}, + {"name": "NAD83(CSRS) / UTM zone 22N + CGVD2013 height", "code": 6665}, + {"name": "JGD2000 + JGD2000 (vertical) height", "code": 6696}, + {"name": "JGD2011 + JGD2011 (vertical) height", "code": 6697}, + {"name": "Tokyo + JSLD72 height", "code": 6700}, + {"name": "WGS 84 / Pseudo-Mercator + EGM2008 geoid height", "code": 6871}, + {"name": "WGS 84 / World Mercator + EGM2008 height", "code": 6893}, + {"name": "SVY21 + SHD height", "code": 6917}, + {"name": "SVY21 / Singapore TM + SHD height", "code": 6927}, + {"name": "NTF (Paris) + NGF IGN69 height", "code": 7400}, + {"name": "NTF (Paris) / France II + NGF Lallemand", "code": 7401}, + {"name": "NTF (Paris) / France II + NGF IGN69", "code": 7402}, + {"name": "NTF (Paris) / France III + NGF IGN69", "code": 7403}, + {"name": "RT90 + RH70 height", "code": 7404}, + {"name": "OSGB 1936 / British National Grid + ODN height", "code": 7405}, + {"name": "NAD27 + NGVD29 height (ftUS)", "code": 7406}, + {"name": "NAD27 / Texas North + NGVD29 height (ftUS)", "code": 7407}, + {"name": "RD/NAP", "code": 7408}, + {"name": "ETRS89 + EVRF2000 height", "code": 7409}, + {"name": "PSHD93", "code": 7410}, + {"name": "NTF (Paris) / Lambert zone II + NGF Lallemand height", "code": 7411}, + {"name": "NTF (Paris) / Lambert zone II + NGF IGN69", "code": 7412}, + {"name": "NTF (Paris) / Lambert zone III + NGF IGN69", "code": 7413}, + {"name": "Tokyo + JSLD69 height", "code": 7414}, + {"name": "Amersfoort / RD New + NAP height", "code": 7415}, + {"name": "ETRS89 / UTM zone 32N + DVR90 height", "code": 7416}, + {"name": "ETRS89 / UTM zone 33N + DVR90 height", "code": 7417}, + {"name": "ETRS89 / Kp2000 Jutland + DVR90 height", "code": 7418}, + {"name": "ETRS89 / Kp2000 Zealand + DVR90 height", "code": 7419}, + {"name": "ETRS89 / Kp2000 Bornholm + DVR90 height", "code": 7420}, + {"name": "NTF (Paris) / Lambert zone II + NGF-IGN69 height", "code": 7421}, + {"name": "NTF (Paris) / Lambert zone III + NGF-IGN69 height", "code": 7422}, + {"name": "ETRS89 + EVRF2007 height", "code": 7423}, + {"name": "Astro DOS 71 / UTM zone 30S + Jamestown 1971 height", "code": 7954}, + {"name": "St. Helena Tritan / UTM zone 30S + Tritan 2011 height", "code": 7955}, + {"name": "SHMG2015 + SHVD2015 height", "code": 7956}, + {"name": "GR96 + GVR2000 height", "code": 8349}, + {"name": "GR96 + GVR2016 height", "code": 8350}, + {"name": "ETRS89 + Baltic 1957 height", "code": 8360}, + {"name": "ETRS89 / Belgian Lambert 2008 + Ostend height", "code": 8370}, + {"name": "NAD83 / Arizona East (ft) + NAVD88 height (ft)", "code": 8700}, + {"name": "NAD83 / Arizona Central (ft) + NAVD88 height (ft)", "code": 8701}, + {"name": "NAD83 / Arizona West (ft) + NAVD88 height (ft)", "code": 8702}, + {"name": "NAD83 / Michigan North (ft) + NAVD88 height (ft)", "code": 8703}, + {"name": "NAD83 / Michigan Central (ft) + NAVD88 height (ft)", "code": 8704}, + {"name": "NAD83 / Michigan South (ft) + NAVD88 height (ft)", "code": 8705}, + {"name": "NAD83 / Montana (ft) + NAVD88 height (ft)", "code": 8706}, + {"name": "NAD83 / North Dakota North (ft) + NAVD88 height (ft)", "code": 8707}, + {"name": "NAD83 / North Dakota South (ft) + NAVD88 height (ft)", "code": 8708}, + {"name": "NAD83 / Oregon North (ft) + NAVD88 height (ft)", "code": 8709}, + {"name": "NAD83 / Oregon South (ft) + NAVD88 height (ft)", "code": 8710}, + {"name": "NAD83 / South Carolina (ft) + NAVD88 height (ft)", "code": 8711}, + {"name": "NAD83 / Arkansas North (ftUS) + NAVD88 height (ftUS)", "code": 8712}, + {"name": "NAD83 / Arkansas South (ftUS) + NAVD88 height (ftUS)", "code": 8713}, + {"name": "NAD83 / California zone 1 (ftUS) + NAVD88 height (ftUS)", "code": 8714}, + {"name": "NAD83 / California zone 2 (ftUS) + NAVD88 height (ftUS)", "code": 8715}, + {"name": "NAD83 / California zone 3 (ftUS) + NAVD88 height (ftUS)", "code": 8716}, + {"name": "NAD83 / California zone 4 (ftUS) + NAVD88 height (ftUS)", "code": 8717}, + {"name": "NAD83 / California zone 5 (ftUS) + NAVD88 height (ftUS)", "code": 8718}, + {"name": "NAD83 / California zone 6 (ftUS) + NAVD88 height (ftUS)", "code": 8719}, + {"name": "NAD83 / Colorado North (ftUS) + NAVD88 height (ftUS)", "code": 8720}, + {"name": "NAD83 / Colorado Central (ftUS) + NAVD88 height (ftUS)", "code": 8721}, + {"name": "NAD83 / Colorado South (ftUS) + NAVD88 height (ftUS)", "code": 8722}, + {"name": "NAD83 / Connecticut (ftUS) + NAVD88 height (ftUS)", "code": 8723}, + {"name": "NAD83 / Delaware (ftUS) + NAVD88 height (ftUS)", "code": 8724}, + {"name": "NAD83 / Florida North (ftUS) + NAVD88 height (ftUS)", "code": 8725}, + {"name": "NAD83 / Florida East (ftUS) + NAVD88 height (ftUS)", "code": 8726}, + {"name": "NAD83 / Florida West (ftUS) + NAVD88 height (ftUS)", "code": 8727}, + {"name": "NAD83 / Georgia East (ftUS) + NAVD88 height (ftUS)", "code": 8728}, + {"name": "NAD83 / Georgia West (ftUS) + NAVD88 height (ftUS)", "code": 8729}, + {"name": "NAD83 / Idaho East (ftUS) + NAVD88 height (ftUS)", "code": 8730}, + {"name": "NAD83 / Idaho Central (ftUS) + NAVD88 height (ftUS)", "code": 8731}, + {"name": "NAD83 / Idaho West (ftUS) + NAVD88 height (ftUS)", "code": 8732}, + {"name": "NAD83 / Illinois East (ftUS) + NAVD88 height (ftUS)", "code": 8733}, + {"name": "NAD83 / Illinois West (ftUS) + NAVD88 height (ftUS)", "code": 8734}, + {"name": "NAD83 / Indiana East (ftUS) + NAVD88 height (ftUS)", "code": 8735}, + {"name": "NAD83 / Indiana West (ftUS) + NAVD88 height (ftUS)", "code": 8736}, + {"name": "NAD83 / Iowa North (ftUS) + NAVD88 height (ftUS)", "code": 8737}, + {"name": "NAD83 / Iowa South (ftUS) + NAVD88 height (ftUS)", "code": 8738}, + {"name": "NAD83 / Kansas North (ftUS) + NAVD88 height (ftUS)", "code": 8739}, + {"name": "NAD83 / Kansas South (ftUS) + NAVD88 height (ftUS)", "code": 8740}, + {"name": "NAD83 / Kentucky North (ftUS) + NAVD88 height (ftUS)", "code": 8741}, + {"name": "NAD83 / Kentucky South (ftUS) + NAVD88 height (ftUS)", "code": 8742}, + {"name": "NAD83 / Louisiana North (ftUS) + NAVD88 height (ftUS)", "code": 8743}, + {"name": "NAD83 / Louisiana South (ftUS) + NAVD88 height (ftUS)", "code": 8744}, + {"name": "NAD83 / Maine East (ftUS) + NAVD88 height (ftUS)", "code": 8745}, + {"name": "NAD83 / Maine West (ftUS) + NAVD88 height (ftUS)", "code": 8746}, + {"name": "NAD83 / Maryland (ftUS) + NAVD88 height (ftUS)", "code": 8747}, + {"name": "NAD83 / Massachusetts Mainland (ftUS) + NAVD88 height (ftUS)", "code": 8748}, + {"name": "NAD83 / Massachusetts Island (ftUS) + NAVD88 height (ftUS)", "code": 8749}, + {"name": "NAD83 / Minnesota North (ftUS) + NAVD88 height (ftUS)", "code": 8750}, + {"name": "NAD83 / Minnesota Central (ftUS) + NAVD88 height (ftUS)", "code": 8751}, + {"name": "NAD83 / Minnesota South (ftUS) + NAVD88 height (ftUS)", "code": 8752}, + {"name": "NAD83 / Mississippi East (ftUS) + NAVD88 height (ftUS)", "code": 8753}, + {"name": "NAD83 / Mississippi West (ftUS) + NAVD88 height (ftUS)", "code": 8754}, + {"name": "NAD83 / Nebraska (ftUS) + NAVD88 height (ftUS)", "code": 8755}, + {"name": "NAD83 / Nevada East (ftUS) + NAVD88 height (ftUS)", "code": 8756}, + {"name": "NAD83 / Nevada Central (ftUS) + NAVD88 height (ftUS)", "code": 8757}, + {"name": "NAD83 / Nevada West (ftUS) + NAVD88 height (ftUS)", "code": 8758}, + {"name": "NAD83 / New Hampshire (ftUS) + NAVD88 height (ftUS)", "code": 8759}, + {"name": "NAD83 / New Jersey (ftUS) + NAVD88 height (ftUS)", "code": 8760}, + {"name": "NAD83 / New Mexico East (ftUS) + NAVD88 height (ftUS)", "code": 8761}, + {"name": "NAD83 / New Mexico Central (ftUS) + NAVD88 height (ftUS)", "code": 8762}, + {"name": "NAD83 / New Mexico West (ftUS) + NAVD88 height (ftUS)", "code": 8763}, + {"name": "NAD83 / New York East (ftUS) + NAVD88 height (ftUS)", "code": 8764}, + {"name": "NAD83 / New York Central (ftUS) + NAVD88 height (ftUS)", "code": 8765}, + {"name": "NAD83 / New York West (ftUS) + NAVD88 height (ftUS)", "code": 8766}, + {"name": "NAD83 / New York Long Island (ftUS) + NAVD88 height (ftUS)", "code": 8767}, + {"name": "NAD83 / North Carolina (ftUS) + NAVD88 height (ftUS)", "code": 8768}, + {"name": "NAD83 / Ohio North (ftUS) + NAVD88 height (ftUS)", "code": 8769}, + {"name": "NAD83 / Ohio South (ftUS) + NAVD88 height (ftUS)", "code": 8770}, + {"name": "NAD83 / Oklahoma North (ftUS) + NAVD88 height (ftUS)", "code": 8771}, + {"name": "NAD83 / Oklahoma South (ftUS) + NAVD88 height (ftUS)", "code": 8772}, + {"name": "NAD83 / Pennsylvania North (ftUS) + NAVD88 height (ftUS)", "code": 8773}, + {"name": "NAD83 / Pennsylvania South (ftUS) + NAVD88 height (ftUS)", "code": 8774}, + {"name": "NAD83 / Rhode Island (ftUS) + NAVD88 height (ftUS)", "code": 8775}, + {"name": "NAD83 / South Dakota North (ftUS) + NAVD88 height (ftUS)", "code": 8776}, + {"name": "NAD83 / South Dakota South (ftUS) + NAVD88 height (ftUS)", "code": 8777}, + {"name": "NAD83 / Tennessee (ftUS) + NAVD88 height (ftUS)", "code": 8778}, + {"name": "NAD83 / Texas North (ftUS) + NAVD88 height (ftUS)", "code": 8779}, + {"name": "NAD83 / Texas North Central (ftUS) + NAVD88 height (ftUS)", "code": 8780}, + {"name": "NAD83 / Texas Central (ftUS) + NAVD88 height (ftUS)", "code": 8781}, + {"name": "NAD83 / Texas South Central (ftUS) + NAVD88 height (ftUS)", "code": 8782}, + {"name": "NAD83 / Texas South (ftUS) + NAVD88 height (ftUS)", "code": 8783}, + {"name": "NAD83 / Utah North (ftUS) + NAVD88 height (ftUS)", "code": 8784}, + {"name": "NAD83 / Utah Central (ftUS) + NAVD88 height (ftUS)", "code": 8785}, + {"name": "NAD83 / Utah South (ftUS) + NAVD88 height (ftUS)", "code": 8786}, + {"name": "NAD83 / Vermont (ftUS) + NAVD88 height (ftUS)", "code": 8787}, + {"name": "NAD83 / Virginia North (ftUS) + NAVD88 height (ftUS)", "code": 8788}, + {"name": "NAD83 / Virginia South (ftUS) + NAVD88 height (ftUS)", "code": 8789}, + {"name": "NAD83 / Washington North (ftUS) + NAVD88 height (ftUS)", "code": 8790}, + {"name": "NAD83 / Washington South (ftUS) + NAVD88 height (ftUS)", "code": 8791}, + {"name": "NAD83 / West Virginia North (ftUS) + NAVD88 height (ftUS)", "code": 8792}, + {"name": "NAD83 / West Virginia South (ftUS) + NAVD88 height (ftUS)", "code": 8793}, + {"name": "NAD83 / Wisconsin North (ftUS) + NAVD88 height (ftUS)", "code": 8794}, + {"name": "NAD83 / Wisconsin Central (ftUS) + NAVD88 height (ftUS)", "code": 8795}, + {"name": "NAD83 / Wisconsin South (ftUS) + NAVD88 height (ftUS)", "code": 8796}, + {"name": "NAD83 / Wyoming East (ftUS) + NAVD88 height (ftUS)", "code": 8797}, + {"name": "NAD83 / Wyoming East Central (ftUS) + NAVD88 height (ftUS)", "code": 8798}, + {"name": "NAD83 / Wyoming West Central (ftUS) + NAVD88 height (ftUS)", "code": 8799}, + {"name": "NAD83 / Wyoming West (ftUS) + NAVD88 height (ftUS)", "code": 8800}, + {"name": "NAD83 / Alabama East + NAVD88 height", "code": 8801}, + {"name": "NAD83 / Alabama West + NAVD88 height", "code": 8802}, + {"name": "NAD83 / Alaska zone 1 + NAVD88 height", "code": 8803}, + {"name": "NAD83 / Alaska zone 2 + NAVD88 height", "code": 8804}, + {"name": "NAD83 / Alaska zone 3 + NAVD88 height", "code": 8805}, + {"name": "NAD83 / Alaska zone 4 + NAVD88 height", "code": 8806}, + {"name": "NAD83 / Alaska zone 5 + NAVD88 height", "code": 8807}, + {"name": "NAD83 / Alaska zone 6 + NAVD88 height", "code": 8808}, + {"name": "NAD83 / Alaska zone 7 + NAVD88 height", "code": 8809}, + {"name": "NAD83 / Alaska zone 8 + NAVD88 height", "code": 8810}, + {"name": "NAD83 / Alaska zone 9 + NAVD88 height", "code": 8811}, + {"name": "NAD83 / Alaska zone 10 + NAVD88 height", "code": 8812}, + {"name": "NAD83 / Missouri East + NAVD88 height", "code": 8813}, + {"name": "NAD83 / Missouri Central + NAVD88 height", "code": 8814}, + {"name": "NAD83 / Missouri West + NAVD88 height", "code": 8815}, + {"name": "CR-SIRGAS / CRTM05 + DACR52 height", "code": 8912} +] \ No newline at end of file diff --git a/apps/app-mobile/src/libraries.js b/apps/app-mobile/src/libraries.js new file mode 100644 index 0000000..02a7c2d --- /dev/null +++ b/apps/app-mobile/src/libraries.js @@ -0,0 +1,76 @@ +const libs = [ + { + name: 'Cpp.js', + version: '1.0.0', + homepage: 'https://cpp.js.org/', + license: 'https://github.com/bugra9/cpp.js/blob/main/LICENSE', + }, + { + name: 'Gdal', + version: '3.9.2', + homepage: 'https://github.com/OSGeo/gdal', + license: 'https://github.com/OSGeo/gdal/blob/master/LICENSE.TXT', + }, + { + name: 'Proj', + version: '9.4.1', + homepage: 'https://github.com/OSGeo/PROJ', + license: 'https://github.com/OSGeo/PROJ/blob/master/COPYING', + }, + { + name: 'Geos', + version: '3.12.2', + homepage: 'https://github.com/libgeos/geos', + license: 'https://github.com/libgeos/geos/blob/master/COPYING', + }, + { + name: 'Spatialite', + version: '5.1.0', + homepage: 'https://www.gaia-gis.it/fossil/libspatialite/index', + license: 'http://www.gnu.org/licenses/lgpl-2.1.html', + }, + { + name: 'Sqlite', + version: '3.46.1', + homepage: 'https://www.sqlite.org/index.html', + license: 'https://www.sqlite.org/copyright.html', + }, + { + name: 'GeoTIFF', + version: '1.7.3', + homepage: 'https://github.com/OSGeo/libgeotiff', + license: 'https://github.com/OSGeo/libgeotiff/blob/master/libgeotiff/LICENSE', + }, + { + name: 'Tiff', + version: '4.6.0', + homepage: 'https://gitlab.com/libtiff/libtiff', + license: 'https://gitlab.com/libtiff/libtiff/-/blob/master/COPYRIGHT', + }, + { + name: 'WebP', + version: '1.4.0', + homepage: 'https://chromium.googlesource.com/webm/libwebp', + license: 'https://chromium.googlesource.com/webm/libwebp/+/refs/heads/master/COPYING', + }, + { + name: 'Expat', + version: '2.6.2', + homepage: 'https://github.com/libexpat/libexpat', + license: 'https://github.com/libexpat/libexpat/blob/master/expat/COPYING', + }, + { + name: 'Zlib', + version: '1.3.1', + homepage: 'https://www.zlib.net/', + license: 'https://www.zlib.net/zlib_license.html', + }, + { + name: 'Iconv', + version: '1.17', + homepage: 'https://www.gnu.org/software/libiconv/', + license: 'https://www.gnu.org/software/libiconv/', + }, +]; + +export default libs; diff --git a/apps/app-mobile/src/screens/AboutScreen.jsx b/apps/app-mobile/src/screens/AboutScreen.jsx new file mode 100644 index 0000000..35a20ee --- /dev/null +++ b/apps/app-mobile/src/screens/AboutScreen.jsx @@ -0,0 +1,116 @@ +/* eslint-disable prettier/prettier */ +import styled from 'styled-components/native'; +import { Linking } from 'react-native'; +import { useSafeAreaInsets } from 'react-native-safe-area-context'; + +export default function AboutScreen({ navigation }) { + const insets = useSafeAreaInsets(); + return ( + + + + gdal3.js + v3.0.0 + + + gdal3.js Mobile is a React Native application that provides a gui to gdal_translate, ogr2ogr and gdal_rasterize applications. Uses gdal3.js in the background. It runs on the device and files are converted on the client side. + + + gdal3.js is a port of Gdal applications to iOS, Android and Webassembly. It allows you to convert raster and vector geospatial data to various formats and coordinate systems. + + + gdal3.js uses cpp.js to compile Gdal, proj, geos, spatialite, sqlite, geotiff, tiff, webp, exfat, zlib and iconv to React Native. + + + + License: + GNU Lesser General Public License v2.1 or later + + + Source Code: + Linking.openURL('https://github.com/bugra9/gdal3.js')}>https://github.com/bugra9/gdal3.js + + + Documentation: + Linking.openURL('https://gdal3.js.org/docs')}>https://gdal3.js.org/docs + + + + + Linking.openURL('https://github.com/bugra9')}>Copyright © 2024 Buğra Sarı + navigation.navigate('Licenses')}>gdal3.js is made possible by the Gdal open source project and other open source software. + + + ); +} + +const Container = styled.View` + flex: 1; + padding-top: ${({ insets }) => insets.top || 0}px; + background-color: white; +`; + +const MainContainer = styled.View` + flex: 1; + justify-content: flex-start; + align-items: flex-start; + padding: 20px; + gap: 16px; +`; + +const TitleContainer = styled.View` + flex-direction: row; + align-items: flex-end; + gap: 4px; + margin-bottom: 16px; +`; + +const Title = styled.Text` + font-size: 24px; + font-weight: bold; +`; + +const Version = styled.Text` + font-size: 14px; + font-weight: bold; + margin-bottom: 2px; +`; + +const Description = styled.Text` + font-size: 12px; +`; + +const List = styled.View` + gap: 12px; + margin-top: 16px; +`; +const ListItem = styled.View` +`; + +const ListItemTitle = styled.Text` + font-size: 12px; + font-weight: bold; +`; +const ListItemSubtitle = styled.Text` + font-size: 12px; +`; + +const Copyright = styled.View` + align-items: center; + gap: 12px; + align-self: flex-end; + width: 100%; + background-color: rgb(245, 246, 247); + padding: 12px 20px; +`; + +const CopyrightTitle = styled.Text` + font-size: 12px; + color: rgb(28, 30, 33); +`; +const CopyrightDescription = styled.Text` + font-size: 12px; + text-align: center; + color: rgb(28, 30, 33); + text-decoration: underline; +`; diff --git a/apps/app-mobile/src/screens/AllFilesScreen.jsx b/apps/app-mobile/src/screens/AllFilesScreen.jsx new file mode 100644 index 0000000..4a35685 --- /dev/null +++ b/apps/app-mobile/src/screens/AllFilesScreen.jsx @@ -0,0 +1,131 @@ +/* eslint-disable prettier/prettier */ +import styled from 'styled-components/native'; +import { Pressable, Platform } from 'react-native'; +import Toast from 'react-native-toast-message'; +import RNFS from 'react-native-fs'; +import { pickDirectory, releaseSecureAccess } from 'react-native-document-picker'; +import { observer } from 'mobx-react-lite'; +import EntypoIcon from 'react-native-vector-icons/Entypo'; +import gdalStore from '../store/gdalStore.js'; + +function getFileSize(size) { + if (size > 1073741824) { // 1024 * 1024 * 1024 + return ceil(size / 1073741824) + ' GB'; + } else if (size > 1048576) { // 1024 * 1024 + return ceil(size / 1048576) + ' MB'; + } else if (size > 1024) { + return ceil(size / 1024) + ' KB'; + } else { + return size + ' B'; + } +} +function ceil(num) { + return Math.ceil(num * 10) / 10; +} + +function getOutputPath(path) { + let outputPath = path; + if (Platform.OS === 'android') { + let dirToRead = path.split('primary')[1]; + const InternalStoragePath = RNFS.ExternalStorageDirectoryPath; + dirToRead = InternalStoragePath + dirToRead.replace(/%3A/g, '%2F'); + outputPath = decodeURIComponent(dirToRead); + } + return decodeURIComponent(outputPath); +} + +function AllFilesScreen() { + const FileViews = gdalStore.files.map(file => { + const title = file.path.replace(`${gdalStore.gdalPath}/`, ''); + return ( + { + pickDirectory({ requestLongTermAccess: false }).then(dir => { + RNFS.exists(file.path).then(status => { + if(status) { + RNFS.copyFile(file.path, getOutputPath(`${dir.uri}%2F${file.name}`)) + .then(() => Toast.show({ type: 'success', text1: 'The file was saved successfully.', text1NumberOfLines: 2 })) + .catch(e => Toast.show({ type: 'error', text1: 'An error occurred.', text2: e.message })) + .finally(() => releaseSecureAccess([dir.uri])); + } else { + console.log('File not exists'); + } + }); + }); + }}> + + + + + + + {title} + + + {getFileSize(file.size)} + + + + + + + + ); + }); + + return {FileViews}; +} + +export default observer(AllFilesScreen); + +const Container = styled.View` + flex: 1; + justify-content: flex-end; + align-items: center; + padding: 20px 20px 20px 20px; + background-color: white; +`; + +const FileInfoContainer = styled(Pressable)` + width: 100%; + background-color: white; + border-radius: 8px; + padding: 8px 0px; + color: white; + overflow: hidden; + border-radius: 8px; + margin-vertical: 2px; +`; + +const FileInfoHeader = styled.View` + flex-direction: row; + width: 100%; + background: white; + height: 50px; +`; + +const FileInfoHeaderIconContainer = styled.View` + justify-content: center; + align-items: center; + width: 50px; +`; + +const FileInfoHeaderDescContainer = styled.View` + flex: 1; + justify-content: center; +`; + +const FileInfoHeaderDescContainerHeader = styled.Text` + font-size: 14px; + font-weight: bold; + margin-bottom: 4px; + color: #74809d; +`; + +const FileInfoHeaderDescContainerDesc = styled.Text` + font-size: 10px; + color: #74809d; +`; diff --git a/apps/app-mobile/src/screens/ConvertScreen.jsx b/apps/app-mobile/src/screens/ConvertScreen.jsx new file mode 100644 index 0000000..3f2710b --- /dev/null +++ b/apps/app-mobile/src/screens/ConvertScreen.jsx @@ -0,0 +1,129 @@ +import { useState } from 'react'; +import { TextInput, Text } from 'react-native'; +import { Button } from '@rneui/themed'; +import styled from 'styled-components/native'; +import { observer } from 'mobx-react-lite'; +import DropDownPicker from 'react-native-dropdown-picker'; +import { useSafeAreaInsets } from 'react-native-safe-area-context'; +import * as DropdownLightTheme from '../constants/DropdownLightTheme.js'; +import gdalStore from '../store/gdalStore.js'; + +DropDownPicker.addTheme('DropdownLightTheme', DropdownLightTheme); +DropDownPicker.setTheme('DropdownLightTheme'); + +function ConvertScreen({ navigation }) { + const insets = useSafeAreaInsets(); + const [formatOpen, setFormatOpen] = useState(false); + const [projOpen, setProjOpen] = useState(false); + + return ( + + + + + gdalStore.setTranslateFormat( + callback(gdalStore.formatList), + ) + } + searchable={true} + categorySelectable={false} + listMode="MODAL" + modalAnimationType="slide" + /> + + {gdalStore.program === 'vectorTranslate' && ( + + + + gdalStore.setProjection( + callback(gdalStore.projection), + ) + } + searchable={true} + listMode="MODAL" + modalAnimationType="slide" + /> + + )} + {gdalStore.program === 'vectorTranslate' && ( + + + gdalStore.setQuery(value)} + placeholder="eg: SELECT * FROM CITIES" + placeholderTextColor="#74809d" + /> + + )} + + + gdalStore.setOptions(value)} + placeholder="eg: -order 1" + placeholderTextColor="#74809d" + /> + + + + {gdalStore.preview} + + + + + + ); +} + +export default observer(ConvertScreen); + +const Container = styled.View` + margin-top: ${p => p.insets.top || 0}px; + flex: 1; + justify-content: center; + padding: 20px; + gap: 24px; + background-color: white; +`; + +const Field = styled.View` + gap: 8px; +`; + +const Label = styled.Text` + font-weight: bold; +`; + +const Input = styled(TextInput)` + border: 1px solid #dedede; + min-height: 40px; + padding-horizontal: 10px; + color: #44506d; +`; + +const PreviewText = styled(Text)` + padding-top: 10px; + border: 1px solid #dedede; + min-height: 40px; + padding-horizontal: 10px; + color: #44506d; +`; diff --git a/apps/app-mobile/src/screens/InfoScreen.jsx b/apps/app-mobile/src/screens/InfoScreen.jsx new file mode 100644 index 0000000..163a34a --- /dev/null +++ b/apps/app-mobile/src/screens/InfoScreen.jsx @@ -0,0 +1,41 @@ +import styled from 'styled-components/native'; +import JSONTree from 'react-native-json-tree'; +import { BottomSheetScrollView } from '@gorhom/bottom-sheet'; + +const theme = { + scheme: 'monokai', + author: 'wimer hazenberg (http://www.monokai.nl)', + base00: '#272822', + base01: '#383830', + base02: '#49483e', + base03: '#75715e', + base04: '#a59f85', + base05: '#f8f8f2', + base06: '#f5f4f1', + base07: '#f9f8f5', + base08: '#f92672', + base09: '#fd971f', + base0A: '#f4bf75', + base0B: '#a6e22e', + base0C: '#a1efe4', + base0D: '#66d9ef', + base0E: '#ae81ff', + base0F: '#cc6633', +}; + +export default function InfoScreen({ route }) { + return ( + + level === 2} + /> + + ); +} + +const Container = styled(BottomSheetScrollView)` + flex: 1; +`; diff --git a/apps/app-mobile/src/screens/Licenses.jsx b/apps/app-mobile/src/screens/Licenses.jsx new file mode 100644 index 0000000..26c3e19 --- /dev/null +++ b/apps/app-mobile/src/screens/Licenses.jsx @@ -0,0 +1,75 @@ +/* eslint-disable prettier/prettier */ +import styled from 'styled-components/native'; +import { Linking } from 'react-native'; +import { useSafeAreaInsets } from 'react-native-safe-area-context'; +import libraries from '../libraries.js'; + +export default function LicensesScreen({ navigation }) { + const insets = useSafeAreaInsets(); + + const LicensesView = libraries.map((lib) => ( + + Linking.openURL(lib.homepage)} + > + ➤ {lib.name} {lib.version} + + Linking.openURL(lib.license)} + > + License + + + )); + + return ( + + + + Compiled with + + {LicensesView} + + + + + ); +} + +const Container = styled.View` + flex: 1; + padding-top: ${({ insets }) => insets.top || 0}px; + background-color: white; + padding: 20px; +`; + +const LicenseList = styled.View` + gap: 8px; +`; + +const LicenseListItem = styled.View` + flex-direction: row; + align-items: flex-end; + gap: 8px; +`; + +const LicenseListItemTitle = styled.Text` + font-size: 14px; +`; +const LicenseListItemSubtitle = styled.Text` + font-size: 12px; + color: #0089fa; +`; + +const List = styled.View` + gap: 12px; + margin-top: 16px; +`; +const ListItem = styled.View` + gap: 12px; +`; + +const ListItemTitle = styled.Text` + font-size: 14px; + font-weight: bold; +`; diff --git a/apps/app-mobile/src/screens/SelectFilesScreen.jsx b/apps/app-mobile/src/screens/SelectFilesScreen.jsx new file mode 100644 index 0000000..1a8ee8d --- /dev/null +++ b/apps/app-mobile/src/screens/SelectFilesScreen.jsx @@ -0,0 +1,142 @@ +import styled from 'styled-components/native'; +import { Pressable } from 'react-native'; +import { pick } from 'react-native-document-picker'; +import { observer } from 'mobx-react-lite'; +import EntypoIcon from 'react-native-vector-icons/Entypo'; +import { FAB } from '@rneui/themed'; +import gdalStore from '../store/gdalStore.js'; + +function SelectFilesScreen({ navigation }) { + const FileViews = gdalStore.datasets.map((dataset, i) => { + const title = gdalStore.datasetsInfo[i].description.split('/').at(-1); + return ( + + + + + + + navigation.navigate('InfoScreen', { + data: gdalStore.datasetsInfo[i], + }) + }> + + {title} + + + {gdalStore.datasetsInfo[i].driverLongName} ( + {gdalStore.datasetsInfo[i].type}) + + + gdalStore.deleteDataset(i)}> + + + + + ); + }); + + return ( + + { + try { + const [pickResult] = await pick({ + copyTo: 'documentDirectory', + }); + console.log(pickResult); + gdalStore.open( + pickResult.fileCopyUri || pickResult.uri, + ); + } catch (err) { + // see error handling + } + }} + /> + {FileViews} + + {gdalStore.datasets.length === 0 && ( + gdalStore.loadSampleGeojsonDataset()}> + Add Sample Geojson + + )} + + + ); +} + +export default observer(SelectFilesScreen); + +const Container = styled.View` + flex: 1; + justify-content: flex-end; + align-items: center; + padding: 20px 20px 20px 20px; + background-color: white; +`; + +const FileInfoContainer = styled.View` + width: 100%; + background-color: white; + border-radius: 8px; + padding: 8px 0px; + color: white; + overflow: hidden; + border-radius: 8px; + margin-vertical: 2px; +`; + +const FileInfoHeader = styled.View` + flex-direction: row; + width: 100%; + background: white; + height: 50px; +`; + +const FileInfoHeaderIconContainer = styled(Pressable)` + justify-content: center; + align-items: center; + width: 50px; +`; + +const FileInfoHeaderDescContainer = styled(Pressable)` + flex: 1; + justify-content: center; +`; + +const FileInfoHeaderDescContainerHeader = styled.Text` + font-size: 14px; + font-weight: bold; + margin-bottom: 4px; + color: #74809d; +`; + +const FileInfoHeaderDescContainerDesc = styled.Text` + font-size: 10px; + color: #74809d; +`; + +const SampleContainer = styled.View` + height: 40px; + margin-top: 20px; + width: 100%; + justify-content: center; + z-index: -1; +`; + +const SampleText = styled.Text` + font-size: 12px; + color: #74809d; +`; diff --git a/apps/app-mobile/src/store/gdalStore.js b/apps/app-mobile/src/store/gdalStore.js new file mode 100644 index 0000000..a40e2db --- /dev/null +++ b/apps/app-mobile/src/store/gdalStore.js @@ -0,0 +1,410 @@ +import 'gdal3.js/empty.i'; +import 'gdal3.js/gdal3.js/Gdal.h'; +import 'gdal3.js/gdal3.js/Driver.h'; +import 'gdal3.js/gdal3.js/Dataset.h'; +import { initCppJs, Native } from 'cpp.js'; +import RNFS from 'react-native-fs'; +import { makeAutoObservable } from 'mobx'; +import crs from '../constants/crs.json'; +import { toTitleCase, split, getFileExtension } from '../utils'; + +const programMapper = { + translate: 'gdal_translate', + vectorTranslate: 'ogr2ogr', + rasterize: 'gdal_rasterize', + polygonize: 'gdal_polygonize', +}; + +class GdalStore { + gdalPath = `${RNFS.TemporaryDirectoryPath}/gdal3js`.replace('//', '/'); + drivers = []; + datasetsInfo = {}; + datasets = []; + translateFormat = null; + translateProj = null; + translateQuery = ''; + translateOptions = ''; + files = []; + + constructor() { + makeAutoObservable(this); + RNFS.exists(this.gdalPath).then(isExist => { + if (isExist) { + RNFS.unlink(this.gdalPath).then(() => { + RNFS.mkdir(this.gdalPath); + }); + } else { + RNFS.mkdir(this.gdalPath); + } + }); + console.log('initCppJs', initCppJs, Native); + initCppJs().then(() => { + Native.Gdal.allRegister(); + this.drivers = Native.toArray(Native.Gdal.getDrivers()).sort( + (a, b) => a.getShortName().localeCompare(b.getShortName()), + ); + console.log(this.drivers.length); + }); + } + + get crs() { + return crs.map(c => ({ + code: c.code, + name: c.name, + value: `EPSG:${c.code}`, + label: `EPSG:${c.code} - ${c.name}`, + search: `EPSG:${c.code} - ${c.name}`.toLowerCase(), + })); + } + + get rasterDrivers() { + return this.drivers.filter(d => d.isRaster()); + } + + get vectorDrivers() { + return this.drivers.filter(d => d.isVector()); + } + + get datasetDriverType() { + if (Object.keys(this.datasetsInfo).length === 0) { + return ''; + } + return Object.values(this.datasetsInfo).reduce( + (out, obj) => (out === obj.type ? out : ''), + Object.values(this.datasetsInfo)[0].type, + ); + } + + get datasetDrivers() { + if (!this.datasetDriverType) { + return []; + } + + return ( + this.datasetDriverType === 'raster' + ? this.rasterDrivers + : this.vectorDrivers + ).filter(d => d.isWritable()); + } + + get formatList() { + if (this.datasetDrivers.length === 0) { + return []; + } + + const parent = {}; + const out = []; + if (this.datasetDrivers[0].isVector()) { + parent.raster = true; + out.push({ + value: 'raster', + label: 'Raster Drivers', + }); + + out.push({ + value: 'GTiff', + label: 'GTiff - GeoTIFF', + parent: 'raster', + }); + } + + if (!parent[this.datasetDriverType]) { + parent[this.datasetDriverType] = true; + out.push({ + value: this.datasetDriverType, + label: `${toTitleCase(this.datasetDriverType)} Drivers`, + }); + } + + out.push( + ...this.datasetDrivers.map(d => ({ + value: d.getShortName(), + label: d.getShortName() + ' - ' + d.getLongName(), + parent: this.datasetDriverType, + })), + ); + return out; + } + + get program() { + if (this.datasetDrivers.length > 0 && this.translateFormat) { + if (this.datasetDriverType === 'vector') { + if (this.translateFormat === 'GTiff') { + return 'rasterize'; + } else if (this.translateFormat !== null) { + return 'vectorTranslate'; + } + } else if (this.datasetDriverType === 'raster') { + if (this.translateFormat === 'GML') { + return 'polygonize'; + } else if (this.translateFormat !== null) { + return 'translate'; + } + } + } + return ''; + } + + get params() { + const parameters = []; + switch (this.program) { + case 'vectorTranslate': + if (this.translateFormat !== null) { + parameters.push('-f', this.translateFormat); + } + if (this.translateProj !== null) { + parameters.push('-t_srs', this.translateProj); + } + if (this.translateQuery !== '') { + parameters.push('-sql', this.translateQuery); + } + break; + case 'translate': + if (this.translateFormat !== null) { + parameters.push('-of', this.translateFormat); + } + break; + case 'rasterize': + parameters.push('-of', 'GTiff'); + break; + } + + if (this.translateOptions !== '') { + parameters.push(...split(this.translateOptions)); + } + + return parameters; + } + + get preview() { + if (!this.program) { + return ''; + } + return ( + programMapper[this.program] + + ' ' + + this.params.map(p => (p[0] === '-' ? p : `"${p}"`)).join(' ') + ); + } + + open(file) { + const dataset = Native.Gdal.openEx(file.replace('file://', '')); + if (dataset) { + let info = JSON.parse( + dataset.info(Native.toVector(Native.VectorString, ['-json'])), + ); + const hasSize = + info.size && + info.size.length >= 2 && + (info.size[0] > 0 || info.size[1] > 0); + const type = info.bands.length > 0 && hasSize ? 'raster' : 'vector'; + if (type === 'vector') { + info = JSON.parse( + dataset.vectorInfo( + Native.toVector(Native.VectorString, ['-json']), + ), + ); + } + this.datasets.push(dataset); + this.datasetsInfo[this.datasets.length - 1] = { type, ...info }; + } + } + + deleteDataset(index) { + for (let i = index; i < this.datasets.length - 1; i += 1) { + this.datasetsInfo[index] = this.datasetsInfo[index + 1]; + } + delete this.datasetsInfo[this.datasets.length - 1]; + this.datasets.splice(index, 1); + } + + translate() { + return new Promise(resolve => { + let promises = []; + let options = this.params; + this.datasets.forEach((d, dIndex) => { + let ext = ''; + if ( + this.program === 'vectorTranslate' && + this.translateFormat === 'MapInfo File' && + options.indexOf('FORMAT=MIF') !== -1 + ) { + ext = 'mif'; + } else { + ext = getFileExtension( + this.drivers.find( + driver => + driver.getShortName() === this.translateFormat, + ), + ); + } + + let fileName = this.datasetsInfo[dIndex].description + .split('/') + .at(-1); + const fileNameArr = fileName.split('.'); + fileNameArr.pop(); + fileName = fileNameArr.join('.'); + + promises.push( + d[this.program]( + `${this.gdalPath}/${fileName}.${ext}`, + Native.toVector(Native.VectorString, options), + ), + ); + }); + Promise.allSettled(promises).then(results => { + console.log('results', results); + results.forEach(({ value: d }) => d.close()); + RNFS.readDir(this.gdalPath).then(files => { + results + .filter(r => r.status === 'rejected') + .forEach(({ reason }) => { + console.error(reason); + }); + this.setFiles(files); + resolve(); + }); + }); + }); + } + + loadSampleGeojsonDataset() { + const sampleDataPath = `${this.gdalPath}/polygon-line-point.geojson`; + const sampleData = require('../assets/polygon-line-point.json'); + RNFS.writeFile(sampleDataPath, JSON.stringify(sampleData), 'utf8') + .then(() => { + this.open(sampleDataPath); + }) + .catch(err => { + console.log(err.message); + }); + } + + setFiles(files) { + this.files = files; + } + + setTranslateFormat(format) { + this.translateFormat = format; + } + + setProjection(proj) { + this.translateProj = proj; + } + + setQuery(value) { + this.translateQuery = value; + } + + setOptions(value) { + this.translateOptions = value; + } +} + +const gdalStore = new GdalStore(); +export default gdalStore; +/* +let drivers; +let gdalRasterDrivers; +let gdalVectorDrivers; + +initCppJs().then(() => { + Native.Gdal.allRegister(); + drivers = Native.toArray(Native.Gdal.getDrivers()).sort((a, b) => a.getShortName().localeCompare(b.getShortName())); + console.log('basla3'); + gdalRasterDrivers = drivers.filter(d => d.isRaster()); + gdalVectorDrivers = drivers.filter(d => d.isVector()); +}); + +const datasetsInfo = {}; +const datasets = []; +export function open(file) { + const dataset = Native.Gdal.openEx(file.replace('file://', '')); + if (dataset) { + let info = JSON.parse(dataset.info(Native.toVector(Native.VectorString, ['-json']))); + const hasSize = info.size && info.size.length >= 2 && (info.size[0] > 0 || info.size[1] > 0); + const type = info.bands.length > 0 && hasSize ? 'raster' : 'vector'; + if (type === 'vector') { + info = JSON.parse(dataset.vectorInfo(Native.toVector(Native.VectorString, ['-json']))); + } + datasetsInfo[dataset] = {type, ...info}; + datasets.push(dataset); + } +} + +export default Native; + +/* initCppJs().then(Cppjs => { + console.log('BugraClass', Cppjs.BugraClass, Cppjs); + const BugraClass = Cppjs.BugraClass; + const Bugra2Class = Cppjs.Bugra2Class; + const Bugra3Class = Cppjs.Bugra3Class; + const z = new BugraClass(7); + z.setB(4); + console.log('BugraClass.b2 = ', z.getB()); + + const r = z.deneme(3); + console.log(r); + console.log(Bugra3Class.oo(2)); + console.log('getSqliteVersion', Bugra3Class.getSqliteVersion()); + + const f = new Bugra2Class(6); + console.log(Bugra3Class.waav(f, 6)); + + Cppjs.Gdal.allRegister(); + vector().catch(e => console.error(e)); +}); */ + +/* +async function vector() { + console.log('abc'); + const filePath = await RNFetchBlob.config({fileCache: true}) + .fetch('GET', 'https://gdal3.js.org/test/data/simple-polygon-line-point.geojson') + .then(res => res.path()); + console.log('data', filePath, Native.Gdal.openEx); + + const dataset = Native.Gdal.openEx(filePath); + console.log(dataset); + if (dataset) { + // console.log(dataset.vectorInfo(new Cppjs.VectorString())); + const newPath = `${RNFS.TemporaryDirectoryPath}simple-polygon-line-point.sqlite`; + console.log('newPath', newPath); + const options = new Native.VectorString(); + options.push_back('-f'); + options.push_back('SQLite'); + options.push_back('-lco'); + options.push_back('FORMAT=SPATIALITE'); + options.push_back('-t_srs'); + options.push_back('EPSG:3821'); + console.log('--'); + const d2 = dataset.vectorTranslate(newPath, options); + console.log(d2); + } +} + +async function raster() { + console.log('abc'); + const filePath = await RNFetchBlob.config({fileCache: true}) + .fetch('GET', 'https://gdal3.js.org/test/data/simple-polygon-line-point.tif') + .then(res => res.path()); + console.log('data', filePath); + + const dataset = Native.Gdal.openEx(filePath); + if (dataset) { + const newPath = `${RNFS.TemporaryDirectoryPath}/simple-polygon-line-point.png`; + console.log('newPath', newPath); + const options = new Native.VectorString(); + options.push_back('-of'); + options.push_back('PNG'); + console.log('--'); + const d2 = dataset.translate(newPath, options); + console.log(d2); + console.log(d2.getRasterXSize()); + // const filelist = d2.getFileList(); + // for (let i = 0; i < filelist.size(); i += 1) { + // console.log('fileList: ', filelist.get(i)); + // } + } +} +*/ diff --git a/apps/app-mobile/src/utils.js b/apps/app-mobile/src/utils.js new file mode 100644 index 0000000..a443ae3 --- /dev/null +++ b/apps/app-mobile/src/utils.js @@ -0,0 +1,71 @@ +export function toTitleCase(str) { + return str.replace( + /\w\S*/g, + text => text.charAt(0).toUpperCase() + text.substring(1).toLowerCase(), + ); +} + +export function split(str) { + const output = []; + let isInside = false; + let temp = ''; + str.split('').forEach(c => { + if (c === '"') { + if (isInside) { + if (temp.length > 0) { + output.push(temp); + } + temp = ''; + } + isInside = !isInside; + } else if (c === ' ' && !isInside) { + if (temp.length > 0) { + output.push(temp); + } + temp = ''; + } else { + temp += c; + } + }); + if (temp.length > 0) { + output.push(temp); + } + + return output; +} + +/* export function xmlToJs(data) { + if (data) { + const tempJs = convert.xml2js(data); + if (tempJs.elements && tempJs.elements.length > 0) { + if (tempJs.elements.length !== 1) console.warn('invalid xml!'); + if (tempJs.elements[0] && tempJs.elements[0].elements) { + return tempJs.elements[0].elements.map((o) => { + const temp = o.attributes; + if (o.elements && o.elements.length > 0) { + temp.options = o.elements.map((o2) => o2.elements[0].text); + } + return temp; + }); + } + } + } + return null; +} */ + +export function getFileExtension(driver) { + if (!driver) { + return 'tif'; + } + + const extensions = driver.getExtensions(); + let extension = driver.getExtension(); + if (extension === '' && extensions !== '') { + extension = extensions.split(' ')[0]; + } + if (extension !== '') { + extension = extension.replace('.', '').replace('/', ''); + } + + return extension; +} diff --git a/apps/app-mobile/tsconfig.json b/apps/app-mobile/tsconfig.json new file mode 100644 index 0000000..9b8d1de --- /dev/null +++ b/apps/app-mobile/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "@react-native/typescript-config/tsconfig.json" +} diff --git a/apps/example-browser-worker/index.html b/apps/example-browser-worker/index.html deleted file mode 100644 index 28173cf..0000000 --- a/apps/example-browser-worker/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/apps/example-browser-worker/main.js b/apps/example-browser-worker/main.js deleted file mode 100644 index dcd0dd3..0000000 --- a/apps/example-browser-worker/main.js +++ /dev/null @@ -1,6 +0,0 @@ -document.write("Loading..."); -initGdalJs({ path: '../../package' }).then((Gdal) => { - const count = Object.keys(Gdal.drivers.raster).length + Object.keys(Gdal.drivers.vector).length; - document.write("Number of drivers: " + count); - console.log(Gdal.drivers); -}); diff --git a/apps/example-browser/index.html b/apps/example-browser/index.html index 46f2b8f..1f92f5b 100644 --- a/apps/example-browser/index.html +++ b/apps/example-browser/index.html @@ -4,11 +4,9 @@ - + diff --git a/apps/example-browser/main.js b/apps/example-browser/main.js index c31f92d..c66c0c6 100644 --- a/apps/example-browser/main.js +++ b/apps/example-browser/main.js @@ -1,6 +1,7 @@ document.write("Loading..."); -initGdalJs({ path: 'https://cdn.jsdelivr.net/npm/gdal3.js@2.8.1/dist/package', useWorker: false }).then((Gdal) => { - const count = Object.keys(Gdal.drivers.raster).length + Object.keys(Gdal.drivers.vector).length; - document.write("Number of drivers: " + count); - console.log(Gdal.drivers); +initCppJs({ path: '../../dist' }).then((Module) => { + Module.Gdal.allRegister(); + const drivers = Module.toArray(Module.Gdal.getDrivers()); + document.write("Number of drivers: " + drivers.length); + console.log(drivers.map((d) => d.getLongName())); }); diff --git a/apps/example-module-browser-worker/index.html b/apps/example-module-browser-worker/index.html deleted file mode 100644 index 87e1749..0000000 --- a/apps/example-module-browser-worker/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/apps/example-module-browser-worker/main.js b/apps/example-module-browser-worker/main.js deleted file mode 100644 index 53a6b72..0000000 --- a/apps/example-module-browser-worker/main.js +++ /dev/null @@ -1,8 +0,0 @@ -import '../../package/gdal3.js'; - -document.write("Loading..."); -initGdalJs({ path: '../../package' }).then((Gdal) => { - const count = Object.keys(Gdal.drivers.raster).length + Object.keys(Gdal.drivers.vector).length; - document.write("Number of drivers: " + count); - console.log(Gdal.drivers); -}); diff --git a/apps/example-module-browser/main.js b/apps/example-module-browser/main.js index 3ff05e3..7d32f9d 100644 --- a/apps/example-module-browser/main.js +++ b/apps/example-module-browser/main.js @@ -1,8 +1,9 @@ -import '../../package/gdal3.js'; +import '../../dist/gdal3js.browser.js'; document.write("Loading..."); -initGdalJs({ path: '../../package', useWorker: false }).then((Gdal) => { - const count = Object.keys(Gdal.drivers.raster).length + Object.keys(Gdal.drivers.vector).length; - document.write("Number of drivers: " + count); - console.log(Gdal.drivers); +initGdalJs({ path: '../../dist' }).then((Module) => { + Module.Gdal.allRegister(); + const drivers = Module.toArray(Module.Gdal.getDrivers()); + document.write("Number of drivers: " + drivers.length); + console.log(drivers.map((d) => d.getLongName())); }); diff --git a/apps/example-node/a.mbtiles b/apps/example-node/a.mbtiles new file mode 100644 index 0000000000000000000000000000000000000000..f0b293a4026d4b2441583d90201c16d77ca27f35 GIT binary patch literal 16384 zcmeI2eQXow9mns*Z|AoQrm2C@^>Q>RP94{=6OzylaHtt^tU%%nzl(e%&C$nkgjWo)>d5$g{m#mq%xJQ3S!UQ*~vKy z)?T!~`kZ9n^Zb5~pYQYiJdaO#9>>+>46qEfJrWCfSjvhNASjBgqbLMHioi<(UfBx+ z1#unCCi2{i5K~uFL%xmR+D{Pjto9SKCr@jbf&?G|NB|Om1Rw!O01|)%AOT1K5`YB$ zD+0-4Os?1K(Vk+~;|(%wAjrh|H++4w-PU5KT5NSrJH>~nm0giYs6EJZGC?X3W|@tzDO_;3eOA1BD>~A{2tard4mzJk!o$MZ)&xRyUgh-QvqEV3pGp$ZyGO|tVYdi9S%jH0*feGTZz#l`~Rj@kY)2@A+HCPH2&CeC!tMKi8$2l#U-*m7Zc21kmbr5 zszQ-_r@?HCW?D$lV7@_6^trur{_+~(mw>n}P{{8kK7Y0Fqq>t9VU39f1`LU6|H&{d z|4-%>7OQAjcc2a$%|pd=&;6|Mec+&EjS3O2wpY1Vt;Cluj{9~nV5x@UY68@RpV6b< z?OFw1Si~)vNGB5mUxP|HzSQRh3*8?tH=C@hELD{?HAZW#sn%RmW39Cqtrk-?xGJlw zj8zq;>I$>D!cs}e@TCv=7;qL5t5{{Sn5(O5Ypur0DpQTQw$f5nV>GLzcoCU-L{zCH zTt#?oJly_Yt283y39?3eUhC3)sM)EWQJ+<> zQ(aUYP!%X&0ZDj40+0YC00}?>kN_kA34AXJM71&$MU#(7b&K!q=YNPo5PZ<_xvp${ z`sdE+=|5eVm}>Z-e0+N9fkisK*W-5khum$KuYSyYkSZQaji*zo^n+=`=*hJ5?jFm{ zXZ%|o&HW7{TWli(x+4AXsq{$G+kZU1c~pY@IyUU`0me~HMzNq!q^Mk2alqZC`*hp+ z8vEmu-KeX2aLFHbmOfSdRB@?HMwFIxHh$6Z;x?taZn^HT!+7jl&5O;4TOH12>SY>b zp%ZzQ{K;__P)w+KMZc8HQM|gK$3dWYx%udX>M3&Z?(`zYuY|DxC$mnrlSv-8`r!f8me%HiOHPhfP|kPLj7y}VZoXM~u8)9~{2AN*n&If!)Ypq9M;`=BIh~?LN75G! zziH_2@3kFV-_z8$fAHz#^LP1<>IP-K8+z-ci;>ezvwRa!3(I)5HXIkLDL-A1l<>Xj zxLxNeJMhA#6~}tpH?BL_m$dcN_x0ZBy=5vlX=TNY#DVs8R+ej@_IWk z3=_F?EIc#3yOtT6X5Jb9#p@T&i`-4D`O#4Se%nD8aCbDme|Il!8N|o^pZQ;<%5rAs z`E%d>iUGnQi3}ysWLu7IKA+w0+xAB$_YJh#U)nGBdEnOaCez)sK6_5)aGja>?M2Qf zi^~XtNbdMIO@98@6D1{MDdT;UDY41!#{T}kjL93yn<(xtl^>ZnKha&+aOjMqufEsz zhV8W;0vWRYYz=4frlUKn108Ep=Bge=ykN_kA2|xmn z03-kjKmw2eBmfEgF9ZlFI8jBxfvPrBDk#)sN@Ss0D1kFURi>m+Dl;Xyk`PMZ3`~(N nN#&UmE|m!-aQGutNWpOoieVC&6daVGIJhYY6q8E9nF8@Id*0y^ literal 0 HcmV?d00001 diff --git a/apps/example-node/index.js b/apps/example-node/index.js index 391aee8..ee2b188 100644 --- a/apps/example-node/index.js +++ b/apps/example-node/index.js @@ -1,62 +1,9 @@ -const initGdalJs = require('gdal3.js/node'); - -async function main() { - const Gdal = await initGdalJs(); - - const count = Object.keys(Gdal.drivers.raster).length + Object.keys(Gdal.drivers.vector).length; - console.log("Number of drivers: " + count); - - const drivers = { - raster: { - readWrite: [], - readOnly: [], - writeOnly: [], - }, - vector: { - readWrite: [], - readOnly: [], - writeOnly: [], - }, - } - - Object.values(Gdal.drivers.raster).forEach(driver => { - if (driver.isReadable && driver.isWritable) { - drivers.raster.readWrite.push(driver.shortName); - } else if(driver.isReadable) { - drivers.raster.readOnly.push(driver.shortName); - } else if(driver.isWritable) { - drivers.raster.writeOnly.push(driver.shortName); - } - }); - - Object.values(Gdal.drivers.vector).forEach(driver => { - if (driver.isReadable && driver.isWritable) { - drivers.vector.readWrite.push(driver.shortName); - } else if(driver.isReadable) { - drivers.vector.readOnly.push(driver.shortName); - } else if(driver.isWritable) { - drivers.vector.writeOnly.push(driver.shortName); - } - }); - - console.log(`\nraster read & write drivers: ${drivers.raster.readWrite.sort().join(', ')}`); - console.log(`\nraster read only drivers: ${drivers.raster.readOnly.sort().join(', ')}`); - console.log(`\nraster write only drivers: ${drivers.raster.writeOnly.sort().join(', ')}`); - console.log(`\nvector read & write drivers: ${drivers.vector.readWrite.sort().join(', ')}`); - console.log(`\nvector read only drivers: ${drivers.vector.readOnly.sort().join(', ')}`); - console.log(`\nvector write only drivers: ${drivers.vector.writeOnly.sort().join(', ')}`); - - const coords = [ - [27.143757, 38.4247972], - ]; - const options = [ - '-s_srs', 'EPSG:4326', - '-t_srs', 'EPSG:3857', - '-output_xy', - ]; - const newCoords = await Gdal.gdaltransform(coords, options); - console.log('coordinates (EPSG:4326): ', coords); - console.log('coordinates (EPSG:3857): ', newCoords); // [ [ 3021629.2074563554, 4639610.441991095, 0 ] ] +const initGdalJs = require('gdal3.js/node.js'); + +start(); +async function start() { + const { Gdal, toArray } = await initGdalJs(); + Gdal.allRegister(); + const drivers = toArray(Gdal.getDrivers()); + drivers.forEach((d) => console.log(d.getShortName())); } - -main(); diff --git a/apps/example-node/index.mjs b/apps/example-node/index.mjs new file mode 100644 index 0000000..3cf6db2 --- /dev/null +++ b/apps/example-node/index.mjs @@ -0,0 +1,17 @@ +import initGdalJs from 'gdal3.js/node.js'; + +start(); +async function start() { + const { Gdal, toArray, toVector, VectorString } = await initGdalJs(); + console.log(toArray, Gdal); + Gdal.allRegister(); + const drivers = toArray(Gdal.getDrivers()); + drivers.forEach((d) => console.log(d.getShortName())); + const firstDataset = Gdal.openEx('../../test/data/polygon-line-point.geojson'); + const info = JSON.parse(firstDataset.vectorInfo(toVector(VectorString, ['-json']))); + console.log(info); + const abc = firstDataset.vectorTranslate('./a.mbtiles', toVector(VectorString, ['-f', 'MBTiles'])); + const info2 = JSON.parse(abc.vectorInfo(toVector(VectorString, ['-json']))); + abc.close(); + console.log(info2); +} diff --git a/apps/example-node/package.json b/apps/example-node/package.json index 9da0653..395c04f 100644 --- a/apps/example-node/package.json +++ b/apps/example-node/package.json @@ -1,5 +1,5 @@ { "dependencies": { - "gdal3.js": "2.8.1" + "gdal3.js": "workspace:^" } } diff --git a/apps/example-singlefile/index.html b/apps/example-singlefile/index.html deleted file mode 100644 index 4abf871..0000000 --- a/apps/example-singlefile/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - Loading... - - - diff --git a/apps/playground-node/index.js b/apps/playground-node/index.js deleted file mode 100644 index ff673c3..0000000 --- a/apps/playground-node/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const initGdalJs = require('gdal3.js/node'); - -async function main() { - try { - const Gdal = await initGdalJs(); - - const data = await fetch('https://gdal3.js.org/test/data/simple-polygon-line-point.tif').then(response => response.arrayBuffer()); - Gdal.Module.FS.writeFile('/input/simple-polygon-line-point.tif', new Int8Array(data)); - const result = await Gdal.open('/input/simple-polygon-line-point.tif'); - console.log(result); - } catch (error) { - console.error(error); - } -} - -main(); diff --git a/apps/playground-node/package.json b/apps/playground-node/package.json deleted file mode 100644 index ff34d58..0000000 --- a/apps/playground-node/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "dependencies": { - "gdal3.js": "link:../../" - } -} diff --git a/apps/playground-node/pnpm-lock.yaml b/apps/playground-node/pnpm-lock.yaml deleted file mode 100644 index 6033849..0000000 --- a/apps/playground-node/pnpm-lock.yaml +++ /dev/null @@ -1,10 +0,0 @@ -lockfileVersion: '6.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -dependencies: - gdal3.js: - specifier: link:../../ - version: link:../.. diff --git a/cppjs.config.mjs b/cppjs.config.mjs new file mode 100644 index 0000000..5325277 --- /dev/null +++ b/cppjs.config.mjs @@ -0,0 +1,46 @@ +import getDirName from 'cpp.js/src/utils/getDirName.js'; +import gdal from 'cppjs-package-gdal/cppjs.config.js'; + +export default { + general: { + name: 'gdal3js', + }, + export: { + type: 'cmake', + entry: 'gdalcpp.h', + }, + dependencies: [ + gdal, + ], + paths: { + project: getDirName(import.meta.url), + output: 'dist', + }, + platform: { + 'Android-arm64-v8a': { + env: { + DXF_FEATURE_LIMIT_PER_BLOCK: '-1', + GDAL_ENABLE_DEPRECATED_DRIVER_GTM: 'YES', + // CPL_DEBUG: 'ON', + CPL_LOG_ERRORS: 'ON', + }, + }, + 'iOS-iphoneos': { + env: { + DXF_FEATURE_LIMIT_PER_BLOCK: '-1', + GDAL_ENABLE_DEPRECATED_DRIVER_GTM: 'YES', + // CPL_DEBUG: 'ON', + CPL_LOG_ERRORS: 'ON', + }, + }, + 'Emscripten-x86_64': { + env: { + DXF_FEATURE_LIMIT_PER_BLOCK: '-1', + GDAL_NUM_THREADS: '0', + GDAL_ENABLE_DEPRECATED_DRIVER_GTM: 'YES', + // CPL_DEBUG: 'ON', + CPL_LOG_ERRORS: 'ON', + }, + }, + }, +}; diff --git a/gdal3.js.podspec b/gdal3.js.podspec new file mode 100644 index 0000000..cb078e4 --- /dev/null +++ b/gdal3.js.podspec @@ -0,0 +1,13 @@ +require "json" +package = JSON.parse(File.read(File.join(__dir__, "package.json"))) + +Pod::Spec.new do |s| + s.module_name = "gdal3js" + s.name = package["name"] + s.version = package["version"] + s.summary = package["description"] + s.homepage = package["homepage"] + s.author = "Bugra SARI" + s.source = { :http => "https://gdal3.js.org" } + s.vendored_frameworks = 'gdal3js.xcframework', 'gdal.xcframework' +end diff --git a/node.js b/node.js index 4ff1191..626dfdb 100644 --- a/node.js +++ b/node.js @@ -1 +1 @@ -module.exports = require('./dist/package/gdal3.node.js'); +module.exports = require('./dist/gdal3js.node.js'); diff --git a/package.json b/package.json index 6ce4783..83cc672 100644 --- a/package.json +++ b/package.json @@ -1,100 +1,46 @@ { "name": "gdal3.js", - "version": "2.8.1", - "description": "gdal3.js is a port of Gdal applications (**gdal_translate**, **ogr2ogr**, **gdal_rasterize**, **gdalwarp**, **gdaltransform**) to Webassembly. It allows you to convert raster and vector geospatial data to various formats and coordinate systems.", - "license": "LGPL-2.1-or-later", + "version": "3.0.0-alpha.5", + "description": "gdal3.js is a port of Gdal to Webassembly and React Native. It allows you to convert raster and vector geospatial data to various formats and coordinate systems.", "homepage": "https://gdal3.js.org", - "repository": "https://github.com/bugra9/gdal3.js.git", - "private": false, - "keywords": [ - "gis", - "geospatial", - "gdal", - "ogr2ogr", - "gdal_translate", - "gdal_rasterize", - "gdalwarp", - "gdaltransform", - "webassembly", - "emscripten" - ], + "license": "LGPL-2.1-or-later", + "main": "dist/gdal3js.browser.js", "files": [ - "dist/package/gdal3WebAssembly.data", - "dist/package/gdal3WebAssembly.wasm", - "dist/package/gdal3.dev.js", - "dist/package/gdal3.node.js", - "dist/package/gdal3.js", + "dist", "src", - "build/package/gdal3WebAssembly.js", - "node.js" + "node.js", + "cppjs.config.mjs", + "gdal3.js.podspec" ], - "main": "dist/package/gdal3.js", - "types": "src/index.d.ts", "scripts": { - "lint": "eslint .", - "build": "pnpm run build-native && pnpm run build-src && pnpm run build-spec && pnpm run build-gui && pnpm run build-docs", - "test": "pnpm run test-node && pnpm run test-browser && pnpm run test-coverage", - "dist": "rm -rf dist && mkdir -p dist/examples && cp -r build/app/* dist && cp -r build/package dist && cp -r build/docs dist && cp -r build/test dist && cp -r build/coverage dist && cp -r apps/example*browser* dist/examples", - "serve": "http-server dist", - "deploy": "push-dir --dir=dist --branch=gh-pages --cleanup", - "build-native": "make", - "build-src": "rollup --config rollup.config.mjs", - "build-spec": "mkdir -p build/test/specs/ && cp src/**/**/*.spec.js build/test/specs/ && cp test/*.spec.js build/test/specs/ && cp test/browser.html build/test/index.html && cp test/mocha.css build/test/mocha.css && cp test/mocha.js build/test/mocha.js && cp test/chai.js build/test/chai.js && cp -r test/data build/test/data", - "build-gui": "cd apps/app-gui && pnpm install && pnpm run build", - "build-docs": "jsdoc --configure .jsdoc.json --verbose && cp -r build/docs/gdal3.js/2.8.1/* build/docs", - "test-node": "nyc --reporter=json --reporter=html --report-dir=./build/coverage/node mocha", - "test-browser": "karma start .karma.conf.js", - "test-coverage": "istanbul-merge --out build/coverage/coverage-final.json build/coverage/browser/coverage-final.json build/coverage/node/coverage-final.json && nyc report --reporter html -t build/coverage --report-dir build/coverage" + "build": "cpp.js generate lib", + "build:wasm": "cpp.js generate lib -p wasm", + "build:android": "cpp.js generate lib -p android", + "build:ios": "cpp.js generate lib -p ios", + "clear": "rm -rf .cppjs dist *.xcframework", + "test": "pnpm run test:node && pnpm run test:browser", + "test:node": "mocha", + "test:browser": "karma start .karma.conf.js", + "postinstall": "cpp.js postinstall" + }, + "dependencies": { + "cpp.js": "^1.0.0-alpha.4", + "cppjs-package-gdal": "^1.0.0-alpha.4" }, "devDependencies": { - "@babel/cli": "^7.23.4", - "@babel/core": "^7.23.3", - "@babel/plugin-transform-runtime": "^7.23.4", - "@babel/preset-env": "^7.23.3", - "@babel/register": "^7.22.15", - "@rollup/plugin-babel": "^6.0.4", - "@rollup/plugin-commonjs": "^25.0.7", - "@rollup/plugin-node-resolve": "^15.2.3", - "@rollup/plugin-virtual": "^3.0.2", - "@types/detect-node": "^2.0.2", - "@babel/eslint-parser": "^7.23.3", - "babel-loader": "^9.1.3", - "babel-polyfill": "^6.26.0", "browserify": "^17.0.0", "chai": "^4.3.10", - "coverage-istanbul-loader": "^3.0.5", - "coveralls": "^3.1.1", - "eslint": "^8.54.0", - "eslint-config-airbnb-base": "^15.0.0", - "eslint-plugin-import": "^2.29.0", - "eslint-plugin-mocha": "^10.2.0", - "fast-check": "^3.14.0", - "html-webpack-plugin": "^5.5.3", - "http-server": "^14.1.1", - "istanbul-merge": "^2.0.0", - "jsdoc": "^3.6.11", "karma": "^6.4.2", "karma-chai": "^0.1.0", "karma-chrome-launcher": "^3.2.0", "karma-coverage": "^2.2.1", - "karma-coverage-istanbul-reporter": "^3.0.3", "karma-firefox-launcher": "^2.1.2", "karma-mocha": "^2.0.1", "karma-phantomjs-launcher": "^1.0.4", "karma-sourcemap-loader": "^0.4.0", "karma-webpack": "^5.0.0", - "minami": "^1.2.3", "mocha": "^10.2.0", "mocha-loader": "^5.1.5", - "nyc": "^15.1.0", - "puppeteer": "^21.5.2", - "push-dir": "^0.4.1", - "rollup": "^4.6.0", - "rollup-plugin-istanbul": "^5.0.0", - "rollup-plugin-uglify": "^6.0.4" - }, - "dependencies": { - "detect-node": "^2.1.0", "xml-js": "^1.6.11" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c9ce4ea..b95494d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,1392 +5,227 @@ settings: excludeLinksFromLockfile: false dependencies: - detect-node: - specifier: ^2.1.0 - version: 2.1.0 - xml-js: - specifier: ^1.6.11 - version: 1.6.11 - -devDependencies: - '@babel/cli': - specifier: ^7.23.4 - version: 7.23.4(@babel/core@7.23.5) - '@babel/core': - specifier: ^7.23.3 - version: 7.23.5 - '@babel/eslint-parser': - specifier: ^7.23.3 - version: 7.23.3(@babel/core@7.23.5)(eslint@8.55.0) - '@babel/plugin-transform-runtime': - specifier: ^7.23.4 - version: 7.23.4(@babel/core@7.23.5) - '@babel/preset-env': - specifier: ^7.23.3 - version: 7.23.5(@babel/core@7.23.5) - '@babel/register': - specifier: ^7.22.15 - version: 7.22.15(@babel/core@7.23.5) - '@rollup/plugin-babel': - specifier: ^6.0.4 - version: 6.0.4(@babel/core@7.23.5)(rollup@4.6.1) - '@rollup/plugin-commonjs': - specifier: ^25.0.7 - version: 25.0.7(rollup@4.6.1) - '@rollup/plugin-node-resolve': - specifier: ^15.2.3 - version: 15.2.3(rollup@4.6.1) - '@rollup/plugin-virtual': - specifier: ^3.0.2 - version: 3.0.2(rollup@4.6.1) - '@types/detect-node': - specifier: ^2.0.2 - version: 2.0.2 - babel-loader: - specifier: ^9.1.3 - version: 9.1.3(@babel/core@7.23.5)(webpack@5.89.0) - babel-polyfill: - specifier: ^6.26.0 - version: 6.26.0 - browserify: - specifier: ^17.0.0 - version: 17.0.0 - chai: - specifier: ^4.3.10 - version: 4.3.10 - coverage-istanbul-loader: - specifier: ^3.0.5 - version: 3.0.5 - coveralls: - specifier: ^3.1.1 - version: 3.1.1 - eslint: - specifier: ^8.54.0 - version: 8.55.0 - eslint-config-airbnb-base: - specifier: ^15.0.0 - version: 15.0.0(eslint-plugin-import@2.29.0)(eslint@8.55.0) - eslint-plugin-import: - specifier: ^2.29.0 - version: 2.29.0(eslint@8.55.0) - eslint-plugin-mocha: - specifier: ^10.2.0 - version: 10.2.0(eslint@8.55.0) - fast-check: - specifier: ^3.14.0 - version: 3.14.0 - html-webpack-plugin: - specifier: ^5.5.3 - version: 5.5.3(webpack@5.89.0) - http-server: - specifier: ^14.1.1 - version: 14.1.1 - istanbul-merge: - specifier: ^2.0.0 - version: 2.0.0 - jsdoc: - specifier: ^3.6.11 - version: 3.6.11 - karma: - specifier: ^6.4.2 - version: 6.4.2 - karma-chai: - specifier: ^0.1.0 - version: 0.1.0(chai@4.3.10)(karma@6.4.2) - karma-chrome-launcher: - specifier: ^3.2.0 - version: 3.2.0 - karma-coverage: - specifier: ^2.2.1 - version: 2.2.1 - karma-coverage-istanbul-reporter: - specifier: ^3.0.3 - version: 3.0.3 - karma-firefox-launcher: - specifier: ^2.1.2 - version: 2.1.2 - karma-mocha: - specifier: ^2.0.1 - version: 2.0.1 - karma-phantomjs-launcher: - specifier: ^1.0.4 - version: 1.0.4(karma@6.4.2) - karma-sourcemap-loader: - specifier: ^0.4.0 - version: 0.4.0 - karma-webpack: - specifier: ^5.0.0 - version: 5.0.0(webpack@5.89.0) - minami: - specifier: ^1.2.3 - version: 1.2.3 - mocha: - specifier: ^10.2.0 - version: 10.2.0 - mocha-loader: - specifier: ^5.1.5 - version: 5.1.5(mocha@10.2.0)(webpack@5.89.0) - nyc: - specifier: ^15.1.0 - version: 15.1.0 - puppeteer: - specifier: ^21.5.2 - version: 21.5.2 - push-dir: - specifier: ^0.4.1 - version: 0.4.1 - rollup: - specifier: ^4.6.0 - version: 4.6.1 - rollup-plugin-istanbul: - specifier: ^5.0.0 - version: 5.0.0(rollup@4.6.1) - rollup-plugin-uglify: - specifier: ^6.0.4 - version: 6.0.4(rollup@4.6.1) - -packages: - - /@aashutoshrathi/word-wrap@1.2.6: - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - dev: true - - /@ampproject/remapping@2.2.1: - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - dev: true - - /@babel/cli@7.23.4(@babel/core@7.23.5): - resolution: {integrity: sha512-j3luA9xGKCXVyCa5R7lJvOMM+Kc2JEnAEIgz2ggtjQ/j5YUVgfsg/WsG95bbsgq7YLHuiCOzMnoSasuY16qiCw==} - engines: {node: '>=6.9.0'} - hasBin: true - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@jridgewell/trace-mapping': 0.3.20 - commander: 4.1.1 - convert-source-map: 2.0.0 - fs-readdir-recursive: 1.1.0 - glob: 7.2.3 - make-dir: 2.1.0 - slash: 2.0.0 - optionalDependencies: - '@nicolo-ribaudo/chokidar-2': 2.1.8-no-fsevents.3 - chokidar: 3.5.3 - dev: true - - /@babel/code-frame@7.23.5: - resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.23.4 - chalk: 2.4.2 - dev: true - - /@babel/compat-data@7.23.5: - resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/core@7.23.5: - resolution: {integrity: sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.5 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) - '@babel/helpers': 7.23.5 - '@babel/parser': 7.23.5 - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.5 - '@babel/types': 7.23.5 - convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/eslint-parser@7.23.3(@babel/core@7.23.5)(eslint@8.55.0): - resolution: {integrity: sha512-9bTuNlyx7oSstodm1cR1bECj4fkiknsDa1YniISkJemMY3DGhJNYBECbe6QD/q54mp2J8VO66jW3/7uP//iFCw==} - engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} - peerDependencies: - '@babel/core': ^7.11.0 - eslint: ^7.5.0 || ^8.0.0 - dependencies: - '@babel/core': 7.23.5 - '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 8.55.0 - eslint-visitor-keys: 2.1.0 - semver: 6.3.1 - dev: true - - /@babel/generator@7.23.5: - resolution: {integrity: sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.5 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - jsesc: 2.5.2 - dev: true - - /@babel/helper-annotate-as-pure@7.22.5: - resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.5 - dev: true - - /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: - resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.5 - dev: true - - /@babel/helper-compilation-targets@7.22.15: - resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.23.5 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.22.1 - lru-cache: 5.1.1 - semver: 6.3.1 - dev: true - - /@babel/helper-create-class-features-plugin@7.23.5(@babel/core@7.23.5): - resolution: {integrity: sha512-QELlRWxSpgdwdJzSJn4WAhKC+hvw/AtHbbrIoncKHkhKKR/luAlKkgBDcri1EzWAo8f8VvYVryEHN4tax/V67A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.5) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - semver: 6.3.1 - dev: true - - /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.5): - resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-annotate-as-pure': 7.22.5 - regexpu-core: 5.3.2 - semver: 6.3.1 - dev: true - - /@babel/helper-define-polyfill-provider@0.4.3(@babel/core@7.23.5): - resolution: {integrity: sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - debug: 4.3.4(supports-color@8.1.1) - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-environment-visitor@7.22.20: - resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-function-name@7.23.0: - resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.15 - '@babel/types': 7.23.5 - dev: true - - /@babel/helper-hoist-variables@7.22.5: - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.5 - dev: true - - /@babel/helper-member-expression-to-functions@7.23.0: - resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.5 - dev: true - - /@babel/helper-module-imports@7.22.15: - resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.5 - dev: true - - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - dev: true - - /@babel/helper-optimise-call-expression@7.22.5: - resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.5 - dev: true - - /@babel/helper-plugin-utils@7.22.5: - resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.5): - resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-wrap-function': 7.22.20 - dev: true - - /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.5): - resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - dev: true - - /@babel/helper-simple-access@7.22.5: - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.5 - dev: true - - /@babel/helper-skip-transparent-expression-wrappers@7.22.5: - resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.5 - dev: true - - /@babel/helper-split-export-declaration@7.22.6: - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.5 - dev: true - - /@babel/helper-string-parser@7.23.4: - resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-identifier@7.22.20: - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-option@7.23.5: - resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-wrap-function@7.22.20: - resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-function-name': 7.23.0 - '@babel/template': 7.22.15 - '@babel/types': 7.23.5 - dev: true - - /@babel/helpers@7.23.5: - resolution: {integrity: sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.5 - '@babel/types': 7.23.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/highlight@7.23.4: - resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 - dev: true - - /@babel/parser@7.23.5: - resolution: {integrity: sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.23.5 - dev: true - - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.5) - dev: true - - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.5): - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - dev: true - - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.5): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.5): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.5): - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.5): - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.5): - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.5): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.5): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.5): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.5): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.5): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.5): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.5): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.5): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.5): - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.5): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.5): - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-async-generator-functions@7.23.4(@babel/core@7.23.5): - resolution: {integrity: sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.5) - dev: true - - /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.5) - dev: true - - /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.5): - resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.5): - resolution: {integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.5) - dev: true - - /@babel/plugin-transform-classes@7.23.5(@babel/core@7.23.5): - resolution: {integrity: sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.5) - '@babel/helper-split-export-declaration': 7.22.6 - globals: 11.12.0 - dev: true - - /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/template': 7.22.15 - dev: true - - /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.5): - resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.5) - dev: true - - /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.5): - resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.5) - dev: true - - /@babel/plugin-transform-for-of@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.5): - resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.5) - dev: true - - /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.5): - resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.5) - dev: true - - /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - dev: true - - /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-identifier': 7.22.20 - dev: true - - /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.5): - resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.5) - dev: true - - /@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.5): - resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.5) - dev: true - - /@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.5): - resolution: {integrity: sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.5 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.5) - dev: true - - /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.5) - dev: true - - /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.5): - resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.5) - dev: true - - /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.5): - resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.5) - dev: true + cpp.js: + specifier: ^1.0.0-alpha.4 + version: 1.0.0-alpha.4 + cppjs-package-gdal: + specifier: ^1.0.0-alpha.4 + version: 1.0.0-alpha.4 - /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true +devDependencies: + browserify: + specifier: ^17.0.0 + version: 17.0.0 + chai: + specifier: ^4.3.10 + version: 4.5.0 + karma: + specifier: ^6.4.2 + version: 6.4.4 + karma-chai: + specifier: ^0.1.0 + version: 0.1.0(chai@4.5.0)(karma@6.4.4) + karma-chrome-launcher: + specifier: ^3.2.0 + version: 3.2.0 + karma-coverage: + specifier: ^2.2.1 + version: 2.2.1 + karma-firefox-launcher: + specifier: ^2.1.2 + version: 2.1.3 + karma-mocha: + specifier: ^2.0.1 + version: 2.0.1 + karma-phantomjs-launcher: + specifier: ^1.0.4 + version: 1.0.4(karma@6.4.4) + karma-sourcemap-loader: + specifier: ^0.4.0 + version: 0.4.0 + karma-webpack: + specifier: ^5.0.0 + version: 5.0.1(webpack@5.93.0) + mocha: + specifier: ^10.2.0 + version: 10.7.3 + mocha-loader: + specifier: ^5.1.5 + version: 5.1.5(mocha@10.7.3)(webpack@5.93.0) + xml-js: + specifier: ^1.6.11 + version: 1.6.11 - /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true +packages: - /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.5): - resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} dependencies: - '@babel/core': 7.23.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.5) + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 dev: true - /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} + /@babel/code-frame@7.24.7: + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 - /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} + /@babel/compat-data@7.25.2: + resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - regenerator-transform: 0.15.2 dev: true - /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} + /@babel/core@7.25.2: + resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-runtime@7.23.4(@babel/core@7.23.5): - resolution: {integrity: sha512-ITwqpb6V4btwUG0YJR82o2QvmWrLgDnx/p2A3CTPYGaRgULkDiC0DRA2C4jlRB9uXGUEfaSS/IGHfVW+ohzYDw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.5) - babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.5) - babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.5) + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.0 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helpers': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + convert-source-map: 2.0.0 + debug: 4.3.6(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} + /@babel/generator@7.25.0: + resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/types': 7.25.2 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 dev: true - /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} + /@babel/helper-compilation-targets@7.25.2: + resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/compat-data': 7.25.2 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.23.3 + lru-cache: 5.1.1 + semver: 6.3.1 dev: true - /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} + /@babel/helper-module-imports@7.24.7: + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color dev: true - /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} + /@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2): + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color dev: true - /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} + /@babel/helper-simple-access@7.24.7: + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color dev: true - /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} + /@babel/helper-string-parser@7.24.8: + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} + /@babel/helper-validator-identifier@7.24.7: + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} + /@babel/helper-validator-option@7.24.8: + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/preset-env@7.23.5(@babel/core@7.23.5): - resolution: {integrity: sha512-0d/uxVD6tFGWXGDSfyMD1p2otoaKmu6+GD+NfAx0tMaH+dxORnp7T9TaVQ6mKyya7iBtCIVxHjWT7MuzzM9z+A==} + /@babel/helpers@7.25.0: + resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.5 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.5) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.5) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.5) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.5) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-async-generator-functions': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-classes': 7.23.5(@babel/core@7.23.5) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-for-of': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.5) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.5) - babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.5) - babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.5) - babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.5) - core-js-compat: 3.33.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.5): - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/types': 7.23.5 - esutils: 2.0.3 + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 dev: true - /@babel/register@7.22.15(@babel/core@7.23.5): - resolution: {integrity: sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg==} + /@babel/highlight@7.24.7: + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - clone-deep: 4.0.1 - find-cache-dir: 2.1.0 - make-dir: 2.1.0 - pirates: 4.0.6 - source-map-support: 0.5.21 - dev: true - - /@babel/regjsgen@0.8.0: - resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - dev: true + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 - /@babel/runtime@7.23.5: - resolution: {integrity: sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==} - engines: {node: '>=6.9.0'} + /@babel/parser@7.25.3: + resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} + engines: {node: '>=6.0.0'} + hasBin: true dependencies: - regenerator-runtime: 0.14.0 + '@babel/types': 7.25.2 dev: true - /@babel/template@7.22.15: - resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + /@babel/template@7.25.0: + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.23.5 - '@babel/parser': 7.23.5 - '@babel/types': 7.23.5 + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 dev: true - /@babel/traverse@7.23.5: - resolution: {integrity: sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==} + /@babel/traverse@7.25.3: + resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.5 - '@babel/types': 7.23.5 - debug: 4.3.4(supports-color@8.1.1) + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 + debug: 4.3.6(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/types@7.23.5: - resolution: {integrity: sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==} + /@babel/types@7.25.2: + resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 dev: true @@ -1399,215 +234,85 @@ packages: engines: {node: '>=0.1.90'} dev: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.55.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.55.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@eslint-community/regexpp@4.10.0: - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true - - /@eslint/eslintrc@2.1.4: - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) - espree: 9.6.1 - globals: 13.23.0 - ignore: 5.3.0 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@eslint/js@8.55.0: - resolution: {integrity: sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@humanwhocodes/config-array@0.11.13: - resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 2.0.1 - debug: 4.3.4(supports-color@8.1.1) - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@humanwhocodes/module-importer@1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - dev: true - - /@humanwhocodes/object-schema@2.0.1: - resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} - dev: true - - /@istanbuljs/load-nyc-config@1.1.0: - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - dev: true + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: false /@istanbuljs/schema@0.1.3: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} dev: true - /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.20 + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 dev: true - /@jridgewell/resolve-uri@3.1.1: - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} dev: true - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} dev: true - /@jridgewell/source-map@0.3.5: - resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + /@jridgewell/source-map@0.3.6: + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - dev: true - - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 dev: true - /@jridgewell/trace-mapping@0.3.20: - resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true + /@jridgewell/sourcemap-codec@1.5.0: + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - /@jsdevtools/coverage-istanbul-loader@3.0.5: - resolution: {integrity: sha512-EUCPEkaRPvmHjWAAZkWMT7JDzpw7FKB00WTISaiXsbNOd5hCHg77XLA8sLYLFDo1zepYLo2w7GstN8YBqRXZfA==} + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} dependencies: - convert-source-map: 1.9.0 - istanbul-lib-instrument: 4.0.3 - loader-utils: 2.0.4 - merge-source-map: 1.1.0 - schema-utils: 2.7.1 - transitivePeerDependencies: - - supports-color + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 dev: true - /@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3: - resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==} + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} requiresBuild: true - dev: true + dev: false optional: true - /@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1: - resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} - dependencies: - eslint-scope: 5.1.1 - dev: true - - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: true - - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: true - - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - dev: true - - /@puppeteer/browsers@1.8.0: - resolution: {integrity: sha512-TkRHIV6k2D8OlUe8RtG+5jgOF/H98Myx0M6AOafC8DdNVOFiBSFa5cpRDtpm8LXOa9sVwe0+e6Q3FC56X/DZfg==} - engines: {node: '>=16.3.0'} - hasBin: true - dependencies: - debug: 4.3.4(supports-color@8.1.1) - extract-zip: 2.0.1 - progress: 2.0.3 - proxy-agent: 6.3.1 - tar-fs: 3.0.4 - unbzip2-stream: 1.4.3 - yargs: 17.7.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@rollup/plugin-babel@6.0.4(@babel/core@7.23.5)(rollup@4.6.1): - resolution: {integrity: sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@types/babel__core': ^7.1.9 - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - '@types/babel__core': - optional: true - rollup: - optional: true - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-module-imports': 7.22.15 - '@rollup/pluginutils': 5.1.0(rollup@4.6.1) - rollup: 4.6.1 - dev: true - - /@rollup/plugin-commonjs@25.0.7(rollup@4.6.1): - resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} - engines: {node: '>=14.0.0'} + /@rollup/plugin-commonjs@26.0.1(rollup@4.20.0): + resolution: {integrity: sha512-UnsKoZK6/aGIH6AdkptXhNvhaqftcjq3zZdT+LY5Ftms6JR06nADcDsYp5hTU9E2lbJUEOhdlY5J4DNTneM+jQ==} + engines: {node: '>=16.0.0 || 14 >= 14.17'} peerDependencies: rollup: ^2.68.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.6.1) + '@rollup/pluginutils': 5.1.0(rollup@4.20.0) commondir: 1.0.1 estree-walker: 2.0.2 - glob: 8.1.0 + glob: 10.4.5 is-reference: 1.2.1 - magic-string: 0.30.5 - rollup: 4.6.1 - dev: true + magic-string: 0.30.11 + rollup: 4.20.0 + dev: false - /@rollup/plugin-node-resolve@15.2.3(rollup@4.6.1): + /@rollup/plugin-node-resolve@15.2.3(rollup@4.20.0): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -1616,16 +321,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.6.1) + '@rollup/pluginutils': 5.1.0(rollup@4.20.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 - rollup: 4.6.1 - dev: true + rollup: 4.20.0 + dev: false - /@rollup/plugin-virtual@3.0.2(rollup@4.6.1): + /@rollup/plugin-virtual@3.0.2(rollup@4.20.0): resolution: {integrity: sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A==} engines: {node: '>=14.0.0'} peerDependencies: @@ -1634,10 +339,10 @@ packages: rollup: optional: true dependencies: - rollup: 4.6.1 - dev: true + rollup: 4.20.0 + dev: false - /@rollup/pluginutils@5.1.0(rollup@4.6.1): + /@rollup/pluginutils@5.1.0(rollup@4.20.0): resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -1649,111 +354,139 @@ packages: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 4.6.1 - dev: true + rollup: 4.20.0 + dev: false - /@rollup/rollup-android-arm-eabi@4.6.1: - resolution: {integrity: sha512-0WQ0ouLejaUCRsL93GD4uft3rOmB8qoQMU05Kb8CmMtMBe7XUDLAltxVZI1q6byNqEtU7N1ZX1Vw5lIpgulLQA==} + /@rollup/rollup-android-arm-eabi@4.20.0: + resolution: {integrity: sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==} cpu: [arm] os: [android] requiresBuild: true - dev: true + dev: false optional: true - /@rollup/rollup-android-arm64@4.6.1: - resolution: {integrity: sha512-1TKm25Rn20vr5aTGGZqo6E4mzPicCUD79k17EgTLAsXc1zysyi4xXKACfUbwyANEPAEIxkzwue6JZ+stYzWUTA==} + /@rollup/rollup-android-arm64@4.20.0: + resolution: {integrity: sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==} cpu: [arm64] os: [android] requiresBuild: true - dev: true + dev: false optional: true - /@rollup/rollup-darwin-arm64@4.6.1: - resolution: {integrity: sha512-cEXJQY/ZqMACb+nxzDeX9IPLAg7S94xouJJCNVE5BJM8JUEP4HeTF+ti3cmxWeSJo+5D+o8Tc0UAWUkfENdeyw==} + /@rollup/rollup-darwin-arm64@4.20.0: + resolution: {integrity: sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==} cpu: [arm64] os: [darwin] requiresBuild: true - dev: true + dev: false optional: true - /@rollup/rollup-darwin-x64@4.6.1: - resolution: {integrity: sha512-LoSU9Xu56isrkV2jLldcKspJ7sSXmZWkAxg7sW/RfF7GS4F5/v4EiqKSMCFbZtDu2Nc1gxxFdQdKwkKS4rwxNg==} + /@rollup/rollup-darwin-x64@4.20.0: + resolution: {integrity: sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==} cpu: [x64] os: [darwin] requiresBuild: true - dev: true + dev: false optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.6.1: - resolution: {integrity: sha512-EfI3hzYAy5vFNDqpXsNxXcgRDcFHUWSx5nnRSCKwXuQlI5J9dD84g2Usw81n3FLBNsGCegKGwwTVsSKK9cooSQ==} + /@rollup/rollup-linux-arm-gnueabihf@4.20.0: + resolution: {integrity: sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==} cpu: [arm] os: [linux] requiresBuild: true - dev: true + dev: false + optional: true + + /@rollup/rollup-linux-arm-musleabihf@4.20.0: + resolution: {integrity: sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false optional: true - /@rollup/rollup-linux-arm64-gnu@4.6.1: - resolution: {integrity: sha512-9lhc4UZstsegbNLhH0Zu6TqvDfmhGzuCWtcTFXY10VjLLUe4Mr0Ye2L3rrtHaDd/J5+tFMEuo5LTCSCMXWfUKw==} + /@rollup/rollup-linux-arm64-gnu@4.20.0: + resolution: {integrity: sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==} cpu: [arm64] os: [linux] requiresBuild: true - dev: true + dev: false optional: true - /@rollup/rollup-linux-arm64-musl@4.6.1: - resolution: {integrity: sha512-FfoOK1yP5ksX3wwZ4Zk1NgyGHZyuRhf99j64I5oEmirV8EFT7+OhUZEnP+x17lcP/QHJNWGsoJwrz4PJ9fBEXw==} + /@rollup/rollup-linux-arm64-musl@4.20.0: + resolution: {integrity: sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==} cpu: [arm64] os: [linux] requiresBuild: true - dev: true + dev: false + optional: true + + /@rollup/rollup-linux-powerpc64le-gnu@4.20.0: + resolution: {integrity: sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.20.0: + resolution: {integrity: sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: false optional: true - /@rollup/rollup-linux-x64-gnu@4.6.1: - resolution: {integrity: sha512-DNGZvZDO5YF7jN5fX8ZqmGLjZEXIJRdJEdTFMhiyXqyXubBa0WVLDWSNlQ5JR2PNgDbEV1VQowhVRUh+74D+RA==} + /@rollup/rollup-linux-s390x-gnu@4.20.0: + resolution: {integrity: sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-linux-x64-gnu@4.20.0: + resolution: {integrity: sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==} cpu: [x64] os: [linux] requiresBuild: true - dev: true + dev: false optional: true - /@rollup/rollup-linux-x64-musl@4.6.1: - resolution: {integrity: sha512-RkJVNVRM+piYy87HrKmhbexCHg3A6Z6MU0W9GHnJwBQNBeyhCJG9KDce4SAMdicQnpURggSvtbGo9xAWOfSvIQ==} + /@rollup/rollup-linux-x64-musl@4.20.0: + resolution: {integrity: sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==} cpu: [x64] os: [linux] requiresBuild: true - dev: true + dev: false optional: true - /@rollup/rollup-win32-arm64-msvc@4.6.1: - resolution: {integrity: sha512-v2FVT6xfnnmTe3W9bJXl6r5KwJglMK/iRlkKiIFfO6ysKs0rDgz7Cwwf3tjldxQUrHL9INT/1r4VA0n9L/F1vQ==} + /@rollup/rollup-win32-arm64-msvc@4.20.0: + resolution: {integrity: sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==} cpu: [arm64] os: [win32] requiresBuild: true - dev: true + dev: false optional: true - /@rollup/rollup-win32-ia32-msvc@4.6.1: - resolution: {integrity: sha512-YEeOjxRyEjqcWphH9dyLbzgkF8wZSKAKUkldRY6dgNR5oKs2LZazqGB41cWJ4Iqqcy9/zqYgmzBkRoVz3Q9MLw==} + /@rollup/rollup-win32-ia32-msvc@4.20.0: + resolution: {integrity: sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==} cpu: [ia32] os: [win32] requiresBuild: true - dev: true + dev: false optional: true - /@rollup/rollup-win32-x64-msvc@4.6.1: - resolution: {integrity: sha512-0zfTlFAIhgz8V2G8STq8toAjsYYA6eci1hnXuyOTUFnymrtJwnS6uGKiv3v5UrPZkBlamLvrLV2iiaeqCKzb0A==} + /@rollup/rollup-win32-x64-msvc@4.20.0: + resolution: {integrity: sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==} cpu: [x64] os: [win32] requiresBuild: true - dev: true + dev: false optional: true - /@socket.io/component-emitter@3.1.0: - resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} - dev: true - - /@tootallnate/quickjs-emscripten@0.23.0: - resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} + /@socket.io/component-emitter@3.1.2: + resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} dev: true /@types/cookie@0.4.1: @@ -1763,22 +496,18 @@ packages: /@types/cors@2.8.17: resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} dependencies: - '@types/node': 20.10.2 - dev: true - - /@types/detect-node@2.0.2: - resolution: {integrity: sha512-2r16DIvQ3dLcRHBPzbdlPsqUWvNaIE7g3fPlGcoA5IF0Nvv7gaONWleB2rhEmggvj/P5VvxseWchR2noncrgGg==} + '@types/node': 22.4.0 dev: true /@types/eslint-scope@3.7.7: resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} dependencies: - '@types/eslint': 8.44.8 + '@types/eslint': 9.6.0 '@types/estree': 1.0.5 dev: true - /@types/eslint@8.44.8: - resolution: {integrity: sha512-4K8GavROwhrYl2QXDXm0Rv9epkA8GBFu0EI+XrrnnuCl7u8CWBRusX7fXJfanhZTDWSAL24gDI/UqXyUM0Injw==} + /@types/eslint@9.6.0: + resolution: {integrity: sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==} dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 @@ -1786,59 +515,23 @@ packages: /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - dev: true - - /@types/html-minifier-terser@6.1.0: - resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} - dev: true /@types/json-schema@7.0.15: - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - dev: true - - /@types/json5@0.0.29: - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - dev: true - - /@types/linkify-it@3.0.5: - resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==} - dev: true - - /@types/markdown-it@12.2.3: - resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==} - dependencies: - '@types/linkify-it': 3.0.5 - '@types/mdurl': 1.0.5 - dev: true - - /@types/mdurl@1.0.5: - resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==} + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} dev: true - /@types/node@20.10.2: - resolution: {integrity: sha512-37MXfxkb0vuIlRKHNxwCkb60PNBpR94u4efQuN4JgIAm66zfCDXGSAFCef9XUWFovX2R1ok6Z7MHhtdVXXkkIw==} + /@types/node@22.4.0: + resolution: {integrity: sha512-49AbMDwYUz7EXxKU/r7mXOsxwFr4BYbvB7tWYxVuLdb2ibd30ijjXINSMAHiEEZk5PCRBmW1gUeisn2VMKt3cQ==} dependencies: - undici-types: 5.26.5 + undici-types: 6.19.6 dev: true /@types/resolve@1.20.2: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - dev: true - - /@types/yauzl@2.10.3: - resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - requiresBuild: true - dependencies: - '@types/node': 20.10.2 - dev: true - optional: true - - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - dev: true + dev: false - /@webassemblyjs/ast@1.11.6: - resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + /@webassemblyjs/ast@1.12.1: + resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} dependencies: '@webassemblyjs/helper-numbers': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 @@ -1852,8 +545,8 @@ packages: resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} dev: true - /@webassemblyjs/helper-buffer@1.11.6: - resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + /@webassemblyjs/helper-buffer@1.12.1: + resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} dev: true /@webassemblyjs/helper-numbers@1.11.6: @@ -1868,13 +561,13 @@ packages: resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} dev: true - /@webassemblyjs/helper-wasm-section@1.11.6: - resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + /@webassemblyjs/helper-wasm-section@1.12.1: + resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-gen': 1.12.1 dev: true /@webassemblyjs/ieee754@1.11.6: @@ -1893,42 +586,42 @@ packages: resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} dev: true - /@webassemblyjs/wasm-edit@1.11.6: - resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + /@webassemblyjs/wasm-edit@1.12.1: + resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/helper-wasm-section': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-opt': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - '@webassemblyjs/wast-printer': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-opt': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + '@webassemblyjs/wast-printer': 1.12.1 dev: true - /@webassemblyjs/wasm-gen@1.11.6: - resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + /@webassemblyjs/wasm-gen@1.12.1: + resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} dependencies: - '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 dev: true - /@webassemblyjs/wasm-opt@1.11.6: - resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + /@webassemblyjs/wasm-opt@1.12.1: + resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 dev: true - /@webassemblyjs/wasm-parser@1.11.6: - resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + /@webassemblyjs/wasm-parser@1.12.1: + resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} dependencies: - '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/helper-api-error': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/ieee754': 1.11.6 @@ -1936,10 +629,10 @@ packages: '@webassemblyjs/utf8': 1.11.6 dev: true - /@webassemblyjs/wast-printer@1.11.6: - resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + /@webassemblyjs/wast-printer@1.12.1: + resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} dependencies: - '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 dev: true @@ -1967,20 +660,12 @@ packages: negotiator: 0.6.3 dev: true - /acorn-import-assertions@1.9.0(acorn@8.11.2): - resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + /acorn-import-attributes@1.9.5(acorn@8.12.1): + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} peerDependencies: acorn: ^8 dependencies: - acorn: 8.11.2 - dev: true - - /acorn-jsx@5.3.2(acorn@8.11.2): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.11.2 + acorn: 8.12.1 dev: true /acorn-node@1.8.2: @@ -2002,40 +687,12 @@ packages: hasBin: true dev: true - /acorn@8.11.2: - resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} + /acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /agent-base@7.1.0: - resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} - engines: {node: '>= 14'} - dependencies: - debug: 4.3.4(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - dev: true - - /aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - dev: true - - /ajv-formats@2.1.1(ajv@8.12.0): - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - dependencies: - ajv: 8.12.0 - dev: true - /ajv-keywords@3.5.2(ajv@6.12.6): resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} peerDependencies: @@ -2044,15 +701,6 @@ packages: ajv: 6.12.6 dev: true - /ajv-keywords@5.1.0(ajv@8.12.0): - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} - peerDependencies: - ajv: ^8.8.2 - dependencies: - ajv: 8.12.0 - fast-deep-equal: 3.1.3 - dev: true - /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -2062,38 +710,36 @@ packages: uri-js: 4.4.1 dev: true - /ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - dev: true - - /ansi-colors@4.1.1: - resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} + /ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} dev: true /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - dev: true + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: false /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} dependencies: color-convert: 1.9.3 - dev: true /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - dev: true + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: false /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} @@ -2103,96 +749,16 @@ packages: picomatch: 2.3.1 dev: true - /append-transform@2.0.0: - resolution: {integrity: sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==} - engines: {node: '>=8'} - dependencies: - default-require-extensions: 3.0.1 - dev: true - - /archy@1.0.0: - resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} - dev: true - - /argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - dependencies: - sprintf-js: 1.0.3 - dev: true - /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true - /array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} - dependencies: - call-bind: 1.0.5 - is-array-buffer: 3.0.2 - dev: true - - /array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - is-string: 1.0.7 - dev: true - - /array.prototype.findlastindex@1.2.3: - resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.2 - dev: true - - /array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - es-shim-unscopables: 1.0.2 - dev: true - - /array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - es-shim-unscopables: 1.0.2 - dev: true - - /arraybuffer.prototype.slice@1.0.2: - resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - is-array-buffer: 3.0.2 - is-shared-array-buffer: 1.0.2 - dev: true - - /asn1.js@5.4.1: - resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} + /asn1.js@4.10.1: + resolution: {integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==} dependencies: bn.js: 4.12.0 inherits: 2.0.4 minimalistic-assert: 1.0.1 - safer-buffer: 2.1.2 dev: true /asn1@0.2.6: @@ -2217,107 +783,27 @@ packages: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true - /ast-types@0.13.4: - resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} - engines: {node: '>=4'} - dependencies: - tslib: 2.6.2 - dev: true - - /async@2.6.4: - resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} - dependencies: - lodash: 4.17.21 - dev: true - /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: true - /available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} + dependencies: + possible-typed-array-names: 1.0.0 dev: true /aws-sign2@0.7.0: resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} dev: true - /aws4@1.12.0: - resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} - dev: true - - /b4a@1.6.4: - resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} - dev: true - - /babel-loader@9.1.3(@babel/core@7.23.5)(webpack@5.89.0): - resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} - engines: {node: '>= 14.15.0'} - peerDependencies: - '@babel/core': ^7.12.0 - webpack: '>=5' - dependencies: - '@babel/core': 7.23.5 - find-cache-dir: 4.0.0 - schema-utils: 4.2.0 - webpack: 5.89.0 - dev: true - - /babel-plugin-polyfill-corejs2@0.4.6(@babel/core@7.23.5): - resolution: {integrity: sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.5 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.5) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-polyfill-corejs3@0.8.6(@babel/core@7.23.5): - resolution: {integrity: sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.5) - core-js-compat: 3.33.3 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-polyfill-regenerator@0.5.3(@babel/core@7.23.5): - resolution: {integrity: sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.5) - transitivePeerDependencies: - - supports-color - dev: true - - /babel-polyfill@6.26.0: - resolution: {integrity: sha512-F2rZGQnAdaHWQ8YAoeRbukc7HS9QgdgeyJ0rQDd485v9opwuPvjpPFcOOT/WmkKTdgy9ESgSPXDcTNpzrGr6iQ==} - dependencies: - babel-runtime: 6.26.0 - core-js: 2.6.12 - regenerator-runtime: 0.10.5 - dev: true - - /babel-runtime@6.26.0: - resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} - dependencies: - core-js: 2.6.12 - regenerator-runtime: 0.11.1 + /aws4@1.13.1: + resolution: {integrity: sha512-u5w79Rd7SU4JaIlA/zFqG+gOiuq25q5VLyZ8E+ijJeILuTxVzZgp2CaGw/UTw6pXYN9XMO9yiqj/nEHmhTG5CA==} dev: true /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -2328,18 +814,6 @@ packages: engines: {node: ^4.5.0 || >= 5.9} dev: true - /basic-auth@2.0.1: - resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} - engines: {node: '>= 0.8'} - dependencies: - safe-buffer: 5.1.2 - dev: true - - /basic-ftp@5.0.3: - resolution: {integrity: sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g==} - engines: {node: '>=10.0.0'} - dev: true - /bcrypt-pbkdf@1.0.2: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} dependencies: @@ -2350,15 +824,11 @@ packages: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} dev: true - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} dev: true - /bluebird@3.7.2: - resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - dev: true - /bn.js@4.12.0: resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} dev: true @@ -2387,10 +857,6 @@ packages: - supports-color dev: true - /boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - dev: true - /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -2402,13 +868,12 @@ packages: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 - dev: true - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + /braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} dependencies: - fill-range: 7.0.1 + fill-range: 7.1.1 dev: true /brorand@1.1.0: @@ -2472,18 +937,19 @@ packages: randombytes: 2.1.0 dev: true - /browserify-sign@4.2.2: - resolution: {integrity: sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==} - engines: {node: '>= 4'} + /browserify-sign@4.2.3: + resolution: {integrity: sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==} + engines: {node: '>= 0.12'} dependencies: bn.js: 5.2.1 browserify-rsa: 4.1.0 create-hash: 1.2.0 create-hmac: 1.1.7 - elliptic: 6.5.4 + elliptic: 6.5.7 + hash-base: 3.0.4 inherits: 2.0.4 - parse-asn1: 5.1.6 - readable-stream: 3.6.2 + parse-asn1: 5.1.7 + readable-stream: 2.3.8 safe-buffer: 5.2.1 dev: true @@ -2542,21 +1008,21 @@ packages: through2: 2.0.5 timers-browserify: 1.4.2 tty-browserify: 0.0.1 - url: 0.11.3 + url: 0.11.4 util: 0.12.5 vm-browserify: 1.1.2 xtend: 4.0.2 dev: true - /browserslist@4.22.1: - resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==} + /browserslist@4.23.3: + resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001565 - electron-to-chromium: 1.4.601 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.22.1) + caniuse-lite: 1.0.30001651 + electron-to-chromium: 1.5.10 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.23.3) dev: true /buffer-crc32@0.2.13: @@ -2578,17 +1044,10 @@ packages: ieee754: 1.2.1 dev: true - /buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - dev: true - /builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} - dev: true + dev: false /builtin-status-codes@3.0.0: resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} @@ -2603,39 +1062,15 @@ packages: resolution: {integrity: sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==} dev: true - /caching-transform@4.0.0: - resolution: {integrity: sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==} - engines: {node: '>=8'} - dependencies: - hasha: 5.2.2 - make-dir: 3.1.0 - package-hash: 4.0.0 - write-file-atomic: 3.0.3 - dev: true - - /call-bind@1.0.5: - resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.2 - set-function-length: 1.1.1 - dev: true - - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: true - - /camel-case@4.1.2: - resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - dependencies: - pascal-case: 3.1.2 - tslib: 2.6.2 - dev: true - - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 dev: true /camelcase@6.3.0: @@ -2643,32 +1078,25 @@ packages: engines: {node: '>=10'} dev: true - /caniuse-lite@1.0.30001565: - resolution: {integrity: sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w==} + /caniuse-lite@1.0.30001651: + resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==} dev: true /caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} dev: true - /catharsis@0.9.0: - resolution: {integrity: sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==} - engines: {node: '>= 10'} - dependencies: - lodash: 4.17.21 - dev: true - - /chai@4.3.10: - resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} + /chai@4.5.0: + resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} engines: {node: '>=4'} dependencies: assertion-error: 1.1.0 check-error: 1.0.3 - deep-eql: 4.1.3 + deep-eql: 4.1.4 get-func-name: 2.0.2 loupe: 2.3.7 pathval: 1.1.1 - type-detect: 4.0.8 + type-detect: 4.1.0 dev: true /chalk@2.4.2: @@ -2678,7 +1106,6 @@ packages: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - dev: true /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -2694,12 +1121,12 @@ packages: get-func-name: 2.0.2 dev: true - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} dependencies: anymatch: 3.1.3 - braces: 3.0.2 + braces: 3.0.3 glob-parent: 5.1.2 is-binary-path: 2.1.0 is-glob: 4.0.3 @@ -2709,21 +1136,11 @@ packages: fsevents: 2.3.3 dev: true - /chrome-trace-event@1.0.3: - resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + /chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} dev: true - /chromium-bidi@0.4.33(devtools-protocol@0.0.1203626): - resolution: {integrity: sha512-IxoFM5WGQOIAd95qrSXzJUv4eXIrh+RvU3rwwqIiwYuvfE7U/Llj4fejbsJnjJMUYCuGtVQsY2gv7oGl4aTNSQ==} - peerDependencies: - devtools-protocol: '*' - dependencies: - devtools-protocol: 0.0.1203626 - mitt: 3.0.1 - urlpattern-polyfill: 9.0.0 - dev: true - /cipher-base@1.0.4: resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} dependencies: @@ -2731,26 +1148,6 @@ packages: safe-buffer: 5.2.1 dev: true - /clean-css@5.3.3: - resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} - engines: {node: '>= 10.0'} - dependencies: - source-map: 0.6.1 - dev: true - - /clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - dev: true - - /cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - dev: true - /cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: @@ -2759,50 +1156,28 @@ packages: wrap-ansi: 7.0.0 dev: true - /cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true - - /clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} - dependencies: - is-plain-object: 2.0.4 - kind-of: 6.0.3 - shallow-clone: 3.0.1 - dev: true - /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 - dev: true /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - dev: true /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: true /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: true /combine-source-map@0.8.0: resolution: {integrity: sha512-UlxQ9Vw0b/Bt/KYwCFqdEwsQ1eL8d1gibiFb7lxQJFdvTgc2hIZi6ugsg+kyhzhPV+QEpUiEIwInIAIrgoEkrg==} dependencies: convert-source-map: 1.1.3 - inline-source-map: 0.6.2 + inline-source-map: 0.6.3 lodash.memoize: 3.0.4 source-map: 0.5.7 dev: true @@ -2818,23 +1193,14 @@ packages: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: true - /commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - dev: true - - /commander@8.3.0: - resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} - engines: {node: '>= 12'} - dev: true - - /common-path-prefix@3.0.0: - resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} - dev: true + /commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + dev: false /commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - dev: true + dev: false /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -2850,10 +1216,6 @@ packages: typedarray: 0.0.6 dev: true - /confusing-browser-globals@1.0.11: - resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} - dev: true - /connect@3.7.0: resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} engines: {node: '>= 0.10.0'} @@ -2883,10 +1245,6 @@ packages: resolution: {integrity: sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg==} dev: true - /convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: true - /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true @@ -2896,18 +1254,6 @@ packages: engines: {node: '>= 0.6'} dev: true - /core-js-compat@3.33.3: - resolution: {integrity: sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow==} - dependencies: - browserslist: 4.22.1 - dev: true - - /core-js@2.6.12: - resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} - deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. - requiresBuild: true - dev: true - /core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} dev: true @@ -2916,60 +1262,131 @@ packages: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /cors@2.8.5: - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} - engines: {node: '>= 0.10'} + /cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + dev: true + + /cpp.js@1.0.0-alpha.4: + resolution: {integrity: sha512-v0/G/hbTFV1CSWAQlgfON/s919ZTcD6DRHoJg7rdu2uV4rgjhiofCDGFy4890bobA2KcAl3QUNyZauR7DwvBHg==} + hasBin: true + dependencies: + '@rollup/plugin-commonjs': 26.0.1(rollup@4.20.0) + '@rollup/plugin-node-resolve': 15.2.3(rollup@4.20.0) + '@rollup/plugin-virtual': 3.0.2(rollup@4.20.0) + commander: 9.5.0 + glob: 8.1.0 + rollup: 4.20.0 + rollup-plugin-uglify: 6.0.4(rollup@4.20.0) + dev: false + + /cppjs-package-expat@1.0.0-alpha.3: + resolution: {integrity: sha512-S4q4jr3g1Z173twoV2f9ojVLYMo8TWHkI5UB/7o9SQ0YNKMvnn3xTatz5N2MFAkvN4W65hGJ+q349B0kYs3O2w==} + requiresBuild: true + dependencies: + cpp.js: 1.0.0-alpha.4 + dev: false + + /cppjs-package-gdal@1.0.0-alpha.4: + resolution: {integrity: sha512-Awh8o55oX99z0yUjyfI6CA3eyMtdL7nQKlgLsSFR7SqPW3bVrQjnu3h6V2YvjkAq+Aq1aL9h2JEGVlGSY7Mvng==} + requiresBuild: true + dependencies: + cpp.js: 1.0.0-alpha.4 + cppjs-package-expat: 1.0.0-alpha.3 + cppjs-package-geos: 1.0.0-alpha.3 + cppjs-package-geotiff: 1.0.0-alpha.3 + cppjs-package-iconv: 1.0.0-alpha.3 + cppjs-package-proj: 1.0.0-alpha.3 + cppjs-package-spatialite: 1.0.0-alpha.3 + cppjs-package-sqlite3: 1.0.0-alpha.3 + cppjs-package-tiff: 1.0.0-alpha.3 + cppjs-package-webp: 1.0.0-alpha.3 + cppjs-package-zlib: 1.0.0-alpha.3 + dev: false + + /cppjs-package-geos@1.0.0-alpha.3: + resolution: {integrity: sha512-fl1je+8lV957rR8hEM53Gw0cVTBDA8BqyXvfo+cCSBQpybJY0inIkDwWtj2WopLcIbcSyyHx/PC9wRn1lecW4Q==} + requiresBuild: true + dependencies: + cpp.js: 1.0.0-alpha.4 + dev: false + + /cppjs-package-geotiff@1.0.0-alpha.3: + resolution: {integrity: sha512-Cxl5+HZ6Vfq0BTB/E9LCfBxBNVPZi13vBjc+P985C5DBoKoLAdLy8mbLtEAXPaseLurq+b2G7ovyOupYlZ9yZw==} + requiresBuild: true + dependencies: + cpp.js: 1.0.0-alpha.4 + cppjs-package-proj: 1.0.0-alpha.3 + cppjs-package-tiff: 1.0.0-alpha.3 + cppjs-package-zlib: 1.0.0-alpha.3 + dev: false + + /cppjs-package-iconv@1.0.0-alpha.3: + resolution: {integrity: sha512-bRv4HEb+dRgTosEJnDkkBs31Xe/3uXU3Gffa+8AY3K2k1SdnBOqtuMGVRfQPLhOdXMsXl1I26i+/P5Vexb9acg==} + requiresBuild: true + dependencies: + cpp.js: 1.0.0-alpha.4 + dev: false + + /cppjs-package-proj@1.0.0-alpha.3: + resolution: {integrity: sha512-pyvHyZi23kOlL8w6VpafMh+zF7B+XtxYbOVVqmi1Q1gCBWuVhkyzN/TC0Tstm33TZ1Ba7Nmv/mg7cHsYSsRySA==} + requiresBuild: true + dependencies: + cpp.js: 1.0.0-alpha.4 + cppjs-package-sqlite3: 1.0.0-alpha.3 + cppjs-package-tiff: 1.0.0-alpha.3 + dev: false + + /cppjs-package-spatialite@1.0.0-alpha.3: + resolution: {integrity: sha512-f68KndJ2i1uLihgvhUH3A5puhcYLcbanPiiLEEJi5jJfoc2QYONr0hbLx2bbgf7vAW84tZcdq79jfbx/oCiT0Q==} + requiresBuild: true dependencies: - object-assign: 4.1.1 - vary: 1.1.2 - dev: true + cpp.js: 1.0.0-alpha.4 + cppjs-package-geos: 1.0.0-alpha.3 + cppjs-package-iconv: 1.0.0-alpha.3 + cppjs-package-proj: 1.0.0-alpha.3 + cppjs-package-sqlite3: 1.0.0-alpha.3 + cppjs-package-zlib: 1.0.0-alpha.3 + dev: false - /corser@2.0.1: - resolution: {integrity: sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==} - engines: {node: '>= 0.4.0'} - dev: true + /cppjs-package-sqlite3@1.0.0-alpha.3: + resolution: {integrity: sha512-zuetJGnUzwXeZDr5A+Qm4ZpG8FcjgRow5+uTIxfgmf6l4TDuVteQSKeUYA1HqGGL6tdV+dKD/bkAkjQNPyhELg==} + requiresBuild: true + dependencies: + cpp.js: 1.0.0-alpha.4 + cppjs-package-zlib: 1.0.0-alpha.3 + dev: false - /cosmiconfig@8.3.6: - resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true + /cppjs-package-tiff@1.0.0-alpha.3: + resolution: {integrity: sha512-OB/owHwrXgl53qMCx8lwgdxLcGE5a3zywo0q3YSK8cOvUjN6quhFYuJevwyWHZhqQcIGklOusiqdVMaNjCY7Yw==} + requiresBuild: true dependencies: - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 - dev: true + cpp.js: 1.0.0-alpha.4 + cppjs-package-zlib: 1.0.0-alpha.3 + dev: false - /coverage-istanbul-loader@3.0.5: - resolution: {integrity: sha512-xsw2phF0VNqUPk47V/vHXkdcTyl0tkMSmaZfLrTOhoPhPMXFelNju7utl5s7I93KXzipqDEK0YwofQSSflPz8A==} - engines: {node: '>=10'} + /cppjs-package-webp@1.0.0-alpha.3: + resolution: {integrity: sha512-5mBM1eOR56VT7jUoFONSw/fFqjieN0MOIcdC+pE8f3PS/MtWHB12BstoH1o4nLSfhUe3Lam2I1swAb5EWcH2QA==} + requiresBuild: true dependencies: - '@jsdevtools/coverage-istanbul-loader': 3.0.5 - transitivePeerDependencies: - - supports-color - dev: true + cpp.js: 1.0.0-alpha.4 + dev: false - /coveralls@3.1.1: - resolution: {integrity: sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww==} - engines: {node: '>=6'} - hasBin: true + /cppjs-package-zlib@1.0.0-alpha.3: + resolution: {integrity: sha512-PrWGNQAwnu4oAjXpWJZf0J/Xjoq8MJDwWmX5aEjgNIpT3Y4/pOdNpXaVyHmFikvgD2IxPDQLWJuXIlw92+WPlQ==} + requiresBuild: true dependencies: - js-yaml: 3.14.1 - lcov-parse: 1.0.0 - log-driver: 1.2.7 - minimist: 1.2.8 - request: 2.88.2 - dev: true + cpp.js: 1.0.0-alpha.4 + dev: false /create-ecdh@4.0.4: resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} dependencies: bn.js: 4.12.0 - elliptic: 6.5.4 + elliptic: 6.5.7 dev: true /create-hash@1.2.0: @@ -2993,14 +1410,6 @@ packages: sha.js: 2.4.11 dev: true - /cross-fetch@4.0.0: - resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} - dependencies: - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding - dev: true - /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -3008,13 +1417,13 @@ packages: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - dev: true + dev: false /crypto-browserify@3.12.0: resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} dependencies: browserify-cipher: 1.0.1 - browserify-sign: 4.2.2 + browserify-sign: 4.2.3 create-ecdh: 4.0.4 create-hash: 1.2.0 create-hmac: 1.1.7 @@ -3026,38 +1435,23 @@ packages: randomfill: 1.0.4 dev: true - /css-loader@5.2.7(webpack@5.89.0): + /css-loader@5.2.7(webpack@5.93.0): resolution: {integrity: sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==} engines: {node: '>= 10.13.0'} peerDependencies: webpack: ^4.27.0 || ^5.0.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.32) + icss-utils: 5.1.0(postcss@8.4.41) loader-utils: 2.0.4 - postcss: 8.4.32 - postcss-modules-extract-imports: 3.0.0(postcss@8.4.32) - postcss-modules-local-by-default: 4.0.3(postcss@8.4.32) - postcss-modules-scope: 3.0.0(postcss@8.4.32) - postcss-modules-values: 4.0.0(postcss@8.4.32) + postcss: 8.4.41 + postcss-modules-extract-imports: 3.1.0(postcss@8.4.41) + postcss-modules-local-by-default: 4.0.5(postcss@8.4.41) + postcss-modules-scope: 3.2.0(postcss@8.4.41) + postcss-modules-values: 4.0.0(postcss@8.4.41) postcss-value-parser: 4.2.0 schema-utils: 3.3.0 - semver: 7.5.4 - webpack: 5.89.0 - dev: true - - /css-select@4.3.0: - resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 4.3.1 - domutils: 2.8.0 - nth-check: 2.1.1 - dev: true - - /css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} + semver: 7.6.3 + webpack: 5.93.0 dev: true /cssesc@3.0.0: @@ -3081,11 +1475,6 @@ packages: assert-plus: 1.0.0 dev: true - /data-uri-to-buffer@6.0.1: - resolution: {integrity: sha512-MZd3VlchQkp8rdend6vrx7MmVDJzSNTBvghvKjirLkD+WTChA3KUf0jkE68Q4UyctNqI11zZO9/x2Yx+ub5Cvg==} - engines: {node: '>= 14'} - dev: true - /date-format@4.0.14: resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==} engines: {node: '>=4.0'} @@ -3102,19 +1491,8 @@ packages: ms: 2.0.0 dev: true - /debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - dev: true - - /debug@4.3.4(supports-color@8.1.1): - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + /debug@4.3.6(supports-color@8.1.1): + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -3126,54 +1504,38 @@ packages: supports-color: 8.1.1 dev: true - /decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - dev: true - /decamelize@4.0.0: resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} engines: {node: '>=10'} dev: true - /deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + /deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} engines: {node: '>=6'} dependencies: - type-detect: 4.0.8 - dev: true - - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + type-detect: 4.1.0 dev: true /deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - dev: true - - /default-require-extensions@3.0.1: - resolution: {integrity: sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==} - engines: {node: '>=8'} - dependencies: - strip-bom: 4.0.0 - dev: true + dev: false - /define-data-property@1.1.1: - resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.2 + es-define-property: 1.0.0 + es-errors: 1.3.0 gopd: 1.0.1 - has-property-descriptors: 1.0.1 dev: true /define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 - has-property-descriptors: 1.0.1 + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 object-keys: 1.1.1 dev: true @@ -3181,15 +1543,6 @@ packages: resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} dev: true - /degenerator@5.0.1: - resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} - engines: {node: '>= 14'} - dependencies: - ast-types: 0.13.4 - escodegen: 2.1.0 - esprima: 4.0.1 - dev: true - /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -3222,10 +1575,6 @@ packages: engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dev: true - /detect-node@2.1.0: - resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - dev: false - /detective@5.2.1: resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} engines: {node: '>=0.8.0'} @@ -3236,16 +1585,12 @@ packages: minimist: 1.2.8 dev: true - /devtools-protocol@0.0.1203626: - resolution: {integrity: sha512-nEzHZteIUZfGCZtTiS1fRpC8UZmsfD1SiyPvaUNvS13dvKf666OAm8YTi0+Ca3n1nLEyu49Cy4+dPWpaHFJk9g==} - dev: true - /di@0.0.1: resolution: {integrity: sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==} dev: true - /diff@5.0.0: - resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} + /diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} engines: {node: '>=0.3.1'} dev: true @@ -3257,80 +1602,30 @@ packages: randombytes: 2.1.0 dev: true - /doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - dependencies: - esutils: 2.0.3 - dev: true - - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dependencies: - esutils: 2.0.3 - dev: true - - /dom-converter@0.2.0: - resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} - dependencies: - utila: 0.4.0 - dev: true - /dom-serialize@2.2.1: resolution: {integrity: sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==} dependencies: custom-event: 1.0.1 - ent: 2.2.0 + ent: 2.2.1 extend: 3.0.2 void-elements: 2.0.1 dev: true - /dom-serializer@1.4.1: - resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - entities: 2.2.0 - dev: true - /domain-browser@1.2.0: resolution: {integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==} engines: {node: '>=0.4', npm: '>=1.2'} dev: true - /domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - dev: true - - /domhandler@4.3.1: - resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} - engines: {node: '>= 4'} - dependencies: - domelementtype: 2.3.0 - dev: true - - /domutils@2.8.0: - resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - dependencies: - dom-serializer: 1.4.1 - domelementtype: 2.3.0 - domhandler: 4.3.1 - dev: true - - /dot-case@3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - dependencies: - no-case: 3.0.4 - tslib: 2.6.2 - dev: true - /duplexer2@0.1.4: resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} dependencies: readable-stream: 2.3.8 dev: true + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: false + /ecc-jsbn@0.1.2: resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} dependencies: @@ -3342,12 +1637,12 @@ packages: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: true - /electron-to-chromium@1.4.601: - resolution: {integrity: sha512-SpwUMDWe9tQu8JX5QCO1+p/hChAi9AE9UpoC3rcHVc+gdCGlbT3SGb5I1klgb952HRIyvt9wZhSz9bNBYz9swA==} + /electron-to-chromium@1.5.10: + resolution: {integrity: sha512-C3RDERDjrNW262GCRvpoer3a0Ksd66CtgDLxMHhzShQ8fhL4kwnpVXsJPAKg9xJjIROXUbLBrvtOzVAjALMIWA==} dev: true - /elliptic@6.5.4: - resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + /elliptic@6.5.7: + resolution: {integrity: sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==} dependencies: bn.js: 4.12.0 brorand: 1.1.0 @@ -3360,7 +1655,10 @@ packages: /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: false /emojis-list@3.0.0: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} @@ -3372,146 +1670,68 @@ packages: engines: {node: '>= 0.8'} dev: true - /end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - dependencies: - once: 1.4.0 - dev: true - - /engine.io-parser@5.2.1: - resolution: {integrity: sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==} + /engine.io-parser@5.2.3: + resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} engines: {node: '>=10.0.0'} dev: true - /engine.io@6.5.4: - resolution: {integrity: sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==} + /engine.io@6.5.5: + resolution: {integrity: sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==} engines: {node: '>=10.2.0'} dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 20.10.2 + '@types/node': 22.4.0 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.4.2 cors: 2.8.5 - debug: 4.3.4(supports-color@8.1.1) - engine.io-parser: 5.2.1 - ws: 8.11.0 + debug: 4.3.6(supports-color@8.1.1) + engine.io-parser: 5.2.3 + ws: 8.17.1 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate dev: true - /enhanced-resolve@5.15.0: - resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + /enhanced-resolve@5.17.1: + resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 dev: true - /ent@2.2.0: - resolution: {integrity: sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==} - dev: true - - /entities@2.1.0: - resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==} - dev: true - - /entities@2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - dev: true - - /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - dependencies: - is-arrayish: 0.2.1 - dev: true - - /es-abstract@1.22.3: - resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.0 - arraybuffer.prototype.slice: 1.0.2 - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 - es-set-tostringtag: 2.0.2 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.2 - get-symbol-description: 1.0.0 - globalthis: 1.0.3 - gopd: 1.0.1 - has-property-descriptors: 1.0.1 - has-proto: 1.0.1 - has-symbols: 1.0.3 - hasown: 2.0.0 - internal-slot: 1.0.6 - is-array-buffer: 3.0.2 - is-callable: 1.2.7 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-typed-array: 1.1.12 - is-weakref: 1.0.2 - object-inspect: 1.13.1 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.1 - safe-array-concat: 1.0.1 - safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 - string.prototype.trimstart: 1.0.7 - typed-array-buffer: 1.0.0 - typed-array-byte-length: 1.0.0 - typed-array-byte-offset: 1.0.0 - typed-array-length: 1.0.4 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.13 - dev: true - - /es-module-lexer@1.4.1: - resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} - dev: true - - /es-set-tostringtag@2.0.2: - resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} + /ent@2.2.1: + resolution: {integrity: sha512-QHuXVeZx9d+tIQAz/XztU0ZwZf2Agg9CcXcgE1rurqvdBeDBrpSwjl8/6XUqMg7tw2Y7uAdKb2sRv+bSEFqQ5A==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.2 - has-tostringtag: 1.0.0 - hasown: 2.0.0 + punycode: 1.4.1 dev: true - /es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} dependencies: - hasown: 2.0.0 + get-intrinsic: 1.2.4 dev: true - /es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 dev: true - /es6-error@4.1.1: - resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} + /es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} dev: true /es6-promise@4.2.8: resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} dev: true - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} dev: true @@ -3522,128 +1742,12 @@ packages: /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - dev: true - - /escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - dev: true /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} dev: true - /escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionalDependencies: - source-map: 0.6.1 - dev: true - - /eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.0)(eslint@8.55.0): - resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - eslint: ^7.32.0 || ^8.2.0 - eslint-plugin-import: ^2.25.2 - dependencies: - confusing-browser-globals: 1.0.11 - eslint: 8.55.0 - eslint-plugin-import: 2.29.0(eslint@8.55.0) - object.assign: 4.1.5 - object.entries: 1.1.7 - semver: 6.3.1 - dev: true - - /eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - dependencies: - debug: 3.2.7 - is-core-module: 2.13.1 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-module-utils@2.8.0(eslint-import-resolver-node@0.3.9)(eslint@8.55.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - dependencies: - debug: 3.2.7 - eslint: 8.55.0 - eslint-import-resolver-node: 0.3.9 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-plugin-import@2.29.0(eslint@8.55.0): - resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - dependencies: - array-includes: 3.1.7 - array.prototype.findlastindex: 1.2.3 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 8.55.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(eslint-import-resolver-node@0.3.9)(eslint@8.55.0) - hasown: 2.0.0 - is-core-module: 2.13.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.7 - object.groupby: 1.0.1 - object.values: 1.1.7 - semver: 6.3.1 - tsconfig-paths: 3.14.2 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: true - - /eslint-plugin-mocha@10.2.0(eslint@8.55.0): - resolution: {integrity: sha512-ZhdxzSZnd1P9LqDPF0DBcFLpRIGdh1zkF2JHnQklKQOvrQtT73kdP5K9V2mzvbLR+cCAO9OI48NXK/Ax9/ciCQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - eslint: '>=7.0.0' - dependencies: - eslint: 8.55.0 - eslint-utils: 3.0.0(eslint@8.55.0) - rambda: 7.5.0 - dev: true - /eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -3652,103 +1756,6 @@ packages: estraverse: 4.3.0 dev: true - /eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - dev: true - - /eslint-utils@3.0.0(eslint@8.55.0): - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint: 8.55.0 - eslint-visitor-keys: 2.1.0 - dev: true - - /eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: true - - /eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /eslint@8.55.0: - resolution: {integrity: sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) - '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.55.0 - '@humanwhocodes/config-array': 0.11.13 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.23.0 - graphemer: 1.4.0 - ignore: 5.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - dev: true - - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - acorn: 8.11.2 - acorn-jsx: 5.3.2(acorn@8.11.2) - eslint-visitor-keys: 3.4.3 - dev: true - - /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - dependencies: - estraverse: 5.3.0 - dev: true - /esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} @@ -3768,12 +1775,7 @@ packages: /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: true - - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - dev: true + dev: false /eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} @@ -3807,73 +1809,31 @@ packages: - supports-color dev: true - /extract-zip@2.0.1: - resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} - engines: {node: '>= 10.17.0'} - hasBin: true - dependencies: - debug: 4.3.4(supports-color@8.1.1) - get-stream: 5.2.0 - yauzl: 2.10.0 - optionalDependencies: - '@types/yauzl': 2.10.3 - transitivePeerDependencies: - - supports-color - dev: true - /extsprintf@1.3.0: resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} engines: {'0': node >=0.6.0} dev: true - /fast-check@3.14.0: - resolution: {integrity: sha512-9Z0zqASzDNjXBox/ileV/fd+4P+V/f3o4shM6QawvcdLFh8yjPG4h5BrHUZ8yzY6amKGDTAmRMyb/JZqe+dCgw==} - engines: {node: '>=8.0.0'} - dependencies: - pure-rand: 6.0.4 - dev: true - /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true - /fast-fifo@1.3.2: - resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - dev: true - /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true - /fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true - /fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} dev: true - /fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} - dependencies: - reusify: 1.0.4 - dev: true - /fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} dependencies: - pend: 1.2.0 - dev: true - - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flat-cache: 3.2.0 + pend: 1.2.0 dev: true - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + /fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 @@ -3894,47 +1854,6 @@ packages: - supports-color dev: true - /find-cache-dir@2.1.0: - resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} - engines: {node: '>=6'} - dependencies: - commondir: 1.0.1 - make-dir: 2.1.0 - pkg-dir: 3.0.0 - dev: true - - /find-cache-dir@3.3.2: - resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} - engines: {node: '>=8'} - dependencies: - commondir: 1.0.1 - make-dir: 3.1.0 - pkg-dir: 4.2.0 - dev: true - - /find-cache-dir@4.0.0: - resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} - engines: {node: '>=14.16'} - dependencies: - common-path-prefix: 3.0.0 - pkg-dir: 7.0.0 - dev: true - - /find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} - dependencies: - locate-path: 3.0.0 - dev: true - - /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: true - /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -3943,34 +1862,17 @@ packages: path-exists: 4.0.0 dev: true - /find-up@6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - dev: true - - /flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flatted: 3.2.9 - keyv: 4.5.4 - rimraf: 3.0.2 - dev: true - /flat@5.0.2: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true dev: true - /flatted@3.2.9: - resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + /flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} dev: true - /follow-redirects@1.15.3: - resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} + /follow-redirects@1.15.6: + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -3985,13 +1887,13 @@ packages: is-callable: 1.2.7 dev: true - /foreground-child@2.0.0: - resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} - engines: {node: '>=8.0.0'} + /foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} dependencies: cross-spawn: 7.0.3 - signal-exit: 3.0.7 - dev: true + signal-exit: 4.1.0 + dev: false /forever-agent@0.6.1: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} @@ -4006,10 +1908,6 @@ packages: mime-types: 2.1.35 dev: true - /fromentries@1.3.2: - resolution: {integrity: sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==} - dev: true - /fs-extra@1.0.0: resolution: {integrity: sha512-VerQV6vEKuhDWD2HGOybV6v5I73syoc/cXAbKlgTC7M/oFVEtklWlp9QH2Ijw3IaWDOQcMkldSPa7zXy79Z/UQ==} dependencies: @@ -4027,39 +1925,18 @@ packages: universalify: 0.1.2 dev: true - /fs-readdir-recursive@1.1.0: - resolution: {integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==} - dev: true - /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: true /fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true - dev: true optional: true /function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - dev: true - - /function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - functions-have-names: 1.2.3 - dev: true - - /functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: true /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} @@ -4079,45 +1956,15 @@ packages: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} dev: true - /get-intrinsic@1.2.2: - resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} dependencies: + es-errors: 1.3.0 function-bind: 1.1.2 - has-proto: 1.0.1 + has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.0 - dev: true - - /get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - dev: true - - /get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - dependencies: - pump: 3.0.0 - dev: true - - /get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - dev: true - - /get-uri@6.0.2: - resolution: {integrity: sha512-5KLucCJobh8vBY1K07EFV4+cPZH3mrV9YeAruUseCQKHB58SGjjT2l9/eA9LD082IiuMjSlFJEcdJ27TXvbZNw==} - engines: {node: '>= 14'} - dependencies: - basic-ftp: 5.0.3 - data-uri-to-buffer: 6.0.1 - debug: 4.3.4(supports-color@8.1.1) - fs-extra: 8.1.0 - transitivePeerDependencies: - - supports-color + hasown: 2.0.2 dev: true /getpass@0.1.7: @@ -4133,30 +1980,25 @@ packages: is-glob: 4.0.3 dev: true - /glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - dependencies: - is-glob: 4.0.3 - dev: true - /glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} dev: true - /glob@7.2.0: - resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} + /glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 + dev: false /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -4169,47 +2011,29 @@ packages: /glob@8.1.0: resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 minimatch: 5.1.6 once: 1.4.0 - dev: true /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} dev: true - /globals@13.23.0: - resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - dev: true - - /globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} - dependencies: - define-properties: 1.2.1 - dev: true - /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 dev: true /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true - /graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - dev: true - /har-schema@2.0.0: resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} engines: {node: '>=4'} @@ -4224,28 +2048,23 @@ packages: har-schema: 2.0.0 dev: true - /has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: true - /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} - dev: true /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} dev: true - /has-property-descriptors@1.0.1: - resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: - get-intrinsic: 1.2.2 + es-define-property: 1.0.0 dev: true - /has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} engines: {node: '>= 0.4'} dev: true @@ -4254,8 +2073,8 @@ packages: engines: {node: '>= 0.4'} dev: true - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 @@ -4266,6 +2085,14 @@ packages: engines: {node: '>= 0.4.0'} dev: true + /hash-base@3.0.4: + resolution: {integrity: sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==} + engines: {node: '>=4'} + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + /hash-base@3.1.0: resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} engines: {node: '>=4'} @@ -4290,20 +2117,11 @@ packages: pinkie-promise: 2.0.1 dev: true - /hasha@5.2.2: - resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==} - engines: {node: '>=8'} - dependencies: - is-stream: 2.0.1 - type-fest: 0.8.1 - dev: true - - /hasown@2.0.0: - resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 - dev: true /he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} @@ -4318,59 +2136,15 @@ packages: minimalistic-crypto-utils: 1.0.1 dev: true - /html-encoding-sniffer@3.0.0: - resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} - engines: {node: '>=12'} - dependencies: - whatwg-encoding: 2.0.0 - dev: true - /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true - /html-minifier-terser@6.1.0: - resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} - engines: {node: '>=12'} - hasBin: true - dependencies: - camel-case: 4.1.2 - clean-css: 5.3.3 - commander: 8.3.0 - he: 1.2.0 - param-case: 3.0.4 - relateurl: 0.2.7 - terser: 5.24.0 - dev: true - - /html-webpack-plugin@5.5.3(webpack@5.89.0): - resolution: {integrity: sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==} - engines: {node: '>=10.13.0'} - peerDependencies: - webpack: ^5.20.0 - dependencies: - '@types/html-minifier-terser': 6.1.0 - html-minifier-terser: 6.1.0 - lodash: 4.17.21 - pretty-error: 4.0.0 - tapable: 2.2.1 - webpack: 5.89.0 - dev: true - /htmlescape@1.1.1: resolution: {integrity: sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==} engines: {node: '>=0.10'} dev: true - /htmlparser2@6.1.0: - resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - domutils: 2.8.0 - entities: 2.2.0 - dev: true - /http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} @@ -4382,50 +2156,17 @@ packages: toidentifier: 1.0.1 dev: true - /http-proxy-agent@7.0.0: - resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - dev: true - /http-proxy@1.18.1: resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.3 + follow-redirects: 1.15.6 requires-port: 1.0.0 transitivePeerDependencies: - debug dev: true - /http-server@14.1.1: - resolution: {integrity: sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==} - engines: {node: '>=12'} - hasBin: true - dependencies: - basic-auth: 2.0.1 - chalk: 4.1.2 - corser: 2.0.1 - he: 1.2.0 - html-encoding-sniffer: 3.0.0 - http-proxy: 1.18.1 - mime: 1.6.0 - minimist: 1.2.8 - opener: 1.5.2 - portfinder: 1.0.32 - secure-compare: 3.0.1 - union: 0.5.0 - url-join: 4.0.1 - transitivePeerDependencies: - - debug - - supports-color - dev: true - /http-signature@1.2.0: resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} engines: {node: '>=0.8', npm: '>=1.3.7'} @@ -4439,16 +2180,6 @@ packages: resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} dev: true - /https-proxy-agent@7.0.2: - resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - dev: true - /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -4456,55 +2187,25 @@ packages: safer-buffer: 2.1.2 dev: true - /iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: true - - /icss-utils@5.1.0(postcss@8.4.32): + /icss-utils@5.1.0(postcss@8.4.41): resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.32 + postcss: 8.4.41 dev: true /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: true - /ignore@5.3.0: - resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} - engines: {node: '>= 4'} - dev: true - - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - dev: true - - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - dev: true - - /indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - dev: true - /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. dependencies: once: 1.4.0 wrappy: 1.0.2 - dev: true /inherits@2.0.3: resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} @@ -4512,10 +2213,9 @@ packages: /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: true - /inline-source-map@0.6.2: - resolution: {integrity: sha512-0mVWSSbNDvedDWIN4wxLsdPM4a7cIPcpyMxj3QZ406QRwQ6ePGB1YIHxVPjqpcUGbWQ5C+nHTwGNWAGvt7ggVA==} + /inline-source-map@0.6.3: + resolution: {integrity: sha512-1aVsPEsJWMJq/pdMU61CDlm1URcW702MTB4w9/zUjMus6H/Py8o7g68Pr9D4I6QluWGt/KdmswuRhaA05xVR1w==} dependencies: source-map: 0.5.7 dev: true @@ -4536,62 +2236,19 @@ packages: xtend: 4.0.2 dev: true - /internal-slot@1.0.6: - resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.2 - hasown: 2.0.0 - side-channel: 1.0.4 - dev: true - - /ip@1.1.8: - resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==} - dev: true - - /ip@2.0.0: - resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} - dev: true - /is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 - dev: true - - /is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 - dev: true - - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: true - - /is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - dependencies: - has-bigints: 1.0.2 + call-bind: 1.0.7 + has-tostringtag: 1.0.2 dev: true /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: - binary-extensions: 2.2.0 - dev: true - - /is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 + binary-extensions: 2.3.0 dev: true /is-buffer@1.1.6: @@ -4603,25 +2260,18 @@ packages: engines: {node: '>=6'} dependencies: builtin-modules: 3.3.0 - dev: true + dev: false /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} dev: true - /is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} - dependencies: - hasown: 2.0.0 - dev: true - - /is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + /is-core-module@2.15.0: + resolution: {integrity: sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 - dev: true + hasown: 2.0.2 /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} @@ -4637,13 +2287,12 @@ packages: /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - dev: true /is-generator-function@1.0.10: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-glob@4.0.3: @@ -4655,91 +2304,34 @@ packages: /is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - dev: true - - /is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} - dev: true - - /is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true + dev: false /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} dev: true - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: true - /is-plain-obj@2.1.0: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} dev: true - /is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: true - /is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} dependencies: '@types/estree': 1.0.5 - dev: true - - /is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 - dev: true - - /is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} - dependencies: - call-bind: 1.0.5 - dev: true + dev: false /is-stream@1.1.0: resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} engines: {node: '>=0.10.0'} dev: true - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: true - - /is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true - - /is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: true - - /is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} dependencies: - which-typed-array: 1.1.13 + which-typed-array: 1.1.15 dev: true /is-typedarray@1.0.0: @@ -4751,17 +2343,6 @@ packages: engines: {node: '>=10'} dev: true - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - dependencies: - call-bind: 1.0.5 - dev: true - - /is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - dev: true - /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -4773,10 +2354,6 @@ packages: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: true - /isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: true - /isbinaryfile@4.0.10: resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} engines: {node: '>= 8.0.0'} @@ -4784,52 +2361,22 @@ packages: /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: true - - /isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - dev: true /isstream@0.1.2: - resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} - dev: true - - /istanbul-lib-coverage@2.0.5: - resolution: {integrity: sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==} - engines: {node: '>=6'} - dev: true - - /istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - dev: true - - /istanbul-lib-hook@3.0.0: - resolution: {integrity: sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==} - engines: {node: '>=8'} - dependencies: - append-transform: 2.0.0 + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} dev: true - /istanbul-lib-instrument@4.0.3: - resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} - dependencies: - '@babel/core': 7.23.5 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color dev: true /istanbul-lib-instrument@5.2.1: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.23.5 - '@babel/parser': 7.23.5 + '@babel/core': 7.25.2 + '@babel/parser': 7.25.3 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -4837,31 +2384,6 @@ packages: - supports-color dev: true - /istanbul-lib-instrument@6.0.1: - resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==} - engines: {node: '>=10'} - dependencies: - '@babel/core': 7.23.5 - '@babel/parser': 7.23.5 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-lib-processinfo@2.0.3: - resolution: {integrity: sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==} - engines: {node: '>=8'} - dependencies: - archy: 1.0.0 - cross-spawn: 7.0.3 - istanbul-lib-coverage: 3.2.2 - p-map: 3.0.0 - rimraf: 3.0.2 - uuid: 8.3.2 - dev: true - /istanbul-lib-report@3.0.1: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} @@ -4871,79 +2393,52 @@ packages: supports-color: 7.2.0 dev: true - /istanbul-lib-source-maps@3.0.6: - resolution: {integrity: sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==} - engines: {node: '>=6'} - dependencies: - debug: 4.3.4(supports-color@8.1.1) - istanbul-lib-coverage: 2.0.5 - make-dir: 2.1.0 - rimraf: 2.7.1 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - dev: true - /istanbul-lib-source-maps@4.0.1: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: - supports-color dev: true - /istanbul-merge@2.0.0: - resolution: {integrity: sha512-Y812/uTdnF5Qc2qWxA7jQOTkqpFLEr7BHy8mzUQFRJstTjPigNS1Bh3q06AbOhBZ7tZqrI4MZdMgG34KVnUn6w==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - array.prototype.flatmap: 1.3.2 - for-each: 0.3.3 - glob: 7.2.3 - istanbul-lib-coverage: 3.2.2 - mkdirp: 0.5.6 - yargs: 15.4.1 - dev: true - - /istanbul-reports@3.1.6: - resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} + /istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 dev: true + /jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: false + /jest-worker@24.9.0: resolution: {integrity: sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==} engines: {node: '>= 6'} dependencies: merge-stream: 2.0.0 supports-color: 6.1.0 - dev: true + dev: false /jest-worker@27.5.1: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.10.2 + '@types/node': 22.4.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: true - - /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: true /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} @@ -4952,53 +2447,16 @@ packages: argparse: 2.0.1 dev: true - /js2xmlparser@4.0.2: - resolution: {integrity: sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==} - dependencies: - xmlcreate: 2.0.4 - dev: true - /jsbn@0.1.1: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} dev: true - /jsdoc@3.6.11: - resolution: {integrity: sha512-8UCU0TYeIYD9KeLzEcAu2q8N/mx9O3phAGl32nmHlE0LpaJL71mMkP4d+QE5zWfNt50qheHtOZ0qoxVrsX5TUg==} - engines: {node: '>=12.0.0'} - hasBin: true - dependencies: - '@babel/parser': 7.23.5 - '@types/markdown-it': 12.2.3 - bluebird: 3.7.2 - catharsis: 0.9.0 - escape-string-regexp: 2.0.0 - js2xmlparser: 4.0.2 - klaw: 3.0.0 - markdown-it: 12.3.2 - markdown-it-anchor: 8.6.7(@types/markdown-it@12.2.3)(markdown-it@12.3.2) - marked: 4.3.0 - mkdirp: 1.0.4 - requizzle: 0.2.4 - strip-json-comments: 3.1.1 - taffydb: 2.6.2 - underscore: 1.13.6 - dev: true - - /jsesc@0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true - dev: true - /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true dev: true - /json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: true - /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: true @@ -5007,29 +2465,14 @@ packages: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true - /json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: true - /json-schema@0.4.0: resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} dev: true - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true - /json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} dev: true - /json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - dependencies: - minimist: 1.2.8 - dev: true - /json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} @@ -5063,14 +2506,14 @@ packages: verror: 1.10.0 dev: true - /karma-chai@0.1.0(chai@4.3.10)(karma@6.4.2): + /karma-chai@0.1.0(chai@4.5.0)(karma@6.4.4): resolution: {integrity: sha512-mqKCkHwzPMhgTYca10S90aCEX9+HjVjjrBFAsw36Zj7BlQNbokXXCAe6Ji04VUMsxcY5RLP7YphpfO06XOubdg==} peerDependencies: chai: '*' karma: '>=0.10.9' dependencies: - chai: 4.3.10 - karma: 6.4.2 + chai: 4.5.0 + karma: 6.4.4 dev: true /karma-chrome-launcher@3.2.0: @@ -5079,18 +2522,6 @@ packages: which: 1.3.1 dev: true - /karma-coverage-istanbul-reporter@3.0.3: - resolution: {integrity: sha512-wE4VFhG/QZv2Y4CdAYWDbMmcAHeS926ZIji4z+FkB2aF/EposRb6DP6G5ncT/wXhqUfAb/d7kZrNKPonbvsATw==} - dependencies: - istanbul-lib-coverage: 3.2.2 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 3.0.6 - istanbul-reports: 3.1.6 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - /karma-coverage@2.2.1: resolution: {integrity: sha512-yj7hbequkQP2qOSb20GuNSIyE//PgJWHwC2IydLE6XRtsnaflv+/OSGNssPjobYUlhVVagy99TQpqUt3vAUG7A==} engines: {node: '>=10.0.0'} @@ -5099,17 +2530,17 @@ packages: istanbul-lib-instrument: 5.2.1 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.6 + istanbul-reports: 3.1.7 minimatch: 3.1.2 transitivePeerDependencies: - supports-color dev: true - /karma-firefox-launcher@2.1.2: - resolution: {integrity: sha512-VV9xDQU1QIboTrjtGVD4NCfzIH7n01ZXqy/qpBhnOeGVOkG5JYPEm8kuSd7psHE6WouZaQ9Ool92g8LFweSNMA==} + /karma-firefox-launcher@2.1.3: + resolution: {integrity: sha512-LMM2bseebLbYjODBOVt7TCPP9OI2vZIXCavIXhkO9m+10Uj5l7u/SKoeRmYx8FYHTVGZSpk6peX+3BMHC1WwNw==} dependencies: is-wsl: 2.2.0 - which: 2.0.2 + which: 3.0.1 dev: true /karma-mocha@2.0.1: @@ -5118,13 +2549,13 @@ packages: minimist: 1.2.8 dev: true - /karma-phantomjs-launcher@1.0.4(karma@6.4.2): + /karma-phantomjs-launcher@1.0.4(karma@6.4.4): resolution: {integrity: sha512-tf4P3plsE7wb5Pqh8GJ6RnElxfI/UM4MtVnjbSIZFpdFJlKnjRzfIx8MLCcSYJBwZ1+qSKFz4uBe3XNoq2t3KA==} deprecated: PhantomJS development have stopped, use puppeteer or similar peerDependencies: karma: '>=0.9' dependencies: - karma: 6.4.2 + karma: 6.4.4 lodash: 4.17.21 phantomjs-prebuilt: 2.1.16 transitivePeerDependencies: @@ -5137,27 +2568,27 @@ packages: graceful-fs: 4.2.11 dev: true - /karma-webpack@5.0.0(webpack@5.89.0): - resolution: {integrity: sha512-+54i/cd3/piZuP3dr54+NcFeKOPnys5QeM1IY+0SPASwrtHsliXUiCL50iW+K9WWA7RvamC4macvvQ86l3KtaA==} - engines: {node: '>= 6'} + /karma-webpack@5.0.1(webpack@5.93.0): + resolution: {integrity: sha512-oo38O+P3W2mSPCSUrQdySSPv1LvPpXP+f+bBimNomS5sW+1V4SuhCuW8TfJzV+rDv921w2fDSDw0xJbPe6U+kQ==} + engines: {node: '>= 18'} peerDependencies: webpack: ^5.0.0 dependencies: glob: 7.2.3 - minimatch: 3.1.2 - webpack: 5.89.0 + minimatch: 9.0.5 + webpack: 5.93.0 webpack-merge: 4.2.2 dev: true - /karma@6.4.2: - resolution: {integrity: sha512-C6SU/53LB31BEgRg+omznBEMY4SjHU3ricV6zBcAe1EeILKkeScr+fZXtaI5WyDbkVowJxxAI6h73NcFPmXolQ==} + /karma@6.4.4: + resolution: {integrity: sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==} engines: {node: '>= 10'} hasBin: true dependencies: '@colors/colors': 1.5.0 body-parser: 1.20.2 - braces: 3.0.2 - chokidar: 3.5.3 + braces: 3.0.3 + chokidar: 3.6.0 connect: 3.7.0 di: 0.0.1 dom-serialize: 2.2.1 @@ -5173,10 +2604,10 @@ packages: qjobs: 1.2.0 range-parser: 1.2.1 rimraf: 3.0.2 - socket.io: 4.7.2 + socket.io: 4.7.5 source-map: 0.6.1 - tmp: 0.2.1 - ua-parser-js: 0.7.37 + tmp: 0.2.3 + ua-parser-js: 0.7.38 yargs: 16.2.0 transitivePeerDependencies: - bufferutil @@ -5189,29 +2620,12 @@ packages: resolution: {integrity: sha512-IG6nm0+QtAMdXt9KvbgbGdvY50RSrw+U4sGZg+KlrSKPJEwVE5JVoI3d7RWfSMdBQneRheeAOj3lIjX5VL/9RQ==} dev: true - /keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - dependencies: - json-buffer: 3.0.1 - dev: true - - /kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - dev: true - /klaw@1.3.1: resolution: {integrity: sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==} optionalDependencies: graceful-fs: 4.2.11 dev: true - /klaw@3.0.0: - resolution: {integrity: sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==} - dependencies: - graceful-fs: 4.2.11 - dev: true - /labeled-stream-splicer@2.0.2: resolution: {integrity: sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==} dependencies: @@ -5219,29 +2633,6 @@ packages: stream-splicer: 2.0.1 dev: true - /lcov-parse@1.0.0: - resolution: {integrity: sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ==} - hasBin: true - dev: true - - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true - - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: true - - /linkify-it@3.0.3: - resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==} - dependencies: - uc.micro: 1.0.6 - dev: true - /loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} @@ -5256,21 +2647,6 @@ packages: json5: 2.2.3 dev: true - /locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} - dependencies: - p-locate: 3.0.0 - path-exists: 3.0.0 - dev: true - - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - dependencies: - p-locate: 4.1.0 - dev: true - /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -5278,38 +2654,14 @@ packages: p-locate: 5.0.0 dev: true - /locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-locate: 6.0.0 - dev: true - - /lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - dev: true - - /lodash.flattendeep@4.4.0: - resolution: {integrity: sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==} - dev: true - /lodash.memoize@3.0.4: resolution: {integrity: sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==} dev: true - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true - /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: true - /log-driver@1.2.7: - resolution: {integrity: sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==} - engines: {node: '>=0.8.6'} - dev: true - /log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} @@ -5323,9 +2675,9 @@ packages: engines: {node: '>=8.0'} dependencies: date-format: 4.0.14 - debug: 4.3.4(supports-color@8.1.1) - flatted: 3.2.9 - rfdc: 1.3.0 + debug: 4.3.6(supports-color@8.1.1) + flatted: 3.3.1 + rfdc: 1.4.1 streamroller: 3.1.5 transitivePeerDependencies: - supports-color @@ -5337,11 +2689,9 @@ packages: get-func-name: 2.0.2 dev: true - /lower-case@2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - dependencies: - tslib: 2.6.2 - dev: true + /lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + dev: false /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -5349,72 +2699,17 @@ packages: yallist: 3.1.1 dev: true - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - dev: true - - /lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - dev: true - - /magic-string@0.30.5: - resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - - /make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} - dependencies: - pify: 4.0.1 - semver: 5.7.2 - dev: true - - /make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} + /magic-string@0.30.11: + resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} dependencies: - semver: 6.3.1 - dev: true + '@jridgewell/sourcemap-codec': 1.5.0 + dev: false /make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} dependencies: - semver: 7.5.4 - dev: true - - /markdown-it-anchor@8.6.7(@types/markdown-it@12.2.3)(markdown-it@12.3.2): - resolution: {integrity: sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==} - peerDependencies: - '@types/markdown-it': '*' - markdown-it: '*' - dependencies: - '@types/markdown-it': 12.2.3 - markdown-it: 12.3.2 - dev: true - - /markdown-it@12.3.2: - resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==} - hasBin: true - dependencies: - argparse: 2.0.1 - entities: 2.1.0 - linkify-it: 3.0.3 - mdurl: 1.0.1 - uc.micro: 1.0.6 - dev: true - - /marked@4.3.0: - resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} - engines: {node: '>= 12'} - hasBin: true + semver: 7.6.3 dev: true /md5.js@1.3.5: @@ -5425,24 +2720,13 @@ packages: safe-buffer: 5.2.1 dev: true - /mdurl@1.0.1: - resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} - dev: true - /media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} dev: true - /merge-source-map@1.1.0: - resolution: {integrity: sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==} - dependencies: - source-map: 0.6.1 - dev: true - /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true /miller-rabin@4.0.1: resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} @@ -5464,22 +2748,12 @@ packages: mime-db: 1.52.0 dev: true - /mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - dev: true - /mime@2.6.0: resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} engines: {node: '>=4.0.0'} hasBin: true dev: true - /minami@1.2.3: - resolution: {integrity: sha512-3f2QqqbUC1usVux0FkQMFYB73yd9JIxmHSn1dWQacizL6hOUaNu6mA3KxZ9SfiCc4qgcgq+5XP59+hP7URa1Dw==} - dev: true - /minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} dev: true @@ -5494,27 +2768,26 @@ packages: brace-expansion: 1.1.11 dev: true - /minimatch@5.0.1: - resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 - dev: true - /minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} + /minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 - dev: true /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true - /mitt@3.0.1: - resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - dev: true + /minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + dev: false /mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} @@ -5527,52 +2800,45 @@ packages: minimist: 1.2.8 dev: true - /mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - dev: true - - /mocha-loader@5.1.5(mocha@10.2.0)(webpack@5.89.0): + /mocha-loader@5.1.5(mocha@10.7.3)(webpack@5.93.0): resolution: {integrity: sha512-NfcFycKc9uAWmkLos/azir6XQknrzebY5qjEEyFhd423bVNkCoAbgaRmiV75j0nufmkZTCDBhm8NJ8WlTNbAQQ==} engines: {node: '>= 10.13.0'} peerDependencies: mocha: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 webpack: ^4.0.0 || ^5.0.0 dependencies: - css-loader: 5.2.7(webpack@5.89.0) + css-loader: 5.2.7(webpack@5.93.0) loader-utils: 2.0.4 - mocha: 10.2.0 + mocha: 10.7.3 schema-utils: 3.3.0 - style-loader: 2.0.0(webpack@5.89.0) - webpack: 5.89.0 + style-loader: 2.0.0(webpack@5.93.0) + webpack: 5.93.0 dev: true - /mocha@10.2.0: - resolution: {integrity: sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==} + /mocha@10.7.3: + resolution: {integrity: sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==} engines: {node: '>= 14.0.0'} hasBin: true dependencies: - ansi-colors: 4.1.1 + ansi-colors: 4.1.3 browser-stdout: 1.3.1 - chokidar: 3.5.3 - debug: 4.3.4(supports-color@8.1.1) - diff: 5.0.0 + chokidar: 3.6.0 + debug: 4.3.6(supports-color@8.1.1) + diff: 5.2.0 escape-string-regexp: 4.0.0 find-up: 5.0.0 - glob: 7.2.0 + glob: 8.1.0 he: 1.2.0 js-yaml: 4.1.0 log-symbols: 4.1.0 - minimatch: 5.0.1 + minimatch: 5.1.6 ms: 2.1.3 - nanoid: 3.3.3 - serialize-javascript: 6.0.0 + serialize-javascript: 6.0.2 strip-json-comments: 3.1.1 supports-color: 8.1.1 - workerpool: 6.2.1 + workerpool: 6.5.1 yargs: 16.2.0 - yargs-parser: 20.2.4 + yargs-parser: 20.2.9 yargs-unparser: 2.0.0 dev: true @@ -5610,22 +2876,12 @@ packages: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true - /nanoid@3.3.3: - resolution: {integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true - /nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true dev: true - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true - /negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} @@ -5635,39 +2891,8 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: true - /netmask@2.0.2: - resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} - engines: {node: '>= 0.4.0'} - dev: true - - /no-case@3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - dependencies: - lower-case: 2.0.2 - tslib: 2.6.2 - dev: true - - /node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - whatwg-url: 5.0.0 - dev: true - - /node-preload@0.2.1: - resolution: {integrity: sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==} - engines: {node: '>=8'} - dependencies: - process-on-spawn: 1.0.0 - dev: true - - /node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + /node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} dev: true /normalize-path@3.0.0: @@ -5675,48 +2900,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - dependencies: - boolbase: 1.0.0 - dev: true - - /nyc@15.1.0: - resolution: {integrity: sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==} - engines: {node: '>=8.9'} - hasBin: true - dependencies: - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - caching-transform: 4.0.0 - convert-source-map: 1.9.0 - decamelize: 1.2.0 - find-cache-dir: 3.3.2 - find-up: 4.1.0 - foreground-child: 2.0.0 - get-package-type: 0.1.0 - glob: 7.2.3 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-hook: 3.0.0 - istanbul-lib-instrument: 4.0.3 - istanbul-lib-processinfo: 2.0.3 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.6 - make-dir: 3.1.0 - node-preload: 0.2.1 - p-map: 3.0.0 - process-on-spawn: 1.0.0 - resolve-from: 5.0.0 - rimraf: 3.0.2 - signal-exit: 3.0.7 - spawn-wrap: 2.0.0 - test-exclude: 6.0.0 - yargs: 15.4.1 - transitivePeerDependencies: - - supports-color - dev: true - /oauth-sign@0.9.0: resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} dev: true @@ -5726,8 +2909,9 @@ packages: engines: {node: '>=0.10.0'} dev: true - /object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + /object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} dev: true /object-keys@1.1.1: @@ -5739,48 +2923,12 @@ packages: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 dev: true - /object.entries@1.1.7: - resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - dev: true - - /object.fromentries@2.0.7: - resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - dev: true - - /object.groupby@1.0.1: - resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - dev: true - - /object.values@1.1.7: - resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - dev: true - /on-finished@2.3.0: resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} engines: {node: '>= 0.8'} @@ -5791,44 +2939,19 @@ packages: /on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} - dependencies: - ee-first: 1.1.1 - dev: true - - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - dev: true - - /opener@1.5.2: - resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} - hasBin: true + dependencies: + ee-first: 1.1.1 dev: true - /optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true + wrappy: 1.0.2 /os-browserify@0.3.0: resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} dev: true - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - dependencies: - p-try: 2.2.0 - dev: true - /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -5836,27 +2959,6 @@ packages: yocto-queue: 0.1.0 dev: true - /p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - yocto-queue: 1.0.0 - dev: true - - /p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} - dependencies: - p-limit: 2.3.0 - dev: true - - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - dependencies: - p-limit: 2.3.0 - dev: true - /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} @@ -5864,135 +2966,46 @@ packages: p-limit: 3.1.0 dev: true - /p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-limit: 4.0.0 - dev: true - - /p-map@3.0.0: - resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} - engines: {node: '>=8'} - dependencies: - aggregate-error: 3.1.0 - dev: true - - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: true - - /pac-proxy-agent@7.0.1: - resolution: {integrity: sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==} - engines: {node: '>= 14'} - dependencies: - '@tootallnate/quickjs-emscripten': 0.23.0 - agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) - get-uri: 6.0.2 - http-proxy-agent: 7.0.0 - https-proxy-agent: 7.0.2 - pac-resolver: 7.0.0 - socks-proxy-agent: 8.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /pac-resolver@7.0.0: - resolution: {integrity: sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg==} - engines: {node: '>= 14'} - dependencies: - degenerator: 5.0.1 - ip: 1.1.8 - netmask: 2.0.2 - dev: true - - /package-hash@4.0.0: - resolution: {integrity: sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==} - engines: {node: '>=8'} - dependencies: - graceful-fs: 4.2.11 - hasha: 5.2.2 - lodash.flattendeep: 4.4.0 - release-zalgo: 1.0.0 - dev: true + /package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + dev: false /pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} dev: true - /param-case@3.0.4: - resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} - dependencies: - dot-case: 3.0.4 - tslib: 2.6.2 - dev: true - - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - dependencies: - callsites: 3.1.0 - dev: true - /parents@1.0.1: resolution: {integrity: sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==} dependencies: path-platform: 0.11.15 dev: true - /parse-asn1@5.1.6: - resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==} + /parse-asn1@5.1.7: + resolution: {integrity: sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==} + engines: {node: '>= 0.10'} dependencies: - asn1.js: 5.4.1 + asn1.js: 4.10.1 browserify-aes: 1.2.0 evp_bytestokey: 1.0.3 + hash-base: 3.0.4 pbkdf2: 3.1.2 safe-buffer: 5.2.1 dev: true - /parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - dependencies: - '@babel/code-frame': 7.23.5 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - dev: true - /parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} dev: true - /pascal-case@3.1.2: - resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} - dependencies: - no-case: 3.0.4 - tslib: 2.6.2 - dev: true - /path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} dev: true - /path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - dev: true - /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} dev: true - /path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -6001,21 +3014,23 @@ packages: /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - dev: true + dev: false /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true /path-platform@0.11.15: resolution: {integrity: sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==} engines: {node: '>= 0.8.0'} dev: true - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - dev: true + /path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + dev: false /pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} @@ -6059,19 +3074,12 @@ packages: - supports-color dev: true - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true + /picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - dev: true - - /pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - dev: true /pinkie-promise@2.0.1: resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} @@ -6085,86 +3093,54 @@ packages: engines: {node: '>=0.10.0'} dev: true - /pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - dev: true - - /pkg-dir@3.0.0: - resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} - engines: {node: '>=6'} - dependencies: - find-up: 3.0.0 - dev: true - - /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - dev: true - - /pkg-dir@7.0.0: - resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} - engines: {node: '>=14.16'} - dependencies: - find-up: 6.3.0 - dev: true - - /portfinder@1.0.32: - resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} - engines: {node: '>= 0.12.0'} - dependencies: - async: 2.6.4 - debug: 3.2.7 - mkdirp: 0.5.6 - transitivePeerDependencies: - - supports-color + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} dev: true - /postcss-modules-extract-imports@3.0.0(postcss@8.4.32): - resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} + /postcss-modules-extract-imports@3.1.0(postcss@8.4.41): + resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.32 + postcss: 8.4.41 dev: true - /postcss-modules-local-by-default@4.0.3(postcss@8.4.32): - resolution: {integrity: sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==} + /postcss-modules-local-by-default@4.0.5(postcss@8.4.41): + resolution: {integrity: sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.32) - postcss: 8.4.32 - postcss-selector-parser: 6.0.13 + icss-utils: 5.1.0(postcss@8.4.41) + postcss: 8.4.41 + postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 dev: true - /postcss-modules-scope@3.0.0(postcss@8.4.32): - resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} + /postcss-modules-scope@3.2.0(postcss@8.4.41): + resolution: {integrity: sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.32 - postcss-selector-parser: 6.0.13 + postcss: 8.4.41 + postcss-selector-parser: 6.1.2 dev: true - /postcss-modules-values@4.0.0(postcss@8.4.32): + /postcss-modules-values@4.0.0(postcss@8.4.41): resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.32) - postcss: 8.4.32 + icss-utils: 5.1.0(postcss@8.4.41) + postcss: 8.4.41 dev: true - /postcss-selector-parser@6.0.13: - resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} + /postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} dependencies: cssesc: 3.0.0 @@ -6175,38 +3151,19 @@ packages: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: true - /postcss@8.4.32: - resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==} + /postcss@8.4.41: + resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - - /prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - dev: true - - /pretty-error@4.0.0: - resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} - dependencies: - lodash: 4.17.21 - renderkid: 3.0.0 + picocolors: 1.0.1 + source-map-js: 1.2.0 dev: true /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: true - /process-on-spawn@1.0.0: - resolution: {integrity: sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==} - engines: {node: '>=8'} - dependencies: - fromentries: 1.3.2 - dev: true - /process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} @@ -6217,31 +3174,6 @@ packages: engines: {node: '>=0.4.0'} dev: true - /progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - dev: true - - /proxy-agent@6.3.1: - resolution: {integrity: sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) - http-proxy-agent: 7.0.0 - https-proxy-agent: 7.0.2 - lru-cache: 7.18.3 - pac-proxy-agent: 7.0.1 - proxy-from-env: 1.1.0 - socks-proxy-agent: 8.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - dev: true - /psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: true @@ -6252,18 +3184,11 @@ packages: bn.js: 4.12.0 browserify-rsa: 4.1.0 create-hash: 1.2.0 - parse-asn1: 5.1.6 + parse-asn1: 5.1.7 randombytes: 2.1.0 safe-buffer: 5.2.1 dev: true - /pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - dev: true - /punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} dev: true @@ -6273,51 +3198,6 @@ packages: engines: {node: '>=6'} dev: true - /puppeteer-core@21.5.2: - resolution: {integrity: sha512-v4T0cWnujSKs+iEfmb8ccd7u4/x8oblEyKqplqKnJ582Kw8PewYAWvkH4qUWhitN3O2q9RF7dzkvjyK5HbzjLA==} - engines: {node: '>=16.13.2'} - dependencies: - '@puppeteer/browsers': 1.8.0 - chromium-bidi: 0.4.33(devtools-protocol@0.0.1203626) - cross-fetch: 4.0.0 - debug: 4.3.4(supports-color@8.1.1) - devtools-protocol: 0.0.1203626 - ws: 8.14.2 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: true - - /puppeteer@21.5.2: - resolution: {integrity: sha512-BaAGJOq8Fl6/cck6obmwaNLksuY0Bg/lIahCLhJPGXBFUD2mCffypa4A592MaWnDcye7eaHmSK9yot0pxctY8A==} - engines: {node: '>=16.13.2'} - requiresBuild: true - dependencies: - '@puppeteer/browsers': 1.8.0 - cosmiconfig: 8.3.6 - puppeteer-core: 21.5.2 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - typescript - - utf-8-validate - dev: true - - /pure-rand@6.0.4: - resolution: {integrity: sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==} - dev: true - - /push-dir@0.4.1: - resolution: {integrity: sha512-Nrrsly0c3kCfu725Jnif/s5adHpBwKCGWBttHVxTndF4iyGBSFtNi/pduFxHF5ks0kWtHcbA3XXP5MEra6iiCA==} - engines: {node: '>=0.12'} - hasBin: true - dependencies: - minimist: 1.2.8 - dev: true - /qjobs@1.2.0: resolution: {integrity: sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==} engines: {node: '>=0.9'} @@ -6327,14 +3207,14 @@ packages: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} dependencies: - side-channel: 1.0.4 + side-channel: 1.0.6 dev: true - /qs@6.11.2: - resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + /qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} dependencies: - side-channel: 1.0.4 + side-channel: 1.0.6 dev: true /qs@6.5.3: @@ -6347,18 +3227,6 @@ packages: engines: {node: '>=0.4.x'} dev: true - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true - - /queue-tick@1.0.1: - resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} - dev: true - - /rambda@7.5.0: - resolution: {integrity: sha512-y/M9weqWAH4iopRd7EHDEQQvpFPHj1AA3oHozE9tfITHUtTR7Z9PSlIRRG2l1GuW7sefC1cXFfIcF+cgnShdBA==} - dev: true - /randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: @@ -6421,85 +3289,6 @@ packages: picomatch: 2.3.1 dev: true - /regenerate-unicode-properties@10.1.1: - resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} - engines: {node: '>=4'} - dependencies: - regenerate: 1.4.2 - dev: true - - /regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - dev: true - - /regenerator-runtime@0.10.5: - resolution: {integrity: sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w==} - dev: true - - /regenerator-runtime@0.11.1: - resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} - dev: true - - /regenerator-runtime@0.14.0: - resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} - dev: true - - /regenerator-transform@0.15.2: - resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} - dependencies: - '@babel/runtime': 7.23.5 - dev: true - - /regexp.prototype.flags@1.5.1: - resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - set-function-name: 2.0.1 - dev: true - - /regexpu-core@5.3.2: - resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} - engines: {node: '>=4'} - dependencies: - '@babel/regjsgen': 0.8.0 - regenerate: 1.4.2 - regenerate-unicode-properties: 10.1.1 - regjsparser: 0.9.1 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.1.0 - dev: true - - /regjsparser@0.9.1: - resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} - hasBin: true - dependencies: - jsesc: 0.5.0 - dev: true - - /relateurl@0.2.7: - resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} - engines: {node: '>= 0.10'} - dev: true - - /release-zalgo@1.0.0: - resolution: {integrity: sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==} - engines: {node: '>=4'} - dependencies: - es6-error: 4.1.1 - dev: true - - /renderkid@3.0.0: - resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} - dependencies: - css-select: 4.3.0 - dom-converter: 0.2.0 - htmlparser2: 6.1.0 - lodash: 4.17.21 - strip-ansi: 6.0.1 - dev: true - /request-progress@2.0.1: resolution: {integrity: sha512-dxdraeZVUNEn9AvLrxkgB2k6buTlym71dJk1fk4v8j3Ou3RKNm07BcgbHdj2lLgYGfqX71F+awb1MR+tWPFJzA==} dependencies: @@ -6512,7 +3301,7 @@ packages: deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 dependencies: aws-sign2: 0.7.0 - aws4: 1.12.0 + aws4: 1.13.1 caseless: 0.12.0 combined-stream: 1.0.8 extend: 3.0.2 @@ -6538,62 +3327,25 @@ packages: engines: {node: '>=0.10.0'} dev: true - /require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - dev: true - - /require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - dev: true - /requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: true - /requizzle@0.2.4: - resolution: {integrity: sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==} - dependencies: - lodash: 4.17.21 - dev: true - - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: true - - /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true - /resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true dependencies: - is-core-module: 2.13.1 + is-core-module: 2.15.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true - - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true - - /rfdc@1.3.0: - resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} - dev: true - /rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true - dependencies: - glob: 7.2.3 + /rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} dev: true /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true dependencies: glob: 7.2.3 @@ -6606,68 +3358,43 @@ packages: inherits: 2.0.4 dev: true - /rollup-plugin-istanbul@5.0.0(rollup@4.6.1): - resolution: {integrity: sha512-5FMw55B/05AVfEM75yqlzcIBFCMzS4bKDF8mA1pq2XNzYcGUd6BElZM6wvc9sn2uAclTYn6pK+kt4R4JoHmNHA==} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.6.1) - istanbul-lib-instrument: 6.0.1 - rollup: 4.6.1 - transitivePeerDependencies: - - supports-color - dev: true - - /rollup-plugin-uglify@6.0.4(rollup@4.6.1): + /rollup-plugin-uglify@6.0.4(rollup@4.20.0): resolution: {integrity: sha512-ddgqkH02klveu34TF0JqygPwZnsbhHVI6t8+hGTcYHngPkQb5MIHI0XiztXIN/d6V9j+efwHAqEL7LspSxQXGw==} peerDependencies: rollup: '>=0.66.0 <2' dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.7 jest-worker: 24.9.0 - rollup: 4.6.1 + rollup: 4.20.0 serialize-javascript: 2.1.2 - uglify-js: 3.17.4 - dev: true + uglify-js: 3.19.2 + dev: false - /rollup@4.6.1: - resolution: {integrity: sha512-jZHaZotEHQaHLgKr8JnQiDT1rmatjgKlMekyksz+yk9jt/8z9quNjnKNRoaM0wd9DC2QKXjmWWuDYtM3jfF8pQ==} + /rollup@4.20.0: + resolution: {integrity: sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + dependencies: + '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.6.1 - '@rollup/rollup-android-arm64': 4.6.1 - '@rollup/rollup-darwin-arm64': 4.6.1 - '@rollup/rollup-darwin-x64': 4.6.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.6.1 - '@rollup/rollup-linux-arm64-gnu': 4.6.1 - '@rollup/rollup-linux-arm64-musl': 4.6.1 - '@rollup/rollup-linux-x64-gnu': 4.6.1 - '@rollup/rollup-linux-x64-musl': 4.6.1 - '@rollup/rollup-win32-arm64-msvc': 4.6.1 - '@rollup/rollup-win32-ia32-msvc': 4.6.1 - '@rollup/rollup-win32-x64-msvc': 4.6.1 + '@rollup/rollup-android-arm-eabi': 4.20.0 + '@rollup/rollup-android-arm64': 4.20.0 + '@rollup/rollup-darwin-arm64': 4.20.0 + '@rollup/rollup-darwin-x64': 4.20.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.20.0 + '@rollup/rollup-linux-arm-musleabihf': 4.20.0 + '@rollup/rollup-linux-arm64-gnu': 4.20.0 + '@rollup/rollup-linux-arm64-musl': 4.20.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.20.0 + '@rollup/rollup-linux-riscv64-gnu': 4.20.0 + '@rollup/rollup-linux-s390x-gnu': 4.20.0 + '@rollup/rollup-linux-x64-gnu': 4.20.0 + '@rollup/rollup-linux-x64-musl': 4.20.0 + '@rollup/rollup-win32-arm64-msvc': 4.20.0 + '@rollup/rollup-win32-ia32-msvc': 4.20.0 + '@rollup/rollup-win32-x64-msvc': 4.20.0 fsevents: 2.3.3 - dev: true - - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - dev: true - - /safe-array-concat@1.0.1: - resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} - engines: {node: '>=0.4'} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - has-symbols: 1.0.3 - isarray: 2.0.5 - dev: true + dev: false /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -6677,29 +3404,12 @@ packages: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true - /safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-regex: 1.1.4 - dev: true - /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /sax@1.3.0: - resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} - dev: false - - /schema-utils@2.7.1: - resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} - engines: {node: '>= 8.9.0'} - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) + /sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} dev: true /schema-utils@3.3.0: @@ -6711,75 +3421,37 @@ packages: ajv-keywords: 3.5.2(ajv@6.12.6) dev: true - /schema-utils@4.2.0: - resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} - engines: {node: '>= 12.13.0'} - dependencies: - '@types/json-schema': 7.0.15 - ajv: 8.12.0 - ajv-formats: 2.1.1(ajv@8.12.0) - ajv-keywords: 5.1.0(ajv@8.12.0) - dev: true - - /secure-compare@3.0.1: - resolution: {integrity: sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==} - dev: true - - /semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - dev: true - /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true dev: true - /semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + /semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} hasBin: true - dependencies: - lru-cache: 6.0.0 dev: true /serialize-javascript@2.1.2: resolution: {integrity: sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==} - dev: true - - /serialize-javascript@6.0.0: - resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} - dependencies: - randombytes: 2.1.0 - dev: true + dev: false - /serialize-javascript@6.0.1: - resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} + /serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} dependencies: randombytes: 2.1.0 dev: true - /set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: true - - /set-function-length@1.1.1: - resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 - get-intrinsic: 1.2.2 + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 gopd: 1.0.1 - has-property-descriptors: 1.0.1 - dev: true - - /set-function-name@2.0.1: - resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.1 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.1 + has-property-descriptors: 1.0.2 dev: true /setprototypeof@1.2.0: @@ -6794,13 +3466,6 @@ packages: safe-buffer: 5.2.1 dev: true - /shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} - dependencies: - kind-of: 6.0.3 - dev: true - /shasum-object@1.0.0: resolution: {integrity: sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==} dependencies: @@ -6812,49 +3477,44 @@ packages: engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 - dev: true + dev: false /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - dev: true + dev: false /shell-quote@1.8.1: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} dev: true - /side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - object-inspect: 1.13.1 + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.2 dev: true - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: true + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: false /simple-concat@1.0.1: resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} dev: true - /slash@2.0.0: - resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} - engines: {node: '>=6'} - dev: true - - /smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - dev: true - - /socket.io-adapter@2.5.2: - resolution: {integrity: sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==} + /socket.io-adapter@2.5.5: + resolution: {integrity: sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==} dependencies: - ws: 8.11.0 + debug: 4.3.6(supports-color@8.1.1) + ws: 8.17.1 transitivePeerDependencies: - bufferutil + - supports-color - utf-8-validate dev: true @@ -6862,22 +3522,22 @@ packages: resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} engines: {node: '>=10.0.0'} dependencies: - '@socket.io/component-emitter': 3.1.0 - debug: 4.3.4(supports-color@8.1.1) + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.6(supports-color@8.1.1) transitivePeerDependencies: - supports-color dev: true - /socket.io@4.7.2: - resolution: {integrity: sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==} + /socket.io@4.7.5: + resolution: {integrity: sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==} engines: {node: '>=10.2.0'} dependencies: accepts: 1.3.8 base64id: 2.0.0 cors: 2.8.5 - debug: 4.3.4(supports-color@8.1.1) - engine.io: 6.5.4 - socket.io-adapter: 2.5.2 + debug: 4.3.6(supports-color@8.1.1) + engine.io: 6.5.5 + socket.io-adapter: 2.5.5 socket.io-parser: 4.2.4 transitivePeerDependencies: - bufferutil @@ -6885,27 +3545,8 @@ packages: - utf-8-validate dev: true - /socks-proxy-agent@8.0.2: - resolution: {integrity: sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) - socks: 2.7.1 - transitivePeerDependencies: - - supports-color - dev: true - - /socks@2.7.1: - resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} - engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} - dependencies: - ip: 2.0.0 - smart-buffer: 4.2.0 - dev: true - - /source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} dev: true @@ -6926,22 +3567,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /spawn-wrap@2.0.0: - resolution: {integrity: sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==} - engines: {node: '>=8'} - dependencies: - foreground-child: 2.0.0 - is-windows: 1.0.2 - make-dir: 3.1.0 - rimraf: 3.0.2 - signal-exit: 3.0.7 - which: 2.0.2 - dev: true - - /sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: true - /sshpk@1.18.0: resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} engines: {node: '>=0.10.0'} @@ -7003,19 +3628,12 @@ packages: engines: {node: '>=8.0'} dependencies: date-format: 4.0.14 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) fs-extra: 8.1.0 transitivePeerDependencies: - supports-color dev: true - /streamx@2.15.5: - resolution: {integrity: sha512-9thPGMkKC2GctCzyCUjME3yR03x2xNo0GPKGkRw2UMYN+gqWa9uqpyNWhmsNCutU5zHmkUum0LsCRQTXUgUCAg==} - dependencies: - fast-fifo: 1.3.2 - queue-tick: 1.0.1 - dev: true - /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -7023,32 +3641,15 @@ packages: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - dev: true - - /string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - dev: true - - /string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - dev: true - /string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - dev: true + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: false /string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -7067,24 +3668,20 @@ packages: engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 - dev: true - - /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: true - /strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - dev: true + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: false /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} dev: true - /style-loader@2.0.0(webpack@5.89.0): + /style-loader@2.0.0(webpack@5.93.0): resolution: {integrity: sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -7092,7 +3689,7 @@ packages: dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.89.0 + webpack: 5.93.0 dev: true /subarg@1.0.0: @@ -7106,14 +3703,13 @@ packages: engines: {node: '>=4'} dependencies: has-flag: 3.0.0 - dev: true /supports-color@6.1.0: resolution: {integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==} engines: {node: '>=6'} dependencies: has-flag: 3.0.0 - dev: true + dev: false /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} @@ -7132,7 +3728,6 @@ packages: /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - dev: true /syntax-error@1.4.0: resolution: {integrity: sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==} @@ -7140,33 +3735,13 @@ packages: acorn-node: 1.8.2 dev: true - /taffydb@2.6.2: - resolution: {integrity: sha512-y3JaeRSplks6NYQuCOj3ZFMO3j60rTwbuKCvZxsAraGYH2epusatvZ0baZYA01WsGqJBq/Dl6vOrMUJqyMj8kA==} - dev: true - /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} dev: true - /tar-fs@3.0.4: - resolution: {integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==} - dependencies: - mkdirp-classic: 0.5.3 - pump: 3.0.0 - tar-stream: 3.1.6 - dev: true - - /tar-stream@3.1.6: - resolution: {integrity: sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==} - dependencies: - b4a: 1.6.4 - fast-fifo: 1.3.2 - streamx: 2.15.5 - dev: true - - /terser-webpack-plugin@5.3.9(webpack@5.89.0): - resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} + /terser-webpack-plugin@5.3.10(webpack@5.93.0): + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' @@ -7181,38 +3756,25 @@ packages: uglify-js: optional: true dependencies: - '@jridgewell/trace-mapping': 0.3.20 + '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 - serialize-javascript: 6.0.1 - terser: 5.24.0 - webpack: 5.89.0 + serialize-javascript: 6.0.2 + terser: 5.31.6 + webpack: 5.93.0 dev: true - /terser@5.24.0: - resolution: {integrity: sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==} + /terser@5.31.6: + resolution: {integrity: sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==} engines: {node: '>=10'} hasBin: true dependencies: - '@jridgewell/source-map': 0.3.5 - acorn: 8.11.2 + '@jridgewell/source-map': 0.3.6 + acorn: 8.12.1 commander: 2.20.3 source-map-support: 0.5.21 dev: true - /test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 - dev: true - - /text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true - /throttleit@1.0.1: resolution: {integrity: sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==} dev: true @@ -7235,11 +3797,9 @@ packages: process: 0.11.10 dev: true - /tmp@0.2.1: - resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} - engines: {node: '>=8.17.0'} - dependencies: - rimraf: 3.0.2 + /tmp@0.2.3: + resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + engines: {node: '>=14.14'} dev: true /to-fast-properties@2.0.0: @@ -7267,23 +3827,6 @@ packages: punycode: 2.3.1 dev: true - /tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: true - - /tsconfig-paths@3.14.2: - resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - dev: true - - /tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - dev: true - /tty-browserify@0.0.1: resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==} dev: true @@ -7298,28 +3841,11 @@ packages: resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} dev: true - /type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - dev: true - - /type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + /type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} engines: {node: '>=4'} dev: true - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true - - /type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - dev: true - /type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -7328,89 +3854,25 @@ packages: mime-types: 2.1.35 dev: true - /typed-array-buffer@1.0.0: - resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 - dev: true - - /typed-array-byte-length@1.0.0: - resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 - dev: true - - /typed-array-byte-offset@1.0.0: - resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 - for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 - dev: true - - /typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} - dependencies: - call-bind: 1.0.5 - for-each: 0.3.3 - is-typed-array: 1.1.12 - dev: true - - /typedarray-to-buffer@3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - dependencies: - is-typedarray: 1.0.0 - dev: true - /typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} dev: true - /ua-parser-js@0.7.37: - resolution: {integrity: sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==} - dev: true - - /uc.micro@1.0.6: - resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} + /ua-parser-js@0.7.38: + resolution: {integrity: sha512-fYmIy7fKTSFAhG3fuPlubeGaMoAd6r0rSnfEsO5nEY55i26KSLt9EH7PLQiiqPUhNqYIJvSkTy1oArIcXAbPbA==} dev: true - /uglify-js@3.17.4: - resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} + /uglify-js@3.19.2: + resolution: {integrity: sha512-S8KA6DDI47nQXJSi2ctQ629YzwOVs+bQML6DAtvy0wgNdpi+0ySpQK0g2pxBq2xfF2z3YCscu7NNA8nXT9PlIQ==} engines: {node: '>=0.8.0'} hasBin: true - dev: true + dev: false /umd@3.0.3: resolution: {integrity: sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==} hasBin: true dev: true - /unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - dependencies: - call-bind: 1.0.5 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - dev: true - - /unbzip2-stream@1.4.3: - resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} - dependencies: - buffer: 5.7.1 - through: 2.3.8 - dev: true - /undeclared-identifiers@1.1.3: resolution: {integrity: sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==} hasBin: true @@ -7422,42 +3884,8 @@ packages: xtend: 4.0.2 dev: true - /underscore@1.13.6: - resolution: {integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==} - dev: true - - /undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - dev: true - - /unicode-canonical-property-names-ecmascript@2.0.0: - resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} - engines: {node: '>=4'} - dev: true - - /unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} - dependencies: - unicode-canonical-property-names-ecmascript: 2.0.0 - unicode-property-aliases-ecmascript: 2.1.0 - dev: true - - /unicode-match-property-value-ecmascript@2.1.0: - resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} - engines: {node: '>=4'} - dev: true - - /unicode-property-aliases-ecmascript@2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} - dev: true - - /union@0.5.0: - resolution: {integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==} - engines: {node: '>= 0.8.0'} - dependencies: - qs: 6.11.2 + /undici-types@6.19.6: + resolution: {integrity: sha512-e/vggGopEfTKSvj4ihnOLTsqhrKRN3LeO6qSN/GxohhuRv8qH9bNQ4B8W7e/vFL+0XTnmHPB4/kegunZGA4Org==} dev: true /universalify@0.1.2: @@ -7470,15 +3898,15 @@ packages: engines: {node: '>= 0.8'} dev: true - /update-browserslist-db@1.0.13(browserslist@4.22.1): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + /update-browserslist-db@1.1.0(browserslist@4.23.3): + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.22.1 - escalade: 3.1.1 - picocolors: 1.0.0 + browserslist: 4.23.3 + escalade: 3.1.2 + picocolors: 1.0.1 dev: true /uri-js@4.4.1: @@ -7487,19 +3915,12 @@ packages: punycode: 2.3.1 dev: true - /url-join@4.0.1: - resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} - dev: true - - /url@0.11.3: - resolution: {integrity: sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==} + /url@0.11.4: + resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} + engines: {node: '>= 0.4'} dependencies: punycode: 1.4.1 - qs: 6.11.2 - dev: true - - /urlpattern-polyfill@9.0.0: - resolution: {integrity: sha512-WHN8KDQblxd32odxeIgo83rdVDE2bvdkb86it7bMhYZwWKJz0+O0RK/eZiHYnM+zgt/U7hAHOlCQGfjjvSkw2g==} + qs: 6.13.0 dev: true /util-deprecate@1.0.2: @@ -7518,12 +3939,8 @@ packages: inherits: 2.0.4 is-arguments: 1.1.1 is-generator-function: 1.0.10 - is-typed-array: 1.1.12 - which-typed-array: 1.1.13 - dev: true - - /utila@0.4.0: - resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + is-typed-array: 1.1.13 + which-typed-array: 1.1.15 dev: true /utils-merge@1.0.1: @@ -7537,11 +3954,6 @@ packages: hasBin: true dev: true - /uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - dev: true - /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -7565,18 +3977,14 @@ packages: engines: {node: '>=0.10.0'} dev: true - /watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + /watchpack@2.4.2: + resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} engines: {node: '>=10.13.0'} dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 dev: true - /webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: true - /webpack-merge@4.2.2: resolution: {integrity: sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==} dependencies: @@ -7588,8 +3996,8 @@ packages: engines: {node: '>=10.13.0'} dev: true - /webpack@5.89.0: - resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} + /webpack@5.93.0: + resolution: {integrity: sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -7600,15 +4008,15 @@ packages: dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/wasm-edit': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - acorn: 8.11.2 - acorn-import-assertions: 1.9.0(acorn@8.11.2) - browserslist: 4.22.1 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.15.0 - es-module-lexer: 1.4.1 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + acorn: 8.12.1 + acorn-import-attributes: 1.9.5(acorn@8.12.1) + browserslist: 4.23.3 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.17.1 + es-module-lexer: 1.5.4 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -7619,8 +4027,8 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(webpack@5.89.0) - watchpack: 2.4.0 + terser-webpack-plugin: 5.3.10(webpack@5.93.0) + watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' @@ -7628,43 +4036,15 @@ packages: - uglify-js dev: true - /whatwg-encoding@2.0.0: - resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} - engines: {node: '>=12'} - dependencies: - iconv-lite: 0.6.3 - dev: true - - /whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - dev: true - - /which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 - dev: true - - /which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - dev: true - - /which-typed-array@1.1.13: - resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + /which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /which@1.3.1: @@ -7680,19 +4060,18 @@ packages: hasBin: true dependencies: isexe: 2.0.0 - dev: true + dev: false - /workerpool@6.2.1: - resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} + /which@3.0.1: + resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + isexe: 2.0.0 dev: true - /wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 + /workerpool@6.5.1: + resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} dev: true /wrap-ansi@7.0.0: @@ -7702,36 +4081,21 @@ packages: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: true - - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true - /write-file-atomic@3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} dependencies: - imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 - dev: true + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: false - /ws@8.11.0: - resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - /ws@8.14.2: - resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} + /ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -7747,11 +4111,7 @@ packages: resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==} hasBin: true dependencies: - sax: 1.3.0 - dev: false - - /xmlcreate@2.0.4: - resolution: {integrity: sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==} + sax: 1.4.1 dev: true /xtend@4.0.2: @@ -7759,10 +4119,6 @@ packages: engines: {node: '>=0.4'} dev: true - /y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - dev: true - /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -7772,33 +4128,11 @@ packages: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} dev: true - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true - - /yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - dev: true - - /yargs-parser@20.2.4: - resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} - engines: {node: '>=10'} - dev: true - /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} dev: true - /yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - dev: true - /yargs-unparser@2.0.0: resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} engines: {node: '>=10'} @@ -7809,29 +4143,12 @@ packages: is-plain-obj: 2.1.0 dev: true - /yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - dependencies: - cliui: 6.0.0 - decamelize: 1.2.0 - find-up: 4.1.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 4.2.3 - which-module: 2.0.1 - y18n: 4.0.3 - yargs-parser: 18.1.3 - dev: true - /yargs@16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} dependencies: cliui: 7.0.4 - escalade: 3.1.1 + escalade: 3.1.2 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 @@ -7839,19 +4156,6 @@ packages: yargs-parser: 20.2.9 dev: true - /yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - dependencies: - cliui: 8.0.1 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - dev: true - /yauzl@2.10.0: resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} dependencies: @@ -7863,8 +4167,3 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} dev: true - - /yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - dev: true diff --git a/rollup.config.mjs b/rollup.config.mjs deleted file mode 100644 index 93b1c42..0000000 --- a/rollup.config.mjs +++ /dev/null @@ -1,61 +0,0 @@ -import { nodeResolve } from '@rollup/plugin-node-resolve'; -import commonjs from '@rollup/plugin-commonjs'; -import { babel } from '@rollup/plugin-babel'; -import virtual from '@rollup/plugin-virtual'; -import istanbul from 'rollup-plugin-istanbul'; -import { uglify } from "rollup-plugin-uglify"; - -const nodeLibs = { - fs: `export default {};`, - path: `export default {};`, - string_decoder: `export default {};`, - buffer: `export default {};`, - crypto: `export default {};`, - stream: `export default {};` -}; - -export default [ - { - plugins: [virtual(nodeLibs), nodeResolve(), commonjs({transformMixedEsModules: true, ignoreTryCatch: 'remove'}), babel({ babelHelpers: 'bundled' }), uglify()], - input: 'src/index.js', - output: { - file: 'build/package/gdal3.js', - format: 'umd', - name: 'initGdalJs', - } - }, - { - plugins: [nodeResolve(), commonjs(), babel({ babelHelpers: 'bundled' }), uglify()], - input: 'src/index.js', - output: { - file: 'build/package/gdal3.node.js', - format: 'umd', - name: 'initGdalJs', - } - }, - { - plugins: [nodeResolve(), commonjs()], - input: 'src/index.js', - output: { - file: 'build/package/gdal3.dev.js', - format: 'umd', - name: 'initGdalJs', - sourcemap: 'inline', - } - }, - { - plugins: [ - nodeResolve(), - commonjs(), - istanbul({ - exclude: ['src/**/*.spec.js'] - }) - ], - input: 'src/index.js', - output: { - file: 'build/package/gdal3.coverage.js', - format: 'umd', - name: 'initGdalJs', - } - }, -]; diff --git a/src/TypeDefs.js b/src/TypeDefs.js deleted file mode 100644 index 2280dfd..0000000 --- a/src/TypeDefs.js +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @namespace TypeDefs - */ - -/** - * @typedef {Object} FileInfo - * @memberof TypeDefs - * @property {string} path Local path of the opened file. - * @property {number} size File size in bytes. - */ - -/** - * @typedef {Object} FilePath - * @memberof TypeDefs - * @property {string} local Example: /output/polygon-line-point.mbtiles - * @property {string} real Example: /tmp/gdaljsGClKZk/polygon-line-point.mbtiles - * @property {FilePath} [all] All file paths - */ - -/** - * @typedef {Object} Dataset - * @memberof TypeDefs - * @property {number} pointer Memory address of this dataset allocated from the native code. It must be greater than zero. - * @property {string} path Local path of the opened file. - * @property {string} type Dataset type. (raster/vector) - * @property {Object} info Result of gdalinfo or ogrinfo. - */ - -/** - * @typedef {Object} DatasetList - * @memberof TypeDefs - * @property {Array} datasets Datasets - * @property {Array} errors Errors - */ - -/** - * @typedef {Object} DatasetInfo - * @memberof TypeDefs - * @property {string} type Dataset type. (raster or vector) - * @property {string} dsName (raster/vector) Name of the data source. - * @property {string} driverName (raster/vector) Long name of a driver. - * @property {number} bandCount (raster only) Number of raster bands on this dataset. - * @property {number} width (raster only) Raster width in pixels. - * @property {number} height (raster only) Raster height in pixels. - * @property {string} projectionWkt (raster only) Projection definition string for this dataset. - * @property {Array} coordinateTransform (raster only) Affine transformation coefficients. - * @property {Array>} corners (raster only) Corner coordinates - * @property {number} layerCount (vector only) Number of layers in this dataset. - * @property {number} featureCount (vector only) Number of features in this dataset. - * @property {Array} layers (vector only) Layers - * @property {string} layers[].name Layer name - * @property {number} layers[].featureCount Feature count in this layer. - */ diff --git a/src/allCFunctions.js b/src/allCFunctions.js deleted file mode 100644 index d289d1f..0000000 --- a/src/allCFunctions.js +++ /dev/null @@ -1,138 +0,0 @@ -export const GDALFunctions = { - Module: {}, -}; - -export function initCFunctions() { - if (GDALFunctions.GDALOpen) return; - const Module = GDALFunctions.Module; - - Module.ccall('GDALAllRegister', null, [], []); - - GDALFunctions.GDALOpen = Module.cwrap('GDALOpen', 'number', ['string']); - GDALFunctions.GDALOpenEx = Module.cwrap('GDALOpenEx', 'number', [ - 'string', // char * the destination dataset path or NULL. - 'number', // unsigned int a combination of GDAL_OF_ flags that may be combined through logical or operator. - 'number', // char ** null-terminated array of strings with the driver short names that must be considered. - 'number', // char ** null-terminated array of strings with the dataset open options. - 'number', // char ** null-terminated array of strings that are filenames auxiliary to the main filename. - ]); - GDALFunctions.GDALClose = Module.cwrap('GDALClose', null, ['number']); - GDALFunctions.CPLErrorReset = Module.cwrap('CPLErrorReset', null, []); - GDALFunctions.CPLSetErrorHandler = Module.cwrap('CPLSetErrorHandler', 'number', ['number']); - GDALFunctions.CPLQuietErrorHandler = Module.cwrap('CPLQuietErrorHandler', null, ['number', 'number', 'string']); - // const cplQuietFnPtr = Module.addFunction(GDALFunctions.CPLQuietErrorHandler, 'viii'); - GDALFunctions.CPLGetLastErrorNo = Module.cwrap('CPLGetLastErrorNo', 'number', []); - GDALFunctions.CPLGetLastErrorMsg = Module.cwrap('CPLGetLastErrorMsg', 'string', []); - GDALFunctions.CPLGetLastErrorType = Module.cwrap('CPLGetLastErrorType', 'number', []); - GDALFunctions.CPLSetConfigOption = Module.cwrap('CPLSetConfigOption', null, ['string', 'string']); - GDALFunctions.CPLSetThreadLocalConfigOption = Module.cwrap('CPLSetThreadLocalConfigOption', null, ['string', 'string']); - GDALFunctions.GDALGetRasterCount = Module.cwrap('GDALGetRasterCount', 'number', ['number']); - GDALFunctions.GDALGetRasterXSize = Module.cwrap('GDALGetRasterXSize', 'number', ['number']); - GDALFunctions.GDALGetRasterYSize = Module.cwrap('GDALGetRasterYSize', 'number', ['number']); - GDALFunctions.GDALGetProjectionRef = Module.cwrap('GDALGetProjectionRef', 'string', ['number']); - GDALFunctions.GDALGetGeoTransform = Module.cwrap('GDALGetGeoTransform', 'number', ['number', 'number']); - GDALFunctions.GDALInvGeoTransform = Module.cwrap('GDALInvGeoTransform', 'number', ['number', 'number']); - GDALFunctions.GDALVectorTranslate = Module.cwrap('GDALVectorTranslate', 'number', [ - 'string', // char * the destination dataset path or NULL. - 'number', // GDALDatasetH the destination dataset or NULL. - 'number', // int the number of input datasets (only 1 supported currently) - 'number', // GDALDatasetH the list of input datasets. - 'number', // GDALVectorTranslateOptions * options object to use - 'number', // int * pbUsageError - ]); - GDALFunctions.GDALVectorTranslateOptionsNew = Module.cwrap('GDALVectorTranslateOptionsNew', 'number', ['number', 'number']); - GDALFunctions.GDALVectorTranslateOptionsFree = Module.cwrap('GDALVectorTranslateOptionsFree', 'number', ['number']); - GDALFunctions.GDALDatasetGetLayerCount = Module.cwrap('GDALDatasetGetLayerCount', 'number', ['number']); - GDALFunctions.GDALDatasetGetLayer = Module.cwrap('GDALDatasetGetLayer', 'number', ['number', 'number']); - GDALFunctions.OGR_DS_GetLayerCount = Module.cwrap('OGR_DS_GetLayerCount', 'number', ['number']); - GDALFunctions.OGR_DS_GetName = Module.cwrap('OGR_DS_GetName', 'string', ['number']); - GDALFunctions.OGR_DS_GetLayer = Module.cwrap('OGR_DS_GetLayer', 'number', ['number', 'number']); - GDALFunctions.OGR_L_GetName = Module.cwrap('OGR_L_GetName', 'string', ['number']); - - GDALFunctions.OGR_DS_GetDriver = Module.cwrap('OGR_DS_GetDriver', 'number', ['number']); - GDALFunctions.OGR_Dr_GetName = Module.cwrap('OGR_Dr_GetName', 'string', ['number']); - GDALFunctions.GDALGetDatasetDriver = Module.cwrap('GDALGetDatasetDriver', 'number', ['number']); - GDALFunctions.GDALGetDriverLongName = Module.cwrap('GDALGetDriverLongName', 'string', ['number']); - GDALFunctions.GDALGetDriverShortName = Module.cwrap('GDALGetDriverShortName', 'string', ['number']); - - GDALFunctions.GDALTranslate = Module.cwrap('GDALTranslate', 'number', [ - 'string', // char * output filename - 'number', // GDALDatasetH dataset to translate - 'number', // GDALTranslateOptions * options object to use - 'number', // int * pbUsageError - ]); - GDALFunctions.GDALTranslateOptionsNew = Module.cwrap('GDALTranslateOptionsNew', 'number', ['number', 'number']); - GDALFunctions.GDALTranslateOptionsFree = Module.cwrap('GDALTranslateOptionsFree', 'number', ['number']); - - GDALFunctions.GDALRasterize = Module.cwrap('GDALRasterize', 'number', ['string', 'number', 'number', 'number', 'number']); - GDALFunctions.GDALRasterizeOptionsNew = Module.cwrap('GDALRasterizeOptionsNew', 'number', ['number', 'number']); - GDALFunctions.GDALRasterizeOptionsFree = Module.cwrap('GDALRasterizeOptionsFree', 'number', ['number']); - - GDALFunctions.GDALWarp = Module.cwrap('GDALWarp', 'number', [ - 'string', // Destination dataset path or NULL - 'number', // GDALDatasetH destination dataset or NULL - 'number', // Number of input datasets - 'number', // GDALDatasetH * list of source datasets - 'number', // GDALWarpAppOptions * - 'number', // int * to store errors in if they occur - ]); - GDALFunctions.GDALWarpAppOptionsNew = Module.cwrap('GDALWarpAppOptionsNew', 'number', [ - 'number', // char ** null-terminated array of option strings as to gdalwarp executable - 'number', // pointer to struct that should usually be null - ]); - GDALFunctions.GDALWarpAppOptionsSetProgress = Module.cwrap('GDALWarpAppOptionsSetProgress', 'number', [ - 'number', // GDALWarpAppOptions * - 'number', // GDALProgressFunc - 'number', // void * progress function data - ]); - GDALFunctions.GDALWarpAppOptionsFree = Module.cwrap('GDALWarpAppOptionsFree', 'number', [ - 'number', // GDALWarpAppOptions * - ]); - - GDALFunctions.OSRNewSpatialReference = Module.cwrap('OSRNewSpatialReference', 'number', ['string']); - GDALFunctions.OSRDestroySpatialReference = Module.cwrap('OSRDestroySpatialReference', 'number', [ - 'number', // SpatialReferenceH - ]); - GDALFunctions.OCTNewCoordinateTransformation = Module.cwrap( - 'OCTNewCoordinateTransformation', - 'number', - ['number', 'number'], - ); - GDALFunctions.OCTDestroyCoordinateTransformation = Module.cwrap('OCTDestroyCoordinateTransformation', 'number', [ - 'number', // CoordinateTransformationH - ]); - GDALFunctions.OCTTransform = Module.cwrap( - 'OCTTransform', - 'number', - ['number', 'number', 'number', 'number', 'number'], - ); - - GDALFunctions.GDALGetDriverCount = Module.cwrap('GDALGetDriverCount', 'number', []); - GDALFunctions.OGRGetDriverCount = Module.cwrap('OGRGetDriverCount', 'number', []); - GDALFunctions.GDALGetDriver = Module.cwrap('GDALGetDriver', 'number', ['number']); - GDALFunctions.OGRGetDriver = Module.cwrap('OGRGetDriver', 'number', ['number']); - GDALFunctions.GDALGetMetadataItem = Module.cwrap('GDALGetMetadataItem', 'string', ['number', 'string', 'string']); - GDALFunctions.GDALGetDescription = Module.cwrap('GDALGetDescription', 'string', ['number']); - GDALFunctions.OGR_L_GetFeatureCount = Module.cwrap('OGR_L_GetFeatureCount', 'number', ['number', 'number']); - - GDALFunctions.GDALGenImgProjTransform = Module.cwrap('GDALGenImgProjTransform', 'number', ['number', 'number', 'number', 'number', 'number', 'number', 'number']); - GDALFunctions.GDALCreateGenImgProjTransformer2 = Module.cwrap('GDALCreateGenImgProjTransformer2', 'number', ['number', 'number', 'number']); - GDALFunctions.GDALDestroyGenImgProjTransformer = Module.cwrap('GDALDestroyGenImgProjTransformer', null, ['number']); - - GDALFunctions.OSRSetFromUserInput = Module.cwrap('OSRSetFromUserInput', 'number', ['number', 'string']); - GDALFunctions.OSRExportToWkt = Module.cwrap('OSRExportToWkt', 'number', ['number', 'number']); - GDALFunctions.GDALGetSpatialRef = Module.cwrap('GDALGetSpatialRef', 'number', ['number']); - GDALFunctions.CPLAtof = Module.cwrap('CPLAtof', 'number', ['string']); - GDALFunctions.OSRSetAxisMappingStrategy = Module.cwrap('OSRSetAxisMappingStrategy', null, ['number', 'number']); - - GDALFunctions.GDALInfo = Module.cwrap('GDALInfo', 'string', ['number', 'number']); - GDALFunctions.GDALInfoOptionsNew = Module.cwrap('GDALInfoOptionsNew', 'number', ['number', 'number']); - GDALFunctions.GDALInfoOptionsFree = Module.cwrap('GDALInfoOptionsFree', null, ['number']); - - GDALFunctions.GDALVectorInfo = Module.cwrap('GDALVectorInfo', 'string', ['number', 'number']); - GDALFunctions.GDALVectorInfoOptionsNew = Module.cwrap('GDALVectorInfoOptionsNew', 'number', ['number', 'number']); - GDALFunctions.GDALVectorInfoOptionsFree = Module.cwrap('GDALVectorInfoOptionsFree', null, ['number']); - - GDALFunctions.GDALGetFileList = Module.cwrap('GDALGetFileList', 'number', ['number']); - // GDALFunctions.CPLSetErrorHandler(cplQuietFnPtr); -} diff --git a/src/allJsFunctions.js b/src/allJsFunctions.js deleted file mode 100644 index d662686..0000000 --- a/src/allJsFunctions.js +++ /dev/null @@ -1,36 +0,0 @@ -/* eslint-disable camelcase */ -import ogr2ogr from './allJsFunctions/application/ogr2ogr'; -import gdal_translate from './allJsFunctions/application/gdal_translate'; -import gdal_rasterize from './allJsFunctions/application/gdal_rasterize'; -import gdalwarp from './allJsFunctions/application/gdalwarp'; -import gdaltransform from './allJsFunctions/application/gdaltransform'; -import gdal_location_info from './allJsFunctions/application/gdal_location_info'; -import gdalinfo from './allJsFunctions/application/gdalinfo'; -import ogrinfo from './allJsFunctions/application/ogrinfo'; - -import open from './allJsFunctions/function/open'; -import close from './allJsFunctions/function/close'; -import getInfo from './allJsFunctions/function/getInfo'; -import getOutputFiles from './allJsFunctions/function/getOutputFiles'; -import getFileBytes from './allJsFunctions/function/getFileBytes'; - -import { drivers } from './allJsFunctions/helper/drivers'; -import { GDALFunctions } from './allCFunctions'; - -export default { - ogr2ogr, - gdal_translate, - gdal_rasterize, - gdalwarp, - gdaltransform, - gdal_location_info, - gdalinfo, - ogrinfo, - open, - close, - getInfo, - getOutputFiles, - getFileBytes, - drivers, - Module: GDALFunctions.Module, -}; diff --git a/src/allJsFunctions/application/gdal_location_info.js b/src/allJsFunctions/application/gdal_location_info.js deleted file mode 100644 index 012e8d7..0000000 --- a/src/allJsFunctions/application/gdal_location_info.js +++ /dev/null @@ -1,94 +0,0 @@ -/* eslint-disable camelcase */ -/* eslint-disable no-underscore-dangle */ -import { GDALFunctions } from '../../allCFunctions'; - -/** - * The gdal location info utility converts a latitude and longitude into a pixel and line in the dataset - * - * {@link https://gdal.org/programs/gdallocationinfo.html} - * - * @module a/gdal_location_info - * @async - * @param {TypeDefs.Dataset} dataset Dataset to be converted. - * @param {Array>} coords Coordinates to be converted. - * Example: [45.5,-108.5] lat/lon -wgs84 ie. this always acts as if -wgs84 was passed to gdalLocationinfo - * @return {Promise>>} "Promise" returns converted coordinates. - * @example - * const coords = [45.5,-108.5]; - * const pixelCoords = await Gdal.gdal_location_info(dataset,coords); - * console.log(pixelCoords); // { "pixel": 3256, "line": 8664 } - */ -export default function gdal_location_info(dataset, coords) { - return new Promise((resolve, reject) => { - const hSrcSRS = GDALFunctions.OSRNewSpatialReference( - 'GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]', // WKT for wgs84 - ); - - GDALFunctions.OSRSetAxisMappingStrategy(hSrcSRS, 0); // TRADITIONAL_GIS_ORDER - const hTrgSRS = GDALFunctions.GDALGetSpatialRef(dataset.pointer); - const hct = GDALFunctions.OCTNewCoordinateTransformation( - hSrcSRS, - hTrgSRS, - ); - - const doubleLat = GDALFunctions.CPLAtof(String(coords[0])); - const doubleLon = GDALFunctions.CPLAtof(String(coords[1])); - - const latPointer = GDALFunctions.Module._malloc(8); // double - GDALFunctions.Module.setValue(latPointer, doubleLat, 'double'); - - const lonPointer = GDALFunctions.Module._malloc(8); // double - GDALFunctions.Module.setValue(lonPointer, doubleLon, 'double'); - - const success = GDALFunctions.OCTTransform( - hct, - 1, - lonPointer, - latPointer, - null, - ); - if (!success) { - reject(new Error('Failed to perform OCTTransform')); - } - const dfGeoX = GDALFunctions.Module.getValue(lonPointer, 'double'); - const dfGeoY = GDALFunctions.Module.getValue(latPointer, 'double'); - - const geoTransformByteOffset = GDALFunctions.Module._malloc( - 6 * Float64Array.BYTES_PER_ELEMENT, - ); - GDALFunctions.GDALGetGeoTransform( - dataset.pointer, - geoTransformByteOffset, - ); - - const inverseGeoTransformByteOffset = GDALFunctions.Module._malloc( - 6 * Float64Array.BYTES_PER_ELEMENT, - ); - const successfulInverseTransform = GDALFunctions.GDALInvGeoTransform( - geoTransformByteOffset, - inverseGeoTransformByteOffset, - ); - if (!successfulInverseTransform) { - reject(new Error('Failed to invert transform')); - } - const inverseGeoTransform = GDALFunctions.Module.HEAPF64.subarray( - inverseGeoTransformByteOffset / Float64Array.BYTES_PER_ELEMENT, - (inverseGeoTransformByteOffset / Float64Array.BYTES_PER_ELEMENT) + 6, - ); - const iPixel = Math.floor( - inverseGeoTransform[0] - + (inverseGeoTransform[1] * dfGeoX) - + (inverseGeoTransform[2] * dfGeoY), - ); - const iLine = Math.floor( - inverseGeoTransform[3] - + (inverseGeoTransform[4] * dfGeoX) - + (inverseGeoTransform[5] * dfGeoY), - ); - - resolve({ - pixel: iPixel, - line: iLine, - }); - }); -} diff --git a/src/allJsFunctions/application/gdal_location_info.spec.js b/src/allJsFunctions/application/gdal_location_info.spec.js deleted file mode 100644 index a6bb8c0..0000000 --- a/src/allJsFunctions/application/gdal_location_info.spec.js +++ /dev/null @@ -1,38 +0,0 @@ -/* eslint-disable global-require */ -/* eslint-disable func-names */ -const isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'; // https://github.com/iliakan/detect-node/blob/master/index.js - -let Gdal; -let assert; - -if (isNode) assert = require('chai').assert; -else assert = chai.assert; - -describe('application / gdal_location_info', function () { - before(async function () { - if (isNode) { - this.timeout(15000); - const dest = require('fs').mkdtempSync('/tmp/gdaljs'); - const initGdalJs = require('../../../build/package/gdal3.coverage'); - Gdal = await initGdalJs({ path: 'build/package', dest }); - } else { - this.timeout(30000); - Gdal = await initGdalJs({ path: '../package', useWorker: false }); - } - }); - it('gdal_location_info', async function () { - let file = 'data/vfr_wall.tif'; - if (!isNode) { - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'vfr_wall.tif'); - } else file = `test/${file}`; - - const result = await Gdal.open(file); - const firstDataset = result.datasets[0]; - - const stLouisAirport = await Gdal.gdal_location_info(firstDataset, [38.7548, -90.3575]); - - assert.strictEqual(stLouisAirport.pixel === 11511, true, 'An error occurred while converting the coordinates (wrong result, for pixel)'); - assert.strictEqual(stLouisAirport.line === 5349, true, 'An error occurred while converting the coordinates (wrong result, for line)'); - }); -}); diff --git a/src/allJsFunctions/application/gdal_rasterize.js b/src/allJsFunctions/application/gdal_rasterize.js deleted file mode 100644 index 3cec2d5..0000000 --- a/src/allJsFunctions/application/gdal_rasterize.js +++ /dev/null @@ -1,70 +0,0 @@ -/* eslint-disable camelcase */ -import { GDALFunctions } from '../../allCFunctions'; -import { getGdalError } from '../helper/error'; -import { drivers } from '../helper/drivers'; -import { getOptions, clearOptions } from '../helper/options'; -import { OUTPUTPATH, getRealOutputPath } from '../helper/const'; -import { getFileListFromDataset } from '../helper/getFileList'; - -/** - * gdal_rasterize function burns vector geometries (points, lines, and polygons) - * into the raster band(s) of a raster image. Vectors are read from OGR supported vector formats. - * - * {@link https://gdal.org/programs/gdal_rasterize.html} - * - * @module a/gdal_rasterize - * @async - * @param {TypeDefs.Dataset} dataset Dataset to be converted. - * @param {Array} [options] Options ({@link https://gdal.org/programs/gdal_rasterize.html#description}) - * @param {string} [outputName] Destination file name without extension. - * @return {Promise} "Promise" returns paths of created files. - * @example - * const Gdal = await initGdalJs(); - * const dataset = (await Gdal.open('data.geojson')).datasets[0]; - * const options = [ - * '-of', 'GTiff', - * '-co', 'alpha=yes' - * ]; - * const filePath = await Gdal.gdal_rasterize(dataset, options); - * -*/ -export default function gdal_rasterize(dataset, options = [], outputName = null) { - return new Promise((resolve, reject) => { - const optStr = getOptions(options); - const config = optStr.config; - Object.entries(config).forEach(([key, value]) => { - GDALFunctions.CPLSetConfigOption(key, value); - }); - const optionsPtr = GDALFunctions.GDALRasterizeOptionsNew(optStr.ptr, null); - - const driverIndex = options.indexOf('-of') + 1; - let ext = 'tif'; - if (driverIndex !== 0) { - const driverName = options[driverIndex]; - const driver = drivers.raster[driverName]; - if (driver) ext = driver.extension; - } - - const finalOutputName = outputName || dataset.path.split('.', 1)[0]; - const filePath = `${OUTPUTPATH}/${finalOutputName}.${ext}`; - const datasetPtr = GDALFunctions.GDALRasterize(filePath, null, dataset.pointer, optionsPtr, null); - const outputFiles = getFileListFromDataset(datasetPtr); - GDALFunctions.GDALRasterizeOptionsFree(optionsPtr); - clearOptions(optStr); - GDALFunctions.GDALClose(datasetPtr); - - if (GDALFunctions.CPLGetLastErrorNo() >= 3) { - const error = getGdalError(); - reject(error); - } else { - resolve({ - local: filePath, - real: `${getRealOutputPath()}/${finalOutputName}.${ext}`, - all: outputFiles.map((file) => ({ - local: file, - real: file.replace(`${OUTPUTPATH}/`, `${getRealOutputPath()}/`), - })), - }); - } - }); -} diff --git a/src/allJsFunctions/application/gdal_rasterize.spec.js b/src/allJsFunctions/application/gdal_rasterize.spec.js deleted file mode 100644 index ff3f01e..0000000 --- a/src/allJsFunctions/application/gdal_rasterize.spec.js +++ /dev/null @@ -1,82 +0,0 @@ -/* eslint-disable global-require */ -/* eslint-disable func-names */ -const isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'; // https://github.com/iliakan/detect-node/blob/master/index.js - -let Gdal; -let assert; - -if (isNode) assert = require('chai').assert; -else assert = chai.assert; - -describe('application / gdal_rasterize', function () { - before(async function () { - if (isNode) { - this.timeout(15000); - const dest = require('fs').mkdtempSync('/tmp/gdaljs'); - const initGdalJs = require('../../../build/package/gdal3.coverage'); - Gdal = await initGdalJs({ path: 'build/package', dest }); - } else { - this.timeout(30000); - Gdal = await initGdalJs({ path: '../package', useWorker: false }); - } - }); - it('gdal_rasterize', async function () { - let file = 'data/simple-polygon-line-point.geojson'; - if (!isNode) { - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'simple-polygon-line-point.geojson'); - } else file = `test/${file}`; - - const result = await Gdal.open(file); - const firstDataset = result.datasets[0]; - const info = await Gdal.getInfo(firstDataset); - assert.strictEqual(firstDataset.pointer > 0, true, 'An error occurred while opening the geojson file. (ptr == 0)'); - assert.strictEqual(info.featureCount > 0, true, 'geojson file has no feature. (featureCount == 0)'); - const outputPath = await Gdal.gdal_rasterize(firstDataset, ['-of', 'GTiff', '-co', 'alpha=yes', '-burn', '255', '-burn', '0', '-burn', '0', '-burn', '100', '-ot', 'Byte', '-ts', '256', '256']); - assert.strictEqual(outputPath.local, '/output/simple-polygon-line-point.tif', 'An error occurred while converting the file.'); - - const result2 = await Gdal.open(outputPath.real); - const firstDataset2 = result2.datasets[0]; - const info2 = await Gdal.getInfo(firstDataset2); - assert.strictEqual(firstDataset2.pointer > 0, true, 'An error occurred while converting the file. (ptr == 0)'); - assert.strictEqual(info2.bandCount === 4, true, `tif file does not have four layers. (bandCount == ${info2.bandCount})`); - }); - it('gdal_rasterize fail', async function () { - let file = 'data/simple-polygon-line-point.geojson'; - if (!isNode) { - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'simple-polygon-line-point.geojson'); - } else file = `test/${file}`; - - const result = await Gdal.open(file); - const firstDataset = result.datasets[0]; - const info = await Gdal.getInfo(firstDataset); - assert.strictEqual(firstDataset.pointer > 0, true, 'An error occurred while opening the geojson file. (ptr == 0)'); - assert.strictEqual(info.featureCount > 0, true, 'geojson file has no feature. (featureCount == 0)'); - - let failed = false; - return Gdal.gdal_rasterize(firstDataset, ['-of', 'GTiff']).then(() => { failed = false; }).catch(() => { failed = true; }) - .finally(() => { assert.strictEqual(failed, true, 'An error occurred'); }); - }); - it('gdal_rasterize with config', async function () { - let file = 'data/simple-polygon-line-point.geojson'; - if (!isNode) { - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'simple-polygon-line-point.geojson'); - } else file = `test/${file}`; - - const result = await Gdal.open(file); - const firstDataset = result.datasets[0]; - const info = await Gdal.getInfo(firstDataset); - assert.strictEqual(firstDataset.pointer > 0, true, 'An error occurred while opening the geojson file. (ptr == 0)'); - assert.strictEqual(info.featureCount > 0, true, 'geojson file has no feature. (featureCount == 0)'); - const outputPath = await Gdal.gdal_rasterize(firstDataset, ['-of', 'GTiff', '-co', 'alpha=yes', '-burn', '255', '-burn', '0', '-burn', '0', '-burn', '100', '-ot', 'Byte', '-ts', '256', '256', '--config', 'NAME', 'TEST']); - assert.strictEqual(outputPath.local, '/output/simple-polygon-line-point.tif', 'An error occurred while converting the file.'); - - const result2 = await Gdal.open(outputPath.real); - const firstDataset2 = result2.datasets[0]; - const info2 = await Gdal.getInfo(firstDataset2); - assert.strictEqual(firstDataset2.pointer > 0, true, 'An error occurred while converting the file. (ptr == 0)'); - assert.strictEqual(info2.bandCount === 4, true, `tif file does not have four layers. (bandCount == ${info2.bandCount})`); - }); -}); diff --git a/src/allJsFunctions/application/gdal_translate.js b/src/allJsFunctions/application/gdal_translate.js deleted file mode 100644 index e466c04..0000000 --- a/src/allJsFunctions/application/gdal_translate.js +++ /dev/null @@ -1,70 +0,0 @@ -/* eslint-disable camelcase */ -import { GDALFunctions } from '../../allCFunctions'; -import { getGdalError } from '../helper/error'; -import { drivers } from '../helper/drivers'; -import { getOptions, clearOptions } from '../helper/options'; -import { OUTPUTPATH, getRealOutputPath } from '../helper/const'; -import { getFileListFromDataset } from '../helper/getFileList'; - -/** - * gdal_translate function can be used to convert raster data between different formats, - * potentially performing some operations like subsettings, resampling, - * and rescaling pixels in the process. - * - * {@link https://gdal.org/programs/gdal_translate.html} - * - * @module a/gdal_translate - * @async - * @param {TypeDefs.Dataset} dataset Dataset to be converted. - * @param {Array} [options] Options ({@link https://gdal.org/programs/gdal_translate.html#description}) - * @param {string} [outputName] Destination file name without extension. - * @return {Promise} "Promise" returns paths of created files. - * @example - * const Gdal = await initGdalJs(); - * const dataset = (await Gdal.open('data.tif')).datasets[0]; - * const options = [ - * '-of', 'PNG' - * ]; - * const filePath = await Gdal.gdal_translate(dataset, options); - * -*/ -export default function gdal_translate(dataset, options = [], outputName = null) { - return new Promise((resolve, reject) => { - const optStr = getOptions(options); - const config = optStr.config; - Object.entries(config).forEach(([key, value]) => { - GDALFunctions.CPLSetConfigOption(key, value); - }); - const translateOptionsPtr = GDALFunctions.GDALTranslateOptionsNew(optStr.ptr, null); - - const driverIndex = options.indexOf('-of') + 1; - let ext = 'unknown'; - if (driverIndex !== 0) { - const driverName = options[driverIndex]; - const driver = drivers.raster[driverName]; - if (driver) ext = driver.extension; - } - - const finalOutputName = outputName || dataset.path.split('.', 1)[0]; - const filePath = `${OUTPUTPATH}/${finalOutputName}.${ext}`; - const datasetPtr = GDALFunctions.GDALTranslate(filePath, dataset.pointer, translateOptionsPtr, null); - const outputFiles = getFileListFromDataset(datasetPtr); - GDALFunctions.GDALTranslateOptionsFree(translateOptionsPtr); - clearOptions(optStr); - GDALFunctions.GDALClose(datasetPtr); - - if (GDALFunctions.CPLGetLastErrorNo() >= 3) { - const error = getGdalError(); - reject(error); - } else { - resolve({ - local: filePath, - real: `${getRealOutputPath()}/${finalOutputName}.${ext}`, - all: outputFiles.map((file) => ({ - local: file, - real: file.replace(`${OUTPUTPATH}/`, `${getRealOutputPath()}/`), - })), - }); - } - }); -} diff --git a/src/allJsFunctions/application/gdal_translate.spec.js b/src/allJsFunctions/application/gdal_translate.spec.js deleted file mode 100644 index c7a4e64..0000000 --- a/src/allJsFunctions/application/gdal_translate.spec.js +++ /dev/null @@ -1,78 +0,0 @@ -/* eslint-disable global-require */ -/* eslint-disable func-names */ -const isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'; // https://github.com/iliakan/detect-node/blob/master/index.js - -let Gdal; -let assert; - -if (isNode) assert = require('chai').assert; -else assert = chai.assert; - -describe('application / gdal_translate', function () { - before(async function () { - if (isNode) { - this.timeout(15000); - const dest = require('fs').mkdtempSync('/tmp/gdaljs'); - const initGdalJs = require('../../../build/package/gdal3.coverage'); - Gdal = await initGdalJs({ path: 'build/package', dest }); - } else { - this.timeout(30000); - Gdal = await initGdalJs({ path: '../package', useWorker: false }); - } - }); - it('gdal_translate', async function () { - let file = 'data/simple-polygon-line-point.tif'; - if (!isNode) { - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'simple-polygon-line-point.tif'); - } else file = `test/${file}`; - - const result = await Gdal.open(file); - const firstDataset = result.datasets[0]; - const info = await Gdal.getInfo(firstDataset); - assert.strictEqual(firstDataset.pointer > 0, true, 'An error occurred while opening the tif file. (ptr == 0)'); - assert.strictEqual(info.bandCount === 4, true, `tif file does not have four layers. (bandCount == ${info.bandCount})`); - const outputPath = await Gdal.gdal_translate(firstDataset, ['-of', 'PNG']); - assert.strictEqual(outputPath.local, '/output/simple-polygon-line-point.png', 'An error occurred while converting the file.'); - - const result2 = await Gdal.open(outputPath.real); - const firstDataset2 = result2.datasets[0]; - const info2 = await Gdal.getInfo(firstDataset2); - assert.strictEqual(firstDataset2.pointer > 0, true, 'An error occurred while converting the file. (ptr == 0)'); - assert.strictEqual(info2.bandCount === 4, true, `png file does not have four layers. (bandCount == ${info2.bandCount})`); - }); - it('gdal_translate fail', async function () { - let file = 'data/simple-polygon-line-point.tif'; - if (!isNode) { - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'simple-polygon-line-point.tif'); - } else file = `test/${file}`; - - const result = await Gdal.open(file); - const firstDataset = result.datasets[0]; - const info = await Gdal.getInfo(firstDataset); - assert.strictEqual(firstDataset.pointer > 0, true, 'An error occurred while opening the tif file. (ptr == 0)'); - assert.strictEqual(info.bandCount === 4, true, `tif file does not have four layers. (bandCount == ${info.bandCount})`); - - let failed = false; - return Gdal.gdal_translate(firstDataset, ['-f', 'PNG2']).then(() => { failed = false; }).catch(() => { failed = true; }) - .finally(() => { assert.strictEqual(failed, true, 'An error occurred'); }); - }); - it('gdal_translate with config', async function () { - let file = 'data/spaf27_epsg.tif'; - if (!isNode) { - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'spaf27_epsg.tif'); - } else file = `test/${file}`; - - const result = await Gdal.open(file); - const firstDataset = result.datasets[0]; - assert.strictEqual(firstDataset.pointer > 0, true, 'An error occurred while opening the tif file. (ptr == 0)'); - const outputPath = await Gdal.gdal_translate(firstDataset, ['-of', 'JPEG', '--config', 'GDAL_JPEG_TO_RGB', 'NO']); - assert.strictEqual(outputPath.local, '/output/spaf27_epsg.jpg', 'An error occurred while converting the file.'); - - const result2 = await Gdal.open(outputPath.real); - const firstDataset2 = result2.datasets[0]; - assert.strictEqual(firstDataset2.pointer > 0, true, 'An error occurred while converting the file. (ptr == 0)'); - }); -}); diff --git a/src/allJsFunctions/application/gdalinfo.js b/src/allJsFunctions/application/gdalinfo.js deleted file mode 100644 index 8110f2b..0000000 --- a/src/allJsFunctions/application/gdalinfo.js +++ /dev/null @@ -1,43 +0,0 @@ -/* eslint-disable no-underscore-dangle */ -/* eslint-disable camelcase */ -import { GDALFunctions } from '../../allCFunctions'; -import { getGdalError } from '../helper/error'; -import { getOptions, clearOptions } from '../helper/options'; - -/** - * gdalinfo program lists various information about a GDAL supported raster dataset. - * - * {@link https://gdal.org/programs/gdalinfo.html} - * - * @module a/gdalinfo - * @async - * @param {TypeDefs.Dataset} dataset Dataset - * @param {Array} [options] Options ({@link https://gdal.org/programs/gdalinfo.html#description}) - * @return {Promise} "Promise" returns various information about the raster dataset - * @example - * const Gdal = await initGdalJs(); - * const dataset = (await Gdal.open('data.tif')).datasets[0]; - * const info = await Gdal.gdalinfo(dataset); - * -*/ -export default function gdalinfo(dataset, options = []) { - return new Promise((resolve, reject) => { - const optStr = getOptions(['-json', ...options]); - const config = optStr.config; - Object.entries(config).forEach(([key, value]) => { - GDALFunctions.CPLSetConfigOption(key, value); - }); - const gdalInfoOptionsPtr = GDALFunctions.GDALInfoOptionsNew(optStr.ptr, null); - - const gdalInfo = GDALFunctions.GDALInfo(dataset.pointer, gdalInfoOptionsPtr); - GDALFunctions.GDALInfoOptionsFree(gdalInfoOptionsPtr); - clearOptions(optStr); - - if (GDALFunctions.CPLGetLastErrorNo() >= 3) { - const error = getGdalError(); - reject(error); - } else { - resolve(JSON.parse(gdalInfo)); - } - }); -} diff --git a/src/allJsFunctions/application/gdalinfo.spec.js b/src/allJsFunctions/application/gdalinfo.spec.js deleted file mode 100644 index 0956f02..0000000 --- a/src/allJsFunctions/application/gdalinfo.spec.js +++ /dev/null @@ -1,36 +0,0 @@ -/* eslint-disable global-require */ -/* eslint-disable func-names */ -const isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'; // https://github.com/iliakan/detect-node/blob/master/index.js - -let Gdal; -let assert; - -if (isNode) assert = require('chai').assert; -else assert = chai.assert; - -describe('application / gdalinfo', function () { - before(async function () { - if (isNode) { - this.timeout(15000); - const dest = require('fs').mkdtempSync('/tmp/gdaljs'); - const initGdalJs = require('../../../build/package/gdal3.coverage'); - Gdal = await initGdalJs({ path: 'build/package', dest }); - } else { - this.timeout(30000); - Gdal = await initGdalJs({ path: '../package', useWorker: false }); - } - }); - it('gdalinfo', async function () { - let file = 'data/simple-polygon-line-point.tif'; - if (!isNode) { - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'simple-polygon-line-point.tif'); - } else file = `test/${file}`; - - const result = await Gdal.open(file); - const firstDataset = result.datasets[0]; - assert.strictEqual(firstDataset.pointer > 0, true, 'An error occurred while opening the tif file. (ptr == 0)'); - const info = await Gdal.gdalinfo(firstDataset); - assert.strictEqual(info.bands.length === 4, true, `tif file does not have four layers. (bandCount == ${info.bands.length})`); - }); -}); diff --git a/src/allJsFunctions/application/gdaltransform.js b/src/allJsFunctions/application/gdaltransform.js deleted file mode 100644 index 3949bc5..0000000 --- a/src/allJsFunctions/application/gdaltransform.js +++ /dev/null @@ -1,120 +0,0 @@ -/* eslint-disable function-paren-newline */ -/* eslint-disable no-underscore-dangle */ -import { GDALFunctions } from '../../allCFunctions'; -import { getOptions, clearOptions } from '../helper/options'; - -/** - * The gdaltransform utility reprojects a list of coordinates into any supported projection. - * - * {@link https://gdal.org/programs/gdaltransform.html} - * - * @module a/gdaltransform - * @async - * @param {Array>} coords Coordinates to be converted. Example: [[27.143757, 38.4247972, 0]] - * @param {Array} options Options ({@link https://gdal.org/programs/gdaltransform.html#description}) (-gcp is not supported.) - * @return {Promise>>} "Promise" returns converted coordinates. - * @example - * const coords = [ - * [27.143757, 38.4247972], - * ]; - * const options = [ - * '-s_srs', 'EPSG:4326', - * '-t_srs', 'EPSG:3857', - * '-output_xy', - * ]; - * const newCoords = await Gdal.gdaltransform(coords, options); - * console.log(newCoords); // [ [ 3021629.2074563554, 4639610.441991095 ] ] -*/ -export default function gdaltransform(coords, options) { - return new Promise((resolve) => { - const xCoords = new Float64Array(coords.map((c) => c[0])); - const yCoords = new Float64Array(coords.map((c) => c[1])); - const zCoords = new Float64Array(coords.map((c) => c[2] || 0)); - const xCoordOffset = GDALFunctions.Module._malloc(xCoords.length * xCoords.BYTES_PER_ELEMENT); - const yCoordOffset = GDALFunctions.Module._malloc(yCoords.length * yCoords.BYTES_PER_ELEMENT); - const zCoordOffset = GDALFunctions.Module._malloc(zCoords.length * zCoords.BYTES_PER_ELEMENT); - GDALFunctions.Module.HEAPF64.set(xCoords, xCoordOffset / xCoords.BYTES_PER_ELEMENT); - GDALFunctions.Module.HEAPF64.set(yCoords, yCoordOffset / yCoords.BYTES_PER_ELEMENT); - GDALFunctions.Module.HEAPF64.set(zCoords, zCoordOffset / zCoords.BYTES_PER_ELEMENT); - - let bInverse = false; - let bOutputXY = false; - - const options2 = []; - for (let i = 0; i < options.length; i += 1) { - switch (options[i]) { - case '-s_srs': - i += 1; - options2.push(`SRC_SRS=${options[i]}`); - break; - case '-t_srs': - i += 1; - options2.push(`DST_SRS=${options[i]}`); - break; - case '-ct': - i += 1; - options2.push(`COORDINATE_OPERATION=${options[i]}`); - break; - case '-order': - i += 1; - options2.push(`MAX_GCP_ORDER=${options[i]}`); - break; - case '-tps': - options2.push('METHOD=GCP_TPS'); - break; - case '-rpc': - options2.push('METHOD=RPC'); - break; - case '-geoloc': - options2.push('METHOD=GEOLOC_ARRAY'); - break; - case '-i': - bInverse = true; - break; - case '-to': - i += 1; - options2.push(`${options[i]}`); - break; - case '-output_xy': - bOutputXY = true; - break; - default: - } - } - - const optStr = getOptions(options2); - - const hTransformArg = GDALFunctions.GDALCreateGenImgProjTransformer2(null, null, optStr.ptr); - GDALFunctions.GDALGenImgProjTransform( - hTransformArg, bInverse, coords.length, xCoordOffset, yCoordOffset, zCoordOffset, null, - ); - - const convertedCoords = [ - Array.from(GDALFunctions.Module.HEAPF64.subarray( - xCoordOffset / xCoords.BYTES_PER_ELEMENT, - (xCoordOffset / xCoords.BYTES_PER_ELEMENT) + xCoords.length, - )), - Array.from(GDALFunctions.Module.HEAPF64.subarray( - yCoordOffset / yCoords.BYTES_PER_ELEMENT, - (yCoordOffset / yCoords.BYTES_PER_ELEMENT) + yCoords.length, - )), - Array.from(GDALFunctions.Module.HEAPF64.subarray( - zCoordOffset / zCoords.BYTES_PER_ELEMENT, - (zCoordOffset / zCoords.BYTES_PER_ELEMENT) + zCoords.length, - )), - ]; - - const result = []; - for (let i = 0; i < convertedCoords[0].length; i += 1) { - if (bOutputXY) result.push([convertedCoords[0][i], convertedCoords[1][i]]); - else result.push([convertedCoords[0][i], convertedCoords[1][i], convertedCoords[2][i]]); - } - GDALFunctions.Module._free(xCoordOffset); - GDALFunctions.Module._free(yCoordOffset); - GDALFunctions.Module._free(zCoordOffset); - clearOptions(optStr); - GDALFunctions.GDALDestroyGenImgProjTransformer(hTransformArg); - - resolve(result); - }); -} diff --git a/src/allJsFunctions/application/gdaltransform.spec.js b/src/allJsFunctions/application/gdaltransform.spec.js deleted file mode 100644 index 658bbd9..0000000 --- a/src/allJsFunctions/application/gdaltransform.spec.js +++ /dev/null @@ -1,58 +0,0 @@ -/* eslint-disable global-require */ -/* eslint-disable func-names */ -const isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'; // https://github.com/iliakan/detect-node/blob/master/index.js - -let Gdal; -let assert; - -if (isNode) assert = require('chai').assert; -else assert = chai.assert; - -describe('application / gdaltransform', function () { - before(async function () { - if (isNode) { - this.timeout(15000); - const dest = require('fs').mkdtempSync('/tmp/gdaljs'); - const initGdalJs = require('../../../build/package/gdal3.coverage'); - Gdal = await initGdalJs({ path: 'build/package', dest }); - } else { - this.timeout(30000); - Gdal = await initGdalJs({ path: '../package', useWorker: false }); - } - }); - it('gdaltransform', async function () { - const coords = [ - [27.143757, 38.4247972, 0], - ]; - const options = [ - '-s_srs', 'EPSG:4326', - '-t_srs', 'EPSG:3857', - ]; - const newCoords = await Gdal.gdaltransform(coords, options); - assert.strictEqual(newCoords.length === 1 && newCoords[0].length >= 2, true, 'An error occurred while transforming the coordinates.'); - assert.closeTo(newCoords[0][0], 3021629.2074563554, 0.00000001, 'An error occurred while transforming the coordinates.'); - assert.closeTo(newCoords[0][1], 4639610.441991095, 0.00000001, 'An error occurred while transforming the coordinates.'); - assert.strictEqual(newCoords[0][2], 0, 'An error occurred while transforming the coordinates.'); - }); - it('gdaltransform 2', async function () { - const coords = [ - [3021629.2074563554, 4639610.441991095], - ]; - const options = [ - '-s_srs', 'EPSG:4326', - '-t_srs', 'EPSG:3857', - '-output_xy', - '-geoloc', - '-rpc', - '-i', - '-tps', - '-order', '1', - '-ct', '', - '-to', 'DST_SRS=EPSG:3857', - ]; - const newCoords = await Gdal.gdaltransform(coords, options); - assert.strictEqual(newCoords.length === 1 && newCoords[0].length >= 2, true, 'An error occurred while transforming the coordinates.'); - assert.closeTo(newCoords[0][0], 27.143757, 0.000000001, 'An error occurred while transforming the coordinates.'); - assert.closeTo(newCoords[0][1], 38.4247972, 0.000000001, 'An error occurred while transforming the coordinates.'); - }); -}); diff --git a/src/allJsFunctions/application/gdalwarp.js b/src/allJsFunctions/application/gdalwarp.js deleted file mode 100644 index fb2a641..0000000 --- a/src/allJsFunctions/application/gdalwarp.js +++ /dev/null @@ -1,74 +0,0 @@ -/* eslint-disable no-underscore-dangle */ -import { GDALFunctions } from '../../allCFunctions'; -import { getGdalError } from '../helper/error'; -import { getOptions, clearOptions } from '../helper/options'; -import { OUTPUTPATH, getRealOutputPath } from '../helper/const'; -import { drivers } from '../helper/drivers'; -import { getFileListFromDataset } from '../helper/getFileList'; - -/** - * gdalwarp function is an image mosaicing, reprojection and warping utility. - * The function can reproject to any supported projection, - * and can also apply GCPs stored with the image if the image is “raw” with control information. - * - * {@link https://gdal.org/programs/gdalwarp.html} - * - * @module a/gdalwarp - * @async - * @param {TypeDefs.Dataset} dataset Dataset to be converted. - * @param {Array} [options] Options ({@link https://gdal.org/programs/gdalwarp.html#description}) - * @param {string} [outputName] Destination file name without extension. - * @return {Promise} "Promise" returns paths of created files. - * @example - * const Gdal = await initGdalJs(); - * const dataset = (await Gdal.open('data.tif')).datasets[0]; - * const options = [ - * '-of', 'GTiff', - * '-t_srs', 'EPSG:4326' - * ]; - * const filePath = await Gdal.gdalwarp(dataset, options); - * -*/ -export default function gdalwarp(dataset, options = [], outputName = null) { - return new Promise((resolve, reject) => { - const optStr = getOptions(options); - const config = optStr.config; - Object.entries(config).forEach(([key, value]) => { - GDALFunctions.CPLSetConfigOption(key, value); - }); - const translateOptionsPtr = GDALFunctions.GDALWarpAppOptionsNew(optStr.ptr, null); - - const datasetList = GDALFunctions.Module._malloc(4); // Uint32 pointer - GDALFunctions.Module.setValue(datasetList, dataset.pointer, '*'); - - const driverIndex = options.indexOf('-of') + 1; - let ext = 'unknown'; - if (driverIndex !== 0) { - const driverName = options[driverIndex]; - const driver = drivers.raster[driverName]; - if (driver) ext = driver.extension; - } - - const finalOutputName = outputName || dataset.path.split('.', 1)[0]; - const filePath = `${OUTPUTPATH}/${finalOutputName}.${ext}`; - const datasetPtr = GDALFunctions.GDALWarp(filePath, null, 1, datasetList, translateOptionsPtr, null); - const outputFiles = getFileListFromDataset(datasetPtr); - GDALFunctions.GDALWarpAppOptionsFree(translateOptionsPtr); - clearOptions(optStr); - GDALFunctions.GDALClose(datasetPtr); - - if (GDALFunctions.CPLGetLastErrorNo() >= 3) { - const error = getGdalError(); - reject(error); - } else { - resolve({ - local: filePath, - real: `${getRealOutputPath()}/${finalOutputName}.${ext}`, - all: outputFiles.map((file) => ({ - local: file, - real: file.replace(`${OUTPUTPATH}/`, `${getRealOutputPath()}/`), - })), - }); - } - }); -} diff --git a/src/allJsFunctions/application/gdalwarp.spec.js b/src/allJsFunctions/application/gdalwarp.spec.js deleted file mode 100644 index 9713f09..0000000 --- a/src/allJsFunctions/application/gdalwarp.spec.js +++ /dev/null @@ -1,91 +0,0 @@ -/* eslint-disable global-require */ -/* eslint-disable func-names */ -const isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'; // https://github.com/iliakan/detect-node/blob/master/index.js - -let Gdal; -let assert; - -if (isNode) assert = require('chai').assert; -else assert = chai.assert; - -describe('application / gdalwarp', function () { - before(async function () { - if (isNode) { - this.timeout(15000); - const dest = require('fs').mkdtempSync('/tmp/gdaljs'); - const initGdalJs = require('../../../build/package/gdal3.coverage'); - Gdal = await initGdalJs({ path: 'build/package', dest }); - } else { - this.timeout(30000); - Gdal = await initGdalJs({ path: '../package', useWorker: false }); - } - }); - it('gdalwarp', async function () { - let file = 'data/simple-polygon-line-point.tif'; - if (!isNode) { - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'simple-polygon-line-point.tif'); - } else file = `test/${file}`; - - const result = await Gdal.open(file); - const firstDataset = result.datasets[0]; - const info = await Gdal.getInfo(firstDataset); - assert.strictEqual(firstDataset.pointer > 0, true, 'An error occurred while opening the tif file. (ptr == 0)'); - assert.strictEqual(info.bandCount > 0, true, `tif file has no layer. (bandCount == ${info.bandCount})`); - assert.strictEqual(info.projectionWkt.substr(info.projectionWkt.length - 50).indexOf('AUTHORITY["EPSG","4326"]') !== -1, true, '4326'); - assert.strictEqual(info.projectionWkt.substr(info.projectionWkt.length - 50).indexOf('AUTHORITY["EPSG","3857"]') !== -1, false, '3857'); - - const outputPath = await Gdal.gdalwarp(firstDataset, ['-of', 'GTiff', '-t_srs', 'EPSG:3857']); - assert.strictEqual(outputPath.local, '/output/simple-polygon-line-point.tif', 'An error occurred while converting the file.'); - - const result2 = await Gdal.open(outputPath.real); - const firstDataset2 = result2.datasets[0]; - const info2 = await Gdal.getInfo(firstDataset2); - assert.strictEqual(firstDataset2.pointer > 0, true, 'An error occurred while converting the file. (ptr == 0)'); - assert.strictEqual(info2.projectionWkt.substr(info2.projectionWkt.length - 50).indexOf('AUTHORITY["EPSG","4326"]') !== -1, false, '4326 2'); - assert.strictEqual(info2.projectionWkt.substr(info2.projectionWkt.length - 50).indexOf('AUTHORITY["EPSG","3857"]') !== -1, true, '3857 2'); - }); - it('gdalwarp fail', async function () { - let file = 'data/simple-polygon-line-point.tif'; - if (!isNode) { - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'simple-polygon-line-point.tif'); - } else file = `test/${file}`; - - const result = await Gdal.open(file); - const firstDataset = result.datasets[0]; - const info = await Gdal.getInfo(firstDataset); - assert.strictEqual(firstDataset.pointer > 0, true, 'An error occurred while opening the tif file. (ptr == 0)'); - assert.strictEqual(info.bandCount > 0, true, `tif file has no layer. (bandCount == ${info.bandCount})`); - assert.strictEqual(info.projectionWkt.substr(info.projectionWkt.length - 50).indexOf('AUTHORITY["EPSG","4326"]') !== -1, true, '4326'); - assert.strictEqual(info.projectionWkt.substr(info.projectionWkt.length - 50).indexOf('AUTHORITY["EPSG","3857"]') !== -1, false, '3857'); - let failed = false; - return Gdal.gdalwarp(firstDataset, []).then(() => { failed = false; }).catch(() => { failed = true; }) - .finally(() => { assert.strictEqual(failed, true, 'An error occurred'); }); - }); - it('gdalwarp with config', async function () { - let file = 'data/simple-polygon-line-point.tif'; - if (!isNode) { - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'simple-polygon-line-point.tif'); - } else file = `test/${file}`; - - const result = await Gdal.open(file); - const firstDataset = result.datasets[0]; - const info = await Gdal.getInfo(firstDataset); - assert.strictEqual(firstDataset.pointer > 0, true, 'An error occurred while opening the tif file. (ptr == 0)'); - assert.strictEqual(info.bandCount > 0, true, `tif file has no layer. (bandCount == ${info.bandCount})`); - assert.strictEqual(info.projectionWkt.substr(info.projectionWkt.length - 50).indexOf('AUTHORITY["EPSG","4326"]') !== -1, true, '4326'); - assert.strictEqual(info.projectionWkt.substr(info.projectionWkt.length - 50).indexOf('AUTHORITY["EPSG","3857"]') !== -1, false, '3857'); - - const outputPath = await Gdal.gdalwarp(firstDataset, ['-of', 'GTiff', '-t_srs', 'EPSG:3857', '--config', 'NAME', 'TEST']); - assert.strictEqual(outputPath.local, '/output/simple-polygon-line-point.tif', 'An error occurred while converting the file.'); - - const result2 = await Gdal.open(outputPath.real); - const firstDataset2 = result2.datasets[0]; - const info2 = await Gdal.getInfo(firstDataset2); - assert.strictEqual(firstDataset2.pointer > 0, true, 'An error occurred while converting the file. (ptr == 0)'); - assert.strictEqual(info2.projectionWkt.substr(info2.projectionWkt.length - 50).indexOf('AUTHORITY["EPSG","4326"]') !== -1, false, '4326 2'); - assert.strictEqual(info2.projectionWkt.substr(info2.projectionWkt.length - 50).indexOf('AUTHORITY["EPSG","3857"]') !== -1, true, '3857 2'); - }); -}); diff --git a/src/allJsFunctions/application/ogr2ogr.js b/src/allJsFunctions/application/ogr2ogr.js deleted file mode 100644 index cbac5fa..0000000 --- a/src/allJsFunctions/application/ogr2ogr.js +++ /dev/null @@ -1,80 +0,0 @@ -/* eslint-disable no-underscore-dangle */ -/* eslint-disable camelcase */ -import { GDALFunctions } from '../../allCFunctions'; -import { getGdalError } from '../helper/error'; -import { getOptions, clearOptions } from '../helper/options'; -import { OUTPUTPATH, getRealOutputPath } from '../helper/const'; -import { drivers } from '../helper/drivers'; -import { getFileListFromDataset } from '../helper/getFileList'; - -/** - * ogr2ogr function can be used to convert simple features data between file formats. - * It can also perform various operations during the process, - * such as spatial or attribute selection, reducing the set of attributes, - * setting the output coordinate system or even reprojecting the features during translation. - * - * {@link https://gdal.org/programs/ogr2ogr.html} - * - * @module a/ogr2ogr - * @async - * @param {TypeDefs.Dataset} dataset Dataset to be converted. - * @param {Array} [options] Options ({@link https://gdal.org/programs/ogr2ogr.html#description}) - * @param {string} [outputName] Destination file name without extension. - * @return {Promise} "Promise" returns paths of created files. - * @example - * const Gdal = await initGdalJs(); - * const dataset = (await Gdal.open('data.mbtiles')).datasets[0]; - * const options = [ - * '-f', 'GeoJSON', - * '-t_srs', 'EPSG:4326' - * ]; - * const filePath = await Gdal.ogr2ogr(dataset, options); - * -*/ -export default function ogr2ogr(dataset, options = [], outputName = null) { - return new Promise((resolve, reject) => { - const optStr = getOptions(options); - const config = optStr.config; - Object.entries(config).forEach(([key, value]) => { - GDALFunctions.CPLSetConfigOption(key, value); - }); - const translateOptionsPtr = GDALFunctions.GDALVectorTranslateOptionsNew(optStr.ptr, null); - - const datasetList = GDALFunctions.Module._malloc(4); - GDALFunctions.Module.setValue(datasetList, dataset.pointer, '*'); - - const driverIndex = options.indexOf('-f') + 1; - let ext = 'unknown'; - if (driverIndex !== 0) { - const driverName = options[driverIndex]; - const driver = drivers.vector[driverName]; - if (driver) { - if (driverName === 'MapInfo File' && options.indexOf('FORMAT=MIF') !== -1) ext = 'mif'; - else ext = driver.extension; - } - } - - const finalOutputName = outputName || dataset.path.split('.', 1)[0]; - const filePath = `${OUTPUTPATH}/${finalOutputName}.${ext}`; - const datasetPtr = GDALFunctions.GDALVectorTranslate(filePath, null, 1, datasetList, translateOptionsPtr, null); - const outputFiles = getFileListFromDataset(datasetPtr); - - GDALFunctions.GDALVectorTranslateOptionsFree(translateOptionsPtr); - clearOptions(optStr); - GDALFunctions.GDALClose(datasetPtr); - - if (GDALFunctions.CPLGetLastErrorNo() >= 3) { - const error = getGdalError(); - reject(error); - } else { - resolve({ - local: filePath, - real: `${getRealOutputPath()}/${finalOutputName}.${ext}`, - all: outputFiles.map((file) => ({ - local: file, - real: file.replace(`${OUTPUTPATH}/`, `${getRealOutputPath()}/`), - })), - }); - } - }); -} diff --git a/src/allJsFunctions/application/ogr2ogr.spec.js b/src/allJsFunctions/application/ogr2ogr.spec.js deleted file mode 100644 index 252e8c9..0000000 --- a/src/allJsFunctions/application/ogr2ogr.spec.js +++ /dev/null @@ -1,80 +0,0 @@ -/* eslint-disable global-require */ -/* eslint-disable func-names */ -const isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'; // https://github.com/iliakan/detect-node/blob/master/index.js - -let Gdal; -let assert; - -if (isNode) assert = require('chai').assert; -else assert = chai.assert; - -describe('application / ogr2ogr', function () { - before(async function () { - if (isNode) { - this.timeout(15000); - const dest = require('fs').mkdtempSync('/tmp/gdaljs'); - const initGdalJs = require('../../../build/package/gdal3.coverage'); - Gdal = await initGdalJs({ path: 'build/package', dest }); - } else { - this.timeout(30000); - Gdal = await initGdalJs({ path: '../package', useWorker: false }); - } - }); - it('ogr2ogr', async function () { - let file = 'data/polygon-line-point.geojson'; - if (!isNode) { - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'polygon-line-point.geojson'); - } else file = `test/${file}`; - - const result = await Gdal.open(file); - const firstDataset = result.datasets[0]; - assert.strictEqual(firstDataset.pointer > 0, true, 'An error occurred while opening the geojson file. (ptr == 0)'); - const outputPath = await Gdal.ogr2ogr(firstDataset, ['-f', 'MapInfo File', '-dsco', 'FORMAT=MIF']); - assert.strictEqual(outputPath.local, '/output/polygon-line-point.mif', 'An error occurred while converting the file.'); - - const result2 = await Gdal.open(outputPath.real); - const firstDataset2 = result2.datasets[0]; - const info = await Gdal.getInfo(firstDataset2); - assert.strictEqual(firstDataset2.pointer > 0, true, 'An error occurred while converting the file. (ptr == 0)'); - assert.strictEqual(info.featureCount > 0, true, 'mif file has no feature. (featureCount == 0)'); - const outputPath2 = await Gdal.ogr2ogr(firstDataset2, ['-f', 'GeoJSON']); - - const result3 = await Gdal.open(outputPath2.real); - const firstDataset3 = result3.datasets[0]; - const info3 = await Gdal.getInfo(firstDataset3); - assert.strictEqual(info3.featureCount > 0, true, 'geojson file has no feature. (featureCount == 0)'); - }); - it('ogr2ogr fail', async function () { - let file = 'data/polygon-line-point.geojson'; - if (!isNode) { - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'polygon-line-point.geojson'); - } else file = `test/${file}`; - - const result = await Gdal.open(file); - const firstDataset = result.datasets[0]; - assert.strictEqual(firstDataset.pointer > 0, true, 'An error occurred while opening the geojson file. (ptr == 0)'); - - let failed = false; - return Gdal.ogr2ogr(firstDataset, ['-f', 'PCIDSK2']).then(() => { failed = false; }).catch(() => { failed = true; }) - .finally(() => { assert.strictEqual(failed, true, 'An error occurred'); }); - }); - it('ogr2ogr with config', async function () { - let file = 'data/polygon-line-point.geojson'; - if (!isNode) { - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'polygon-line-point.geojson'); - } else file = `test/${file}`; - - const result = await Gdal.open(file); - const firstDataset = result.datasets[0]; - assert.strictEqual(firstDataset.pointer > 0, true, 'An error occurred while opening the geojson file. (ptr == 0)'); - const outputPath = await Gdal.ogr2ogr(firstDataset, ['-f', 'MapInfo File', '-dsco', 'FORMAT=MIF', '--config', 'MITAB_SET_TOWGS84_ON_KNOWN_DATUM', 'YES']); - assert.strictEqual(outputPath.local, '/output/polygon-line-point.mif', 'An error occurred while converting the file.'); - - const result2 = await Gdal.open(outputPath.real); - const firstDataset2 = result2.datasets[0]; - assert.strictEqual(firstDataset2.pointer > 0, true, 'An error occurred while converting the file. (ptr == 0)'); - }); -}); diff --git a/src/allJsFunctions/application/ogrinfo.js b/src/allJsFunctions/application/ogrinfo.js deleted file mode 100644 index fe2c2bb..0000000 --- a/src/allJsFunctions/application/ogrinfo.js +++ /dev/null @@ -1,44 +0,0 @@ -/* eslint-disable no-underscore-dangle */ -/* eslint-disable camelcase */ -import { GDALFunctions } from '../../allCFunctions'; -import { getGdalError } from '../helper/error'; -import { getOptions, clearOptions } from '../helper/options'; - -/** - * The ogrinfo program lists various information about an OGR-supported data source to stdout (the terminal). - * By executing SQL statements it is also possible to edit data. - * - * {@link https://gdal.org/programs/ogrinfo.html} - * - * @module a/ogrinfo - * @async - * @param {TypeDefs.Dataset} dataset Dataset - * @param {Array} [options] Options ({@link https://gdal.org/programs/ogrinfo.html#description}) - * @return {Promise} "Promise" returns information about the OGR-supported data source - * @example - * const Gdal = await initGdalJs(); - * const dataset = (await Gdal.open('data.geojson')).datasets[0]; - * const info = await Gdal.ogrinfo(dataset); - * -*/ -export default function ogrinfo(dataset, options = []) { - return new Promise((resolve, reject) => { - const optStr = getOptions(['-json', ...options]); - const config = optStr.config; - Object.entries(config).forEach(([key, value]) => { - GDALFunctions.CPLSetConfigOption(key, value); - }); - const gdalInfoOptionsPtr = GDALFunctions.GDALVectorInfoOptionsNew(optStr.ptr, null); - - const gdalInfo = GDALFunctions.GDALVectorInfo(dataset.pointer, gdalInfoOptionsPtr); - GDALFunctions.GDALVectorInfoOptionsFree(gdalInfoOptionsPtr); - clearOptions(optStr); - - if (GDALFunctions.CPLGetLastErrorNo() >= 3) { - const error = getGdalError(); - reject(error); - } else { - resolve(JSON.parse(gdalInfo)); - } - }); -} diff --git a/src/allJsFunctions/application/ogrinfo.spec.js b/src/allJsFunctions/application/ogrinfo.spec.js deleted file mode 100644 index c8d2a41..0000000 --- a/src/allJsFunctions/application/ogrinfo.spec.js +++ /dev/null @@ -1,36 +0,0 @@ -/* eslint-disable global-require */ -/* eslint-disable func-names */ -const isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'; // https://github.com/iliakan/detect-node/blob/master/index.js - -let Gdal; -let assert; - -if (isNode) assert = require('chai').assert; -else assert = chai.assert; - -describe('application / ogrinfo', function () { - before(async function () { - if (isNode) { - this.timeout(15000); - const dest = require('fs').mkdtempSync('/tmp/gdaljs'); - const initGdalJs = require('../../../build/package/gdal3.coverage'); - Gdal = await initGdalJs({ path: 'build/package', dest }); - } else { - this.timeout(30000); - Gdal = await initGdalJs({ path: '../package', useWorker: false }); - } - }); - it('ogrinfo', async function () { - let file = 'data/polygon-line-point.geojson'; - if (!isNode) { - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'polygon-line-point.geojson'); - } else file = `test/${file}`; - - const result = await Gdal.open(file); - const firstDataset = result.datasets[0]; - assert.strictEqual(firstDataset.pointer > 0, true, 'An error occurred while opening the geojson file. (ptr == 0)'); - const info = await Gdal.ogrinfo(firstDataset); - assert.strictEqual(info.driverLongName, 'GeoJSON'); - }); -}); diff --git a/src/allJsFunctions/function/close.js b/src/allJsFunctions/function/close.js deleted file mode 100644 index dd9cad9..0000000 --- a/src/allJsFunctions/function/close.js +++ /dev/null @@ -1,21 +0,0 @@ -import { GDALFunctions } from '../../allCFunctions'; - -/** - * Close the dataset. The memory associated to the dataset will be freed. - * - * Datasets **must** be closed when you're finished with them, or the - * memory consumption will grow forever. - * - * @module f/close - * @async - * @param {TypeDefs.Dataset} dataset Dataset to be closed. - * @return {Promise} - * @example - * Gdal.close(dataset); -*/ -export default function close(dataset) { - return new Promise((resolve) => { - GDALFunctions.GDALClose(dataset.pointer); - resolve(); - }); -} diff --git a/src/allJsFunctions/function/close.spec.js b/src/allJsFunctions/function/close.spec.js deleted file mode 100644 index abb3000..0000000 --- a/src/allJsFunctions/function/close.spec.js +++ /dev/null @@ -1,37 +0,0 @@ -/* eslint-disable global-require */ -/* eslint-disable func-names */ -const isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'; // https://github.com/iliakan/detect-node/blob/master/index.js - -let Gdal; -let assert; - -if (isNode) assert = require('chai').assert; -else assert = chai.assert; - -describe('function / close', function () { - before(async function () { - if (isNode) { - this.timeout(15000); - const dest = require('fs').mkdtempSync('/tmp/gdaljs'); - const initGdalJs = require('../../../build/package/gdal3.coverage'); - Gdal = await initGdalJs({ path: 'build/package', dest }); - } else { - this.timeout(30000); - Gdal = await initGdalJs({ path: '../package', useWorker: false }); - } - }); - it('close successfully', async function () { - let file = 'data/simple-polygon-line-point.geojson'; - if (!isNode) { - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'simple-polygon-line-point.geojson'); - } else file = `test/${file}`; - - const result = await Gdal.open(file); - const firstDataset = result.datasets[0]; - const info = await Gdal.getInfo(firstDataset); - assert.strictEqual(firstDataset.pointer > 0, true, 'An error occurred while opening the geojson file. (ptr == 0)'); - assert.strictEqual(info.featureCount > 0, true, 'geojson file has no feature. (featureCount == 0)'); - await Gdal.close(firstDataset); - }); -}); diff --git a/src/allJsFunctions/function/getFileBytes.js b/src/allJsFunctions/function/getFileBytes.js deleted file mode 100644 index 7790421..0000000 --- a/src/allJsFunctions/function/getFileBytes.js +++ /dev/null @@ -1,44 +0,0 @@ -import { GDALFunctions } from '../../allCFunctions'; - -/** - * Get bytes of the file. - * - * @module f/getFileBytes - * @async - * @param {string|TypeDefs.FilePath} filePath The path of the file to be downloaded. - * @return {Promise} "Promise" returns an array of byte of the file. - * @example - * // Download file from "/output" path on the browser. - * const files = await Gdal.getOutputFiles(); - * const filePath = files[0].path; - * const fileBytes = Gdal.getFileBytes(filePath); - * const fileName = filePath.split('/').pop(); - * saveAs(fileBytes, filename); - * - * function saveAs(fileBytes, fileName) { - * const blob = new Blob([fileBytes]); - * const link = document.createElement('a'); - * link.href = URL.createObjectURL(blob); - * link.download = fileName; - * link.click(); - * } -*/ - -export default function getFileBytes(filePath) { - return new Promise((resolve) => { - let path; - if (!filePath) { - resolve(new Uint8Array()); - return; - } - - if (filePath.local) { - path = filePath.local; - } else { - path = filePath; - } - - const bytes = GDALFunctions.Module.FS.readFile(path, { encoding: 'binary' }); - resolve(bytes); - }); -} diff --git a/src/allJsFunctions/function/getFileBytes.spec.js b/src/allJsFunctions/function/getFileBytes.spec.js deleted file mode 100644 index 8277466..0000000 --- a/src/allJsFunctions/function/getFileBytes.spec.js +++ /dev/null @@ -1,58 +0,0 @@ -/* eslint-disable global-require */ -/* eslint-disable func-names */ -const isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'; // https://github.com/iliakan/detect-node/blob/master/index.js - -let Gdal; -let assert; - -if (isNode) assert = require('chai').assert; -else assert = chai.assert; - -describe('function / getFileBytes', function () { - before(async function () { - if (isNode) { - this.timeout(15000); - const dest = require('fs').mkdtempSync('/tmp/gdaljs'); - const initGdalJs = require('../../../build/package/gdal3.coverage'); - Gdal = await initGdalJs({ path: 'build/package', dest }); - } else { - this.timeout(30000); - Gdal = await initGdalJs({ path: '../package', useWorker: false }); - } - }); - it('getFileBytes', async function () { - let file = 'data/simple-polygon-line-point.geojson'; - if (!isNode) { - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'simple-polygon-line-point.geojson'); - } else file = `test/${file}`; - - const result = await Gdal.open(file); - const firstDataset = result.datasets[0]; - const info = await Gdal.getInfo(firstDataset); - assert.strictEqual(firstDataset.pointer > 0, true, 'An error occurred while opening the geojson file. (ptr == 0)'); - assert.strictEqual(info.featureCount > 0, true, 'geojson file has no feature. (featureCount == 0)'); - - const fileBytes = await Gdal.getFileBytes('/input/simple-polygon-line-point.geojson'); - assert.strictEqual(fileBytes.length > 1000, true, `Wrong file size (file size: ${fileBytes.length})`); - }); - it('getFileBytes object', async function () { - let file = 'data/simple-polygon-line-point.geojson'; - if (!isNode) { - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'simple-polygon-line-point.geojson'); - } else file = `test/${file}`; - - const result = await Gdal.open(file); - const firstDataset = result.datasets[0]; - assert.strictEqual(firstDataset.pointer > 0, true, 'An error occurred while opening the geojson file. (ptr == 0)'); - const outputPath = await Gdal.ogr2ogr(firstDataset, ['-f', 'MapInfo File', '-dsco', 'FORMAT=MIF']); - - const fileBytes = await Gdal.getFileBytes(outputPath); - assert.strictEqual(fileBytes.length > 1000, true, `Wrong file size (file size: ${fileBytes.length})`); - }); - it('getFileBytes null', async function () { - const fileBytes = await Gdal.getFileBytes(); - assert.strictEqual(fileBytes.length, 0, `Wrong file size (file size: ${fileBytes.length})`); - }); -}); diff --git a/src/allJsFunctions/function/getInfo.js b/src/allJsFunctions/function/getInfo.js deleted file mode 100644 index 3e4209c..0000000 --- a/src/allJsFunctions/function/getInfo.js +++ /dev/null @@ -1,139 +0,0 @@ -/* eslint-disable no-underscore-dangle */ -/* eslint-disable max-len */ -import { GDALFunctions } from '../../allCFunctions'; - -/** - * Lists information about a raster/vector dataset. - * - * @module f/getInfo - * @async - * @param {TypeDefs.Dataset} dataset Dataset - * @return {Promise} "Promise" returns an object containing file information. - * @example - * const dataset = (await Gdal.open("...")).datasets[0]; - * const datasetInfo = await Gdal.getInfo(dataset); - * console.log(datasetInfo); - * @example - * // Raster output - * { - * "type": "raster", - * "bandCount": 1, - * "width": 514, - * "height": 515, - * "projectionWkt": "PROJCS[\"unnamed\",GEOGCS[\"NAD27\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378206.4,294.978698213898,AUTHORITY[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4267\"]],PROJECTION[\"Cylindrical_Equal_Area\"],PARAMETER[\"standard_parallel_1\",33.75],PARAMETER[\"central_meridian\",-117.333333333333],PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]]", - * "coordinateTransform": { - * "0": -28493.166784412522, - * "1": 60.02213698319374, - * "2": 0, - * "3": 4255884.5438021915, - * "4": 0, - * "5": -60.02213698319374 - * }, - * "corners": [ - * [ - * -28493.166784412522, - * 4255884.5438021915 - * ], - * [ - * 2358.211624949061, - * 4255884.5438021915 - * ], - * [ - * 2358.211624949061, - * 4224973.143255847 - * ], - * [ - * -28493.166784412522, - * 4224973.143255847 - * ] - * ], - * "driverName": "GeoTIFF", - * "dsName": "/input/cea.tif" - * } - * @example - * // Vector output - * { - * "type": "vector", - * "layerCount": 1, - * "featureCount": 2, - * "layers": [ - * { - * "name": "polygon", - * "featureCount": 2 - * } - * ], - * "dsName": "/input/polygon.geojson", - * "driverName": "GeoJSON" - * } -*/ -export default function getInfo(dataset) { - return new Promise((resolve) => { - const bandCount = GDALFunctions.GDALGetRasterCount(dataset.pointer); - const layerCount = GDALFunctions.GDALDatasetGetLayerCount(dataset.pointer); - if (bandCount > 0 && layerCount === 0) { // Raster - const maxX = GDALFunctions.GDALGetRasterXSize(dataset.pointer); - const maxY = GDALFunctions.GDALGetRasterYSize(dataset.pointer); - const wktStr = GDALFunctions.GDALGetProjectionRef(dataset.pointer); - const byteOffset = GDALFunctions.Module._malloc(6 * Float64Array.BYTES_PER_ELEMENT); - GDALFunctions.GDALGetGeoTransform(dataset.pointer, byteOffset); - const geoTransform = GDALFunctions.Module.HEAPF64.subarray( - byteOffset / Float64Array.BYTES_PER_ELEMENT, - (byteOffset / Float64Array.BYTES_PER_ELEMENT) + 6, - ); - const corners = [ - [0, 0], - [maxX, 0], - [maxX, maxY], - [0, maxY], - ]; - const geoCorners = corners.map((coords) => { - const x = coords[0]; - const y = coords[1]; - return [ - geoTransform[0] + (geoTransform[1] * x) + (geoTransform[2] * y), - geoTransform[3] + (geoTransform[4] * x) + (geoTransform[5] * y), - ]; - }); - const driverPtr = GDALFunctions.GDALGetDatasetDriver(dataset.pointer); - const driverName = GDALFunctions.GDALGetDriverLongName(driverPtr); - const dsName = GDALFunctions.OGR_DS_GetName(dataset.pointer); - resolve(JSON.parse(JSON.stringify({ - type: 'raster', - bandCount, - width: maxX, - height: maxY, - projectionWkt: wktStr, - coordinateTransform: geoTransform, - corners: geoCorners, - driverName, - dsName, - }))); - } else { // Vector - // const layerCount2 = GDALFunctions.OGR_DS_GetLayerCount(dataset.pointer); - - const layers = []; - for (let i = 0; i < layerCount; i += 1) { - const layerPtr = GDALFunctions.OGR_DS_GetLayer(dataset.pointer, i); - const layerName = GDALFunctions.OGR_L_GetName(layerPtr); - const featureCount = GDALFunctions.OGR_L_GetFeatureCount(layerPtr, 1); - layers.push({ - name: layerName, - featureCount, - }); - } - const featureCount = layers.reduce((acc, layer) => acc + layer.featureCount, 0); - - const dsName = GDALFunctions.OGR_DS_GetName(dataset.pointer); - const driverPtr = GDALFunctions.GDALGetDatasetDriver(dataset.pointer); - const driverName = GDALFunctions.GDALGetDriverLongName(driverPtr); - resolve({ - type: 'vector', - layerCount, - featureCount, - layers, - dsName, - driverName, - }); - } - }); -} diff --git a/src/allJsFunctions/function/getInfo.spec.js b/src/allJsFunctions/function/getInfo.spec.js deleted file mode 100644 index fb1984d..0000000 --- a/src/allJsFunctions/function/getInfo.spec.js +++ /dev/null @@ -1,36 +0,0 @@ -/* eslint-disable global-require */ -/* eslint-disable func-names */ -const isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'; // https://github.com/iliakan/detect-node/blob/master/index.js - -let Gdal; -let assert; - -if (isNode) assert = require('chai').assert; -else assert = chai.assert; - -describe('function / getInfo', function () { - before(async function () { - if (isNode) { - this.timeout(15000); - const dest = require('fs').mkdtempSync('/tmp/gdaljs'); - const initGdalJs = require('../../../build/package/gdal3.coverage'); - Gdal = await initGdalJs({ path: 'build/package', dest }); - } else { - this.timeout(30000); - Gdal = await initGdalJs({ path: '../package', useWorker: false }); - } - }); - it('getInfo', async function () { - let file = 'data/simple-polygon-line-point.geojson'; - if (!isNode) { - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'simple-polygon-line-point.geojson'); - } else file = `test/${file}`; - - const result = await Gdal.open(file); - const firstDataset = result.datasets[0]; - const info = await Gdal.getInfo(firstDataset); - assert.strictEqual(firstDataset.pointer > 0, true, 'An error occurred while opening the geojson file. (ptr == 0)'); - assert.strictEqual(info.featureCount > 0, true, 'geojson file has no feature. (featureCount == 0)'); - }); -}); diff --git a/src/allJsFunctions/function/getOutputFiles.js b/src/allJsFunctions/function/getOutputFiles.js deleted file mode 100644 index 77e5c36..0000000 --- a/src/allJsFunctions/function/getOutputFiles.js +++ /dev/null @@ -1,20 +0,0 @@ -import getFileList from '../helper/getFileList'; - -/** - * Get paths of created files. Returns empty array on Node.js. - * - * @module f/getOutputFiles - * @async - * @return {Promise>} "Promise" returns path and size of created files. - * @example - * const files = await Gdal.getOutputFiles(); - * files.forEach((fileInfo) => { - * console.log(`file path: ${fileInfo.path}, file size: ${fileInfo.size}`); - * }); -*/ -export default function getOutputFiles() { - return new Promise((resolve) => { - const files = getFileList(); - resolve(files); - }); -} diff --git a/src/allJsFunctions/function/getOutputFiles.spec.js b/src/allJsFunctions/function/getOutputFiles.spec.js deleted file mode 100644 index bc27219..0000000 --- a/src/allJsFunctions/function/getOutputFiles.spec.js +++ /dev/null @@ -1,42 +0,0 @@ -/* eslint-disable global-require */ -/* eslint-disable func-names */ -const isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'; // https://github.com/iliakan/detect-node/blob/master/index.js - -let Gdal; -let assert; - -if (isNode) assert = require('chai').assert; -else assert = chai.assert; - -describe('function / getOutputFiles', function () { - before(async function () { - if (isNode) { - this.timeout(15000); - const dest = require('fs').mkdtempSync('/tmp/gdaljs'); - const initGdalJs = require('../../../build/package/gdal3.coverage'); - Gdal = await initGdalJs({ path: 'build/package', dest }); - } else { - this.timeout(30000); - Gdal = await initGdalJs({ path: '../package', useWorker: false }); - } - }); - it('getOutputFiles', async function () { - let file = 'data/polygon-line-point.geojson'; - if (!isNode) { - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'polygon-line-point.geojson'); - } else file = `test/${file}`; - - const result = await Gdal.open(file); - const firstDataset = result.datasets[0]; - assert.strictEqual(firstDataset.pointer > 0, true, 'An error occurred while opening the geojson file. (ptr == 0)'); - await Gdal.ogr2ogr(firstDataset, ['-f', 'MapInfo File']); - - const files = await Gdal.getOutputFiles(); - if (isNode) { - assert.strictEqual(files.length, 0, `Wrong file count (file count: ${files.length})`); - } else { - assert.strictEqual(files.length > 0, true, `Wrong file count (file count: ${files.length})`); - } - }); -}); diff --git a/src/allJsFunctions/function/open.js b/src/allJsFunctions/function/open.js deleted file mode 100644 index 26fe913..0000000 --- a/src/allJsFunctions/function/open.js +++ /dev/null @@ -1,150 +0,0 @@ -/* eslint-disable no-continue */ -import { GDALFunctions } from '../../allCFunctions'; -import { getGdalError } from '../helper/error'; -import { INPUTPATH, OUTPUTPATH } from '../helper/const'; -import { mount } from '../helper/filesystem'; -import { clearOptions, getOptions } from '../helper/options'; -import gdalinfo from '../application/gdalinfo'; -import ogrinfo from '../application/ogrinfo'; - -/** - * Opens files selected with HTML input element. - * - * @module f/open - * @async - * @param {FileList|File|Array|string} files Returned by the files property of the HTML input element. - * @param {Array} openOptions Open options passed to candidate drivers. - * @param {Array} VFSHandlers List of Virtual File System handlers, see https://gdal.org/user/virtual_file_systems.html - * @return {Promise} "Promise" returns dataset list and error list. - * @example - * // Opening file from file input. - * // HTML - * - * // JS - * function onFileChange({ target }) { - * const result = await Gdal.open(target.file); - * } - * @example - * // Opening files from file input. (multiple) - * // HTML - * - * // JS - * function onFileChange({ target }) { - * const result = await Gdal.open(target.files); - * } - * @example - * // Opening a file from the network. - * const fileData = await fetch('test/polygon.geojson'); - * const file = new File([await fileData.blob()], "polygon.geojson"); - * const result = await Gdal.open(file); - * @example - * // Opening a file using the virtual file system handler, ie. /vsicurl/ or /vsizip/. - * // One common scenario is a .zip shapefile - * const result = await Gdal.open(file, [], ['vsizip']); - * @example - * // Opening a file from filesystem on Node.js. - * const result = await Gdal.open('test/polygon.geojson'); - * @example - * // Opening a file from filesystem on Node.js with open options. - * const result = await Gdal.open('test/points.csv', ['X_POSSIBLE_NAMES=lng', 'Y_POSSIBLE_NAMES=lat']); - * @example - * // Opening files from filesystem on Node.js. - * const result = await Gdal.open(['test/polygon.geojson', 'test/line.geojson']); - * @example - * // Opening files from virtual gdal3.js path. - * // * Opened files are saved in the /input/... virtual path. - * // * Converted files are saved in the /output/... virtual path. - * const result = await Gdal.open('/output/polygon.geojson'); - * const result2 = await Gdal.open('/input/polygon.geojson'); - * -*/ -export default function open(fileOrFiles, openOptions = [], VFSHandlers = []) { - let files = fileOrFiles; - const optStr = getOptions(openOptions); - if (!(Array.isArray(files) || (typeof FileList === 'function' && files instanceof FileList))) { - files = [files]; - } - - return new Promise((resolve, reject) => { - const internalFiles = []; - const externalFiles = []; - [...files].forEach((file) => { - if ((typeof file === 'string' || file instanceof String) && ( - file.substring(0, INPUTPATH.length + 1) === `${INPUTPATH}/` || file.substring(0, OUTPUTPATH.length + 1) === `${OUTPUTPATH}/` - )) { - internalFiles.push({ name: file.substring(file.indexOf('/', 1) + 1), internal: true, prefix: file.substring(0, file.indexOf('/', 1)) }); - } else { - externalFiles.push(file); - } - }); - mount(externalFiles).then((mountedExternalFiles) => { - const mountedFiles = [...mountedExternalFiles, ...internalFiles]; - const errors = []; - GDALFunctions.CPLErrorReset(); - const inputResults = {}; - const promises = []; - for (let i = 0; i < mountedFiles.length; i += 1) { - const path = mountedFiles[i].name; - const name = path.split('.', 1)[0]; - - if (!inputResults[name]) inputResults[name] = {}; - if (inputResults[name].pointer) continue; - inputResults[name].path = path; - const vfsHandlerStr = VFSHandlers && VFSHandlers.length ? `/${VFSHandlers.join('/')}/` : ''; - let fileFullPath = `${vfsHandlerStr}${INPUTPATH}/${path}`; - if (mountedFiles[i].internal) fileFullPath = `${vfsHandlerStr}${mountedFiles[i].prefix}/${path}`; - - const datasetPtr = GDALFunctions.GDALOpenEx(fileFullPath, null, null, optStr.ptr, null); - if (datasetPtr === 0) { - const error = getGdalError(); - errors.push(error); - delete inputResults[name]; - continue; - } - inputResults[name].pointer = datasetPtr; - - const setLegacyType = () => { - const bandCount = GDALFunctions.GDALGetRasterCount(datasetPtr); - const layerCount = GDALFunctions.GDALDatasetGetLayerCount(datasetPtr); - - if (bandCount > 0 && layerCount === 0) { - inputResults[name].type = 'raster'; - } else { - inputResults[name].type = 'vector'; - } - }; - - const infoPromise = gdalinfo(inputResults[name]).then((info) => { - if (info && info.bands) { - const hasSize = info.size && info.size.length >= 2 && (info.size[0] > 0 || info.size[1] > 0); - inputResults[name].type = info.bands.length > 0 && hasSize ? 'raster' : 'vector'; - if (inputResults[name].type === 'vector') { - return ogrinfo(inputResults[name]).then((vectorInfo) => { - inputResults[name].info = vectorInfo; - }); - } - inputResults[name].info = info; - } else { - setLegacyType(); - } - return true; - }).catch(() => setLegacyType()); - promises.push(infoPromise); - } - - clearOptions(optStr); - - Promise.allSettled(promises).then(() => { - const datasets = Object.values(inputResults); - - // unmount(); - - if (datasets.length > 0 || errors.length === 0) { - resolve({ datasets, errors }); - } else { - reject(errors); - } - }); - }); - }); -} diff --git a/src/allJsFunctions/function/open.spec.js b/src/allJsFunctions/function/open.spec.js deleted file mode 100644 index 3389525..0000000 --- a/src/allJsFunctions/function/open.spec.js +++ /dev/null @@ -1,156 +0,0 @@ -/* eslint-disable global-require */ -/* eslint-disable func-names */ -const isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'; // https://github.com/iliakan/detect-node/blob/master/index.js - -let Gdal; -let assert; - -if (isNode) assert = require('chai').assert; -else assert = chai.assert; - -describe('function / open', function () { - before(async function () { - if (isNode) { - this.timeout(15000); - const dest = require('fs').mkdtempSync('/tmp/gdaljs'); - const initGdalJs = require('../../../build/package/gdal3.coverage'); - Gdal = await initGdalJs({ path: 'build/package', dest }); - } else { - this.timeout(30000); - Gdal = await initGdalJs({ path: '../package', useWorker: false }); - } - }); - it('open array multiple', async function () { - let file = 'data/polygon-line-point.geojson'; - if (!isNode) { - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'polygon-line-point.geojson'); - } else file = `test/${file}`; - - const result = await Gdal.open([file, file]); - const firstDataset = result.datasets[0]; - assert.strictEqual(firstDataset.pointer > 0, true, 'An error occurred while opening the geojson file. (ptr == 0)'); - assert.strictEqual(firstDataset.type === 'vector', true, 'No vector data in input file.'); - }); - if (!isNode) { - it('open FileList', async function () { - class FileList { - constructor() { - this.length = 0; - this.files = []; - this.index = -1; - } - - item(index) { - return this.files[index]; - } - - add(item) { - this.files.push(item); - this.length = this.files.length; - } - - next() { - this.index += 1; - return { value: this.item(this.index), done: this.index === this.length }; - } - - [Symbol.iterator]() { return this; } - } - window.FileList = FileList; - const fileList = new FileList(); - - let file = 'data/polygon-line-point.geojson'; - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'polygon-line-point.geojson'); - fileList.add(file); - - const result = await Gdal.open(fileList); - const firstDataset = result.datasets[0]; - assert.strictEqual(firstDataset.pointer > 0, true, 'An error occurred while opening the geojson file. (ptr == 0)'); - assert.strictEqual(firstDataset.type === 'vector', true, 'No vector data in input file.'); - }); - } - it('open vector', async function () { - let file = 'data/polygon-line-point.geojson'; - if (!isNode) { - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'polygon-line-point.geojson'); - } else file = `test/${file}`; - - const result = await Gdal.open(file); - const firstDataset = result.datasets[0]; - assert.strictEqual(firstDataset.pointer > 0, true, 'An error occurred while opening the geojson file. (ptr == 0)'); - assert.strictEqual(firstDataset.type === 'vector', true, 'No vector data in input file.'); - }); - it('open with open options', async function () { - let file = 'data/pts.csv'; - if (!isNode) { - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'pts.csv'); - } else file = `test/${file}`; - - const input = await Gdal.open(file, ['AUTODETECT_TYPE=YES', 'X_POSSIBLE_NAMES=lng', 'Y_POSSIBLE_NAMES=lat']); - const output = await Gdal.ogr2ogr(input.datasets[0], ['-f', 'GeoJSON', '-s_srs', 'EPSG:4326', '-t_srs', 'EPSG:4326']); - const bytes = await Gdal.getFileBytes(output); - - const result = JSON.parse(new TextDecoder().decode(bytes)); - assert.strictEqual(result.features.length, 2, 'Wrong number of features'); - assert.strictEqual(typeof result.features[0].properties.lng === 'number', true, 'Open option AUTODETECT_TYPE failed'); - assert.strictEqual(typeof result.features[0].properties.lat === 'number', true, 'Open option AUTODETECT_TYPE failed'); - assert.strictEqual(result.features[0].geometry !== null, true, 'Open options X_POSSIBLE_NAMES/Y_POSSIBLE_NAMES failed'); - }); - it('open raster', async function () { - let file = 'data/simple-polygon-line-point.tif'; - if (!isNode) { - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'simple-polygon-line-point.tif'); - } else file = `test/${file}`; - - const result = await Gdal.open(file); - const firstDataset = result.datasets[0]; - assert.strictEqual(firstDataset.pointer > 0, true, 'An error occurred while opening the tif file. (ptr == 0)'); - assert.strictEqual(firstDataset.type === 'raster', true, 'No raster data in input file.'); - }); - it('open fail', async function () { - let file = 'data/unknown.geojson'; - if (!isNode) { - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'unknown.geojson'); - } else file = `test/${file}`; - - let failed = false; - Gdal.open(file).then(() => { failed = false; }).catch(() => { failed = true; }) - .finally(() => { assert.strictEqual(failed, true, 'An error occurred'); }); - }); - it('open fail2', async function () { - let failed = false; - Gdal.open('/output/unknown').then(() => { failed = false; }).catch(() => { failed = true; }) - .finally(() => { assert.strictEqual(failed, true, 'An error occurred'); }); - }); - it('open local/real', async function () { - let file = 'data/polygon-line-point.geojson'; - if (!isNode) { - const fileData = await fetch(file); - file = new File([await fileData.blob()], 'polygon-line-point.geojson'); - } else file = `test/${file}`; - - const result = await Gdal.open(file); - const firstDataset = result.datasets[0]; - assert.strictEqual(firstDataset.pointer > 0, true, 'An error occurred while opening the geojson file. (ptr == 0)'); - const outputPath = await Gdal.ogr2ogr(firstDataset, ['-f', 'MapInfo File', '-dsco', 'FORMAT=MIF']); - assert.strictEqual(outputPath.local, '/output/polygon-line-point.mif', 'An error occurred while converting the file.'); - - const result2 = await Gdal.open(outputPath.real); - const firstDataset2 = result2.datasets[0]; - const info = await Gdal.getInfo(firstDataset2); - assert.strictEqual(firstDataset2.pointer > 0, true, 'An error occurred while converting the file. (ptr == 0)'); - assert.strictEqual(info.featureCount > 0, true, 'mif file has no feature. (featureCount == 0)'); - - const result3 = await Gdal.open(outputPath.local); - const firstDataset3 = result3.datasets[0]; - const info3 = await Gdal.getInfo(firstDataset3); - assert.strictEqual(firstDataset3.pointer > 0, true, 'An error occurred while converting the file. (ptr == 0)'); - assert.strictEqual(info3.featureCount > 0, true, 'mif file has no feature. (featureCount == 0)'); - }); -}); diff --git a/src/allJsFunctions/helper/const.js b/src/allJsFunctions/helper/const.js deleted file mode 100644 index 861c33e..0000000 --- a/src/allJsFunctions/helper/const.js +++ /dev/null @@ -1,12 +0,0 @@ -export const INPUTPATH = '/input'; -export const OUTPUTPATH = '/output'; - -let realOutputPath = OUTPUTPATH; - -export function getRealOutputPath() { - return realOutputPath; -} - -export function setRealOutputPath(path) { - realOutputPath = path; -} diff --git a/src/allJsFunctions/helper/drivers.js b/src/allJsFunctions/helper/drivers.js deleted file mode 100644 index e53b416..0000000 --- a/src/allJsFunctions/helper/drivers.js +++ /dev/null @@ -1,65 +0,0 @@ -/* eslint-disable object-property-newline */ -import convert from 'xml-js'; -import { GDALFunctions } from '../../allCFunctions'; - -export const drivers = { raster: {}, vector: {} }; - -function xmlToJs(data) { - if (data) { - const tempJs = convert.xml2js(data); - if (tempJs.elements && tempJs.elements.length > 0) { - if (tempJs.elements.length !== 1) console.warn('invalid xml!'); - if (tempJs.elements[0] && tempJs.elements[0].elements) { - return tempJs.elements[0].elements.map((o) => { - const temp = o.attributes; - if (o.elements && o.elements.length > 0) { - temp.options = o.elements.map((o2) => o2.elements[0].text); - } - return temp; - }); - } - } - } - return null; -} - -function getDriverData(driverPtr) { - const extensions = GDALFunctions.GDALGetMetadataItem(driverPtr, 'DMD_EXTENSIONS', null); - let extension = GDALFunctions.GDALGetMetadataItem(driverPtr, 'DMD_EXTENSION', null); - if (extension === '' && extensions !== '') { - extension = extensions.split(' ')[0]; - } - if (extension !== '') { - extension = extension.replace('.', '').replace('/', ''); - } - const shortName = GDALFunctions.GDALGetDescription(driverPtr); - if (shortName === 'GeoJSON') extension = 'geojson'; - const longName = GDALFunctions.GDALGetMetadataItem(driverPtr, 'DMD_LONGNAME', null); - const isReadable = GDALFunctions.GDALGetMetadataItem(driverPtr, 'DCAP_OPEN', null) === 'YES'; - const isWritable = GDALFunctions.GDALGetMetadataItem(driverPtr, 'DCAP_CREATE', null) === 'YES' - || GDALFunctions.GDALGetMetadataItem(driverPtr, 'DCAP_CREATECOPY', null) === 'YES'; - const isRaster = GDALFunctions.GDALGetMetadataItem(driverPtr, 'DCAP_RASTER', null) === 'YES'; - const isVector = GDALFunctions.GDALGetMetadataItem(driverPtr, 'DCAP_VECTOR', null) === 'YES'; - - const openOptionsList = xmlToJs(GDALFunctions.GDALGetMetadataItem(driverPtr, 'DMD_OPENOPTIONLIST', null)); - const creationOptionList = xmlToJs(GDALFunctions.GDALGetMetadataItem(driverPtr, 'DMD_CREATIONOPTIONLIST', null)); - const layerCreationOptionList = xmlToJs(GDALFunctions.GDALGetMetadataItem(driverPtr, 'DS_LAYER_CREATIONOPTIONLIST', null)); - const helpUrl = GDALFunctions.GDALGetMetadataItem(driverPtr, 'DMD_HELPTOPIC', null); - - // eslint-disable-next-line object-curly-newline - return { - extension, extensions, shortName, longName, - isReadable, isWritable, isRaster, isVector, - openOptionsList, creationOptionList, layerCreationOptionList, helpUrl, - }; -} - -export function setDrivers() { - const driverCount = GDALFunctions.GDALGetDriverCount(); - for (let i = 0; i < driverCount; i += 1) { - const driverPtr = GDALFunctions.GDALGetDriver(i); - const info = getDriverData(driverPtr); - if (info.isRaster) drivers.raster[info.shortName] = { index: i, ...info, type: 'raster' }; - if (info.isVector) drivers.vector[info.shortName] = { index: i, ...info, type: 'vector' }; - } -} diff --git a/src/allJsFunctions/helper/error.js b/src/allJsFunctions/helper/error.js deleted file mode 100644 index f9ce90e..0000000 --- a/src/allJsFunctions/helper/error.js +++ /dev/null @@ -1,12 +0,0 @@ -import { GDALFunctions } from '../../allCFunctions'; - -export function getGdalError() { - const message = GDALFunctions.CPLGetLastErrorMsg(); - const no = GDALFunctions.CPLGetLastErrorNo(); - GDALFunctions.CPLErrorReset(); - return { no, message }; -} - -export function getSystemError(message) { - return { no: -1, message }; -} diff --git a/src/allJsFunctions/helper/filesystem.js b/src/allJsFunctions/helper/filesystem.js deleted file mode 100644 index 41bbefa..0000000 --- a/src/allJsFunctions/helper/filesystem.js +++ /dev/null @@ -1,59 +0,0 @@ -import isNode from 'detect-node'; -import { GDALFunctions } from '../../allCFunctions'; -import { INPUTPATH, OUTPUTPATH } from './const'; - -let lastInputMountedPath; - -export function unmount() { - if (isNode || typeof importScripts === 'function') { - GDALFunctions.Module.FS.unmount(INPUTPATH); - } -} - -export function mountDest(path) { - if (isNode) { - GDALFunctions.Module.FS.mount(GDALFunctions.Module.NODEFS, { root: path }, OUTPUTPATH); - } -} - -export function mount(files) { - return new Promise((resolve) => { - if (files.length === 0) { - resolve([]); - } else if (isNode) { - const output = []; - files.forEach((file) => { - const temp = file.split('/'); - const name = temp.pop(); - const path = temp.join('/') || '.'; - - if (lastInputMountedPath !== path) { - if (lastInputMountedPath) unmount(); - - lastInputMountedPath = path; - GDALFunctions.Module.FS.mount(GDALFunctions.Module.NODEFS, { root: path }, INPUTPATH); - } - output.push({ name }); - }); - - resolve(output); - } else if (typeof importScripts === 'function') { - if (lastInputMountedPath) unmount(); - GDALFunctions.Module.FS.mount(GDALFunctions.Module.WORKERFS, { files }, INPUTPATH); - lastInputMountedPath = true; - resolve(files); - } else { - const promises = []; - files.forEach((file) => { - promises.push(file.arrayBuffer()); - }); - Promise.all(promises).then((buffers) => { - buffers.forEach((buffer, i) => { - const ss = new Uint8Array(buffer); - GDALFunctions.Module.FS.writeFile(`${INPUTPATH}/${files[i].name}`, ss); - }); - resolve(files); - }); - } - }); -} diff --git a/src/allJsFunctions/helper/getFileList.js b/src/allJsFunctions/helper/getFileList.js deleted file mode 100644 index 640fb05..0000000 --- a/src/allJsFunctions/helper/getFileList.js +++ /dev/null @@ -1,28 +0,0 @@ -/* eslint-disable no-bitwise */ -import { GDALFunctions } from '../../allCFunctions'; - -import { OUTPUTPATH } from './const'; - -export default function getFileList(path = OUTPUTPATH.substr(1)) { - const contents = path.split('/').reduce((accumulator, currentValue) => accumulator.contents[currentValue], GDALFunctions.Module.FS.root).contents; - const fileList = []; - Object.keys(contents).forEach((name) => { - const obj = contents[name]; - if (obj.usedBytes) fileList.push({ path: `/${path}/${name}`, size: obj.usedBytes }); - else if (obj.contents) fileList.push(...getFileList(`${path}/${name}`)); - }); - return fileList; -} - -export function getFileListFromDataset(datasetPtr) { - const files = GDALFunctions.GDALGetFileList(datasetPtr); - if (!files) return []; - const arr = []; - for (let i = 0; i < 100; i += 1) { - const mem = GDALFunctions.Module.HEAP32[(files + (i * 4)) >> 2]; - if (mem === 0) break; - const str = GDALFunctions.Module.UTF8ToString(mem); - arr.push(str); - } - return arr; -} diff --git a/src/allJsFunctions/helper/options.js b/src/allJsFunctions/helper/options.js deleted file mode 100644 index 19350c9..0000000 --- a/src/allJsFunctions/helper/options.js +++ /dev/null @@ -1,30 +0,0 @@ -/* eslint-disable no-underscore-dangle */ -import { GDALFunctions } from '../../allCFunctions'; - -export function getOptions(options) { - const appOptions = []; - const appConfig = {}; - for (let i = 0; i < options.length; i += 1) { - const option = options[i]; - if (option === '--config') { - appConfig[options[i + 1]] = options[i + 2]; - i += 2; - } else { - appOptions.push(option); - } - } - const ptrsArray = appOptions.map((str) => GDALFunctions.Module._malloc(GDALFunctions.Module.lengthBytesUTF8(str) + 1)); - ptrsArray.push(0); - const strPtrs = Uint32Array.from(ptrsArray); - appOptions.forEach((str, i) => { - GDALFunctions.Module.stringToUTF8(str, strPtrs[i], GDALFunctions.Module.lengthBytesUTF8(str) + 1); - }); - const ptrOffset = GDALFunctions.Module._malloc(strPtrs.length * strPtrs.BYTES_PER_ELEMENT); - GDALFunctions.Module.HEAPU32.set(strPtrs, ptrOffset / strPtrs.BYTES_PER_ELEMENT); - return { ptr: ptrOffset, ptrArray: ptrsArray, config: appConfig }; -} - -export function clearOptions(i) { - GDALFunctions.Module._free(i.ptr); - i.ptrArray.forEach((ptr) => { GDALFunctions.Module._free(ptr); }); -} diff --git a/src/index.d.ts b/src/index.d.ts deleted file mode 100644 index 987bce5..0000000 --- a/src/index.d.ts +++ /dev/null @@ -1,89 +0,0 @@ -interface FileInfo { - path: string; - size: number; -} - -interface FilePath { - local: string; - real: string; - all?: FilePath; -} - -interface Dataset { - pointer: number; - path: string; - type: string; - info: object; -} - -interface DatasetList { - datasets: Array; - errors: Array; -} - -interface Layer { - name: string; - featureCount: number; -} - -interface DatasetInfo { - type: string; - dsName: string; - driverName: string; - bandCount?: number; - width?: number; - height?: number; - projectionWkt?: string; - coordinateTransform?: Array; - corners?: Array>; - layerCount?: number; - featureCount?: number; - layers?: Array; -} - -interface LocationInfo{ - pixel: number; - line: number; -} - -interface Drivers { - raster: Object; - vector: Object; -} - -interface Gdal { - ogr2ogr(dataset: Dataset, options?: Array, outputName?: string): Promise; - gdal_translate(dataset: Dataset, options?: Array, outputName?: string): Promise; - gdal_rasterize(dataset: Dataset, options?: Array, outputName?: string): Promise; - gdalwarp(dataset: Dataset, options?: Array, outputName?: string): Promise; - gdaltransform(coords: Array>, options: Array): Promise>>; - gdalinfo(dataset: Dataset, options?: Array): Promise; - ogrinfo(dataset: Dataset, options?: Array): Promise; - open(fileOrFiles: FileList|File|Array|string, options?: Array, VFSHandlers?: Array): Promise; - close(dataset: Dataset): Promise; - getInfo(dataset: Dataset): Promise; - getOutputFiles(): Promise>; - getFileBytes(filePath: string|FilePath): Promise; - drivers: Drivers; - gdal_location_info: Promise; -} - -interface GdalFilePaths { - wasm: string; - data: string; - js?: string; -} - -interface Config { - path?: string; - paths?: GdalFilePaths - dest?: string; - useWorker?: boolean; - env?: object; - logHandler?: (message: string, type: string) => void; - errorHandler?: (message: string, type: string) => void; -} - -declare module 'gdal3.js' { - export default function initGdalJs(config?: Config): Promise; -} diff --git a/src/index.js b/src/index.js deleted file mode 100644 index 71b25f6..0000000 --- a/src/index.js +++ /dev/null @@ -1,161 +0,0 @@ -import isNode from 'detect-node'; -// eslint-disable-next-line import/extensions -import CModule from '../build/package/gdal3WebAssembly.js'; - -import { initCFunctions, GDALFunctions } from './allCFunctions'; -import allJsFunctions from './allJsFunctions'; -import { setDrivers } from './allJsFunctions/helper/drivers'; -import { mountDest } from './allJsFunctions/helper/filesystem'; -import { INPUTPATH, OUTPUTPATH, setRealOutputPath } from './allJsFunctions/helper/const'; -import workerInsideSupport, { workerOutsideSupport } from './workerSupport'; - -let gdalJsPromise; - -/** - * - * @callback LogHandler - * @param {string} message Log message - * @param {string} type Log type (e.g. stderr, stdout) - */ - -/** - * Asynchronously initializes gdal3.js - * @async - * @function initGdalJs - * @param {Object} config Configuration Object. - * @param {string} config.path Parent path of wasm and data files. - * @param {Object} config.paths Use if filenames differ from gdal3WebAssembly.(data|wasm) and gdal3.js. - * @param {string} config.paths.wasm Wasm file path. (Default: gdal3WebAssembly.wasm) - * @param {string} config.paths.data Data file path. (Default: gdal3WebAssembly.data) - * @param {string} config.paths.js Js file path for web worker. (Default: gdal3.js) - * @param {string} config.dest Destination path where the created files will be saved. (Node.js only) - * @param {boolean} config.useWorker=true Using [Web Workers]{@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers} on the browser. It doesn't work on Node.js. - * @param {Object} config.env Set global Gdal configuration {@link https://gdal.org/user/configoptions.html#global-configuration-options} - * @param {LogHandler} config.logHandler User-defined function to be called in case of log. - * @param {LogHandler} config.errorHandler User-defined function to be called in case of error. - * @return {Promise} "Promise" returns Gdal namespace. -*/ -export default function initGdalJs( - config = {}, -) { - if (gdalJsPromise) return gdalJsPromise; - - if (isNode || config.useWorker === false) { - gdalJsPromise = new Promise((resolve, reject) => { - const Module = GDALFunctions.Module; - - const originalOnAbortFunction = Module.onAbort; - Module.onAbort = function onAbort(errorThatCausedAbort) { - reject(new Error(errorThatCausedAbort)); - if (originalOnAbortFunction) { - originalOnAbortFunction(errorThatCausedAbort); - } - }; - - Module.print = function p(text) { - if (config.logHandler) { - config.logHandler(text, 'stdout'); - } else { - console.debug(`gdal stdout: ${text}`); - } - }; - - Module.printErr = function p(text) { - if (config.errorHandler) { - config.errorHandler(text, 'stderr'); - } else { - console.error(`gdal stderr: ${text}`); - } - }; - - Module.preRun = [({ ENV }) => { - ENV.PROJ_LIB = '/usr/share/proj'; - ENV.GDAL_DATA = '/usr/share/gdal'; - ENV.DXF_FEATURE_LIMIT_PER_BLOCK = '-1'; - ENV.GDAL_NUM_THREADS = '0'; - ENV.GDAL_ENABLE_DEPRECATED_DRIVER_GTM = 'YES'; - // ENV.CPL_DEBUG = 'ON'; - ENV.CPL_LOG_ERRORS = 'ON'; - - if (config.env) { - Object.entries(config.env).forEach(([key, value]) => { - ENV[key] = value; - }); - } - }]; - - Module.onRuntimeInitialized = function onRuntimeInitialized() { - initCFunctions(); - - Module.FS.mkdir(INPUTPATH); - Module.FS.mkdir(OUTPUTPATH); - - if (config.dest) { - setRealOutputPath(config.dest); - mountDest(config.dest); - } - - setDrivers(); - }; - - Module.locateFile = function locateFile(fileName) { - let path = fileName; - if (config.paths && config.paths.wasm && fileName.split('.').pop() === 'wasm') { - path = config.paths.wasm; - } else if (config.paths && config.paths.data && fileName.split('.').pop() === 'data') { - path = config.paths.data; - } - - let prefix = ''; - if (config.path) { - prefix = config.path; - if (prefix.slice(-1) !== '/') prefix += '/'; - } else if (isNode) { - prefix = 'node_modules/gdal3.js/dist/package/'; - } - let output = prefix + path; - if (!isNode && output.substring(0, 4) !== 'http' && output[0] !== '/') output = `/${output}`; - return output; - }; - - if (isNode) { - Module.getPreloadedPackage = function getPreloadedPackage(packageName) { - // eslint-disable-next-line global-require - return require('fs').readFileSync(`./${packageName}`, { flag: 'r' }).buffer; - }; - } - - CModule(GDALFunctions.Module).then(() => { - resolve(allJsFunctions); - }); - }); - } else { - const workerJsName = (config.paths && config.paths.js) || 'gdal3.js'; - - let prefix = ''; - if (config.path) { - prefix = config.path; - if (prefix.slice(-1) !== '/') prefix += '/'; - } - - gdalJsPromise = new Promise((resolve) => { - workerOutsideSupport.variables.gdalWorkerWrapper = new workerOutsideSupport.WorkerWrapper(`${prefix}${workerJsName}`, config, (d) => { - workerOutsideSupport.variables.drivers = d; - resolve(workerOutsideSupport.gdalProxy); - }); - }); - } - return gdalJsPromise; -} - -if (isNode) { - global.location = { pathname: './' }; -} - -if (typeof window !== 'undefined') { - window.initGdalJs = initGdalJs; -} - -if (typeof importScripts === 'function') { - workerInsideSupport(initGdalJs); -} diff --git a/src/native/Dataset.cpp b/src/native/Dataset.cpp new file mode 100644 index 0000000..0f50de3 --- /dev/null +++ b/src/native/Dataset.cpp @@ -0,0 +1,360 @@ +#include +#include +#include +#include + +#include "cpl_string.h" +#include "gdal.h" +#include "gdal_utils.h" + +Dataset::~Dataset() { + CPLFree(this->ptr); +} +int Dataset::buildOverviews(std::string resampling, std::vector overviewlist, std::vector options) { + std::vectoroptions2; + for (auto &a : options) { + options2.push_back(a.c_str()); + } + options2.push_back(0); + + return (int) GDALBuildOverviewsEx((GDALDatasetH) this->ptr, resampling.c_str(), overviewlist.size(), overviewlist.data(), 0, 0, NULL, NULL, options.size() == 0 ? NULL : options2.data()); +} +std::vector> Dataset::getGCPs() { + int *arg2 = (int *) 0 ; + GDAL_GCP **arg3 = (GDAL_GCP **) 0 ; + + int *nGCPs = arg2; + GDAL_GCP const **pGCPs = (GDAL_GCP const **)arg3; + + *nGCPs = GDALGetGCPCount((GDALDatasetH) this->ptr); + *pGCPs = GDALGetGCPs((GDALDatasetH) this->ptr); + + std::vector> gcps; + for (int i=0; i<*arg2; i++ ) { + gcps.push_back(std::make_shared( + (*arg3)[i].dfGCPX, (*arg3)[i].dfGCPY, (*arg3)[i].dfGCPZ, + (*arg3)[i].dfGCPPixel, (*arg3)[i].dfGCPLine, + std::string((*arg3)[i].pszInfo), std::string((*arg3)[i].pszId) + )); + } + return gcps; +} +std::vector Dataset::getGeoTransform() { + double argout[6]; + if ( GDALGetGeoTransform( (GDALDatasetH) this->ptr, argout ) != CE_None ) { + argout[0] = 0.0; + argout[1] = 1.0; + argout[2] = 0.0; + argout[3] = 0.0; + argout[4] = 0.0; + argout[5] = 1.0; + } + return std::vector(argout, argout + sizeof argout / sizeof argout[0]); +} + +int Dataset::getRasterXSize() { + return GDALGetRasterXSize(this->ptr); +} +int Dataset::getRasterYSize() { + return GDALGetRasterYSize(this->ptr); +} +int Dataset::getRasterCount() { + return GDALGetRasterCount(this->ptr); +} +int Dataset::close() { + return GDALClose(this->ptr); +} +std::shared_ptr Dataset::getDriver() { + auto result = GDALGetDatasetDriver(this->ptr); + if (result == 0) return NULL; + return Driver::Create(result); +} + +std::string Dataset::getProjectionRef() { + return Gdal::charPtrToString(GDALGetProjectionRef(this->ptr)); +} +int Dataset::setProjection(std::string prj) { + return GDALSetProjection(this->ptr, prj.c_str()); +} +int Dataset::setGeoTransform(std::vector argin) { + return GDALSetGeoTransform(this->ptr, argin.data()); +} +int Dataset::getGCPCount() { + return GDALGetGCPCount(this->ptr); +} +std::string Dataset::getGCPProjection() { + return Gdal::charPtrToString(GDALGetGCPProjection(this->ptr)); +} +int Dataset::setGCPs(std::vector> nGCPs, std::string pszGCPProjection) { + int arg2 = nGCPs.size(); + GDAL_GCP *arg3 = (GDAL_GCP *) 0; + + if (arg2 == 0) arg3 = NULL; + else { + arg3 = (GDAL_GCP*) malloc(sizeof(GDAL_GCP) * arg2); + for (int i=0; iptr; + } + } + + return GDALSetGCPs(this->ptr, nGCPs.size(), (GDAL_GCP const *) arg3, pszGCPProjection.c_str()); +} +int Dataset::flushCache() { + return (int) GDALFlushCache(this->ptr); +} +int Dataset::addBand(int datatype, std::vector options) { + std::vectoroptions2; + for (auto &a : options) { + options2.push_back(a.c_str()); + } + options2.push_back(0); + + return GDALAddBand(this->ptr, (GDALDataType) datatype, options.size() == 0 ? NULL : options2.data()); +} +int Dataset::createMaskBand(int nFlags) { + return GDALCreateDatasetMaskBand( this->ptr, nFlags ); +} +std::vector Dataset::getFileList() { + return Gdal::charPtrPtrToStringVector(GDALGetFileList(this->ptr)); +} +int Dataset::deleteLayer(int index) { + return GDALDatasetDeleteLayer(this->ptr, index); +} +int Dataset::getLayerCount() { + return GDALDatasetGetLayerCount(this->ptr); +} +bool Dataset::isLayerPrivate(int index) { + return GDALDatasetIsLayerPrivate(this->ptr, index); +} +void Dataset::resetReading() { + GDALDatasetResetReading(this->ptr); +} +bool Dataset::testCapability(std::string cap) { + return (GDALDatasetTestCapability(this->ptr, cap.c_str()) > 0); +} +int Dataset::abortSQL() { + return GDALDatasetAbortSQL(this->ptr); +} +int Dataset::startTransaction(int force) { + return GDALDatasetStartTransaction(this->ptr, force); +} +int Dataset::commitTransaction() { + return GDALDatasetCommitTransaction(this->ptr); +} +int Dataset::rollbackTransaction() { + return GDALDatasetRollbackTransaction(this->ptr); +} +void Dataset::clearStatistics() { + GDALDatasetClearStatistics(this->ptr); +} +std::vector Dataset::getFieldDomainNames(std::vector options) { + std::vectoroptions2; + for (auto &a : options) { + options2.push_back(a.c_str()); + } + options2.push_back(0); + + return Gdal::charPtrPtrToStringVector(GDALDatasetGetFieldDomainNames(this->ptr, options.size() == 0 ? NULL : options2.data())); +} +bool Dataset::deleteFieldDomain(std::string name) { + return GDALDatasetDeleteFieldDomain(this->ptr, name.c_str(), NULL); +} +std::vector Dataset::getRelationshipNames(std::vector options) { + std::vectoroptions2; + for (auto &a : options) { + options2.push_back(a.c_str()); + } + options2.push_back(0); + + return Gdal::charPtrPtrToStringVector(GDALDatasetGetRelationshipNames(this->ptr, options.size() == 0 ? NULL : options2.data())); +} +bool Dataset::deleteRelationship(std::string name) { + return GDALDatasetDeleteRelationship(this->ptr, name.c_str(), NULL); +} + +std::string Dataset::info(std::vector psOptions) { + std::vectorpsOptions2; + for (auto &a : psOptions) { + psOptions2.push_back(a.c_str()); + } + psOptions2.push_back(0); + + GDALInfoOptions* options = GDALInfoOptionsNew(psOptions.size() == 0 ? NULL : ((char**) psOptions2.data()), NULL); + auto result = GDALInfo(this->ptr, options); + GDALInfoOptionsFree(options); + + return Gdal::charPtrToString(result); +} +std::string Dataset::vectorInfo(std::vector psOptions) { + std::vectorpsOptions2; + for (auto &a : psOptions) { + psOptions2.push_back(a.c_str()); + } + psOptions2.push_back(0); + + GDALVectorInfoOptions* options = GDALVectorInfoOptionsNew(psOptions.size() == 0 ? NULL : ((char**) psOptions2.data()), NULL); + auto result = GDALVectorInfo(this->ptr, options); + GDALVectorInfoOptionsFree(options); + + return Gdal::charPtrToString(result); +} +std::string Dataset::multiDimInfo(std::vector psOptions) { + std::vectorpsOptions2; + for (auto &a : psOptions) { + psOptions2.push_back(a.c_str()); + } + psOptions2.push_back(0); + + GDALMultiDimInfoOptions* options = GDALMultiDimInfoOptionsNew(psOptions.size() == 0 ? NULL : ((char**) psOptions2.data()), NULL); + auto result = GDALMultiDimInfo(this->ptr, options); + GDALMultiDimInfoOptionsFree(options); + + return Gdal::charPtrToString(result); +} +std::shared_ptr Dataset::translate(std::string pszDestFilename, std::vector psOptions) { + std::vectorpsOptions2; + for (auto &a : psOptions) { + psOptions2.push_back(a.c_str()); + } + psOptions2.push_back(0); + + GDALTranslateOptions* options = GDALTranslateOptionsNew(psOptions.size() == 0 ? NULL : ((char**) psOptions2.data()), NULL); + int usageError; + auto result = GDALTranslate(pszDestFilename.c_str(), this->ptr, options, &usageError); + GDALTranslateOptionsFree(options); + if (result == 0) return NULL; + return Dataset::Create(result); +} +std::shared_ptr Dataset::vectorTranslate(std::string pszDest, std::vector psOptions) { + std::vectorpahSrcDS; + pahSrcDS.push_back(this->ptr); + + std::vectorpsOptions2; + for (auto &a : psOptions) { + psOptions2.push_back(a.c_str()); + } + psOptions2.push_back(0); + + GDALVectorTranslateOptions* options = GDALVectorTranslateOptionsNew(psOptions.size() == 0 ? NULL : ((char**) psOptions2.data()), NULL); + int usageError; + auto result = GDALVectorTranslate(pszDest.c_str(), 0, pahSrcDS.size(), pahSrcDS.data(), options, &usageError); + GDALVectorTranslateOptionsFree(options); + if (result == 0) return NULL; + return Dataset::Create(result); +} +std::shared_ptr Dataset::vectorTranslate2(std::shared_ptr hDstDS, std::vector psOptions) { + std::vectorpahSrcDS; + pahSrcDS.push_back(this->ptr); + + std::vectorpsOptions2; + for (auto &a : psOptions) { + psOptions2.push_back(a.c_str()); + } + psOptions2.push_back(0); + + GDALVectorTranslateOptions* options = GDALVectorTranslateOptionsNew(psOptions.size() == 0 ? NULL : ((char**) psOptions2.data()), NULL); + int usageError; + auto result = GDALVectorTranslate(0, hDstDS->ptr, pahSrcDS.size(), pahSrcDS.data(), options, &usageError); + GDALVectorTranslateOptionsFree(options); + if (result == 0) return NULL; + return Dataset::Create(result); +} +std::shared_ptr Dataset::demProcessing(std::string pszDestFilename, std::string pszProcessing, std::string pszColorFilename, std::vector psOptions) { + std::vectorpsOptions2; + for (auto &a : psOptions) { + psOptions2.push_back(a.c_str()); + } + psOptions2.push_back(0); + + GDALDEMProcessingOptions* options = GDALDEMProcessingOptionsNew(psOptions.size() == 0 ? NULL : ((char**) psOptions2.data()), NULL); + int usageError; + auto result = GDALDEMProcessing(pszDestFilename.c_str(), this->ptr, pszProcessing.c_str(), pszColorFilename.c_str(), options, &usageError); + GDALDEMProcessingOptionsFree(options); + if (result == 0) return NULL; + return Dataset::Create(result); +} +std::shared_ptr Dataset::nearblack(std::string pszDest, std::shared_ptr hDstDS, std::vector psOptions) { + std::vectorpsOptions2; + for (auto &a : psOptions) { + psOptions2.push_back(a.c_str()); + } + psOptions2.push_back(0); + + GDALNearblackOptions* options = GDALNearblackOptionsNew(psOptions.size() == 0 ? NULL : ((char**) psOptions2.data()), NULL); + int usageError; + auto result = GDALNearblack(pszDest.c_str(), hDstDS->ptr, this->ptr, options, &usageError); + GDALNearblackOptionsFree(options); + if (result == 0) return NULL; + return Dataset::Create(result); +} +std::shared_ptr Dataset::grid(std::string pszDest, std::vector psOptions) { + std::vectorpsOptions2; + for (auto &a : psOptions) { + psOptions2.push_back(a.c_str()); + } + psOptions2.push_back(0); + + GDALGridOptions* options = GDALGridOptionsNew(psOptions.size() == 0 ? NULL : ((char**) psOptions2.data()), NULL); + int usageError; + auto result = GDALGrid(pszDest.c_str(), this->ptr, options, &usageError); + GDALGridOptionsFree(options); + if (result == 0) return NULL; + return Dataset::Create(result); +} +std::shared_ptr Dataset::rasterize(std::string pszDest, std::vector psOptions) { + std::vectorpsOptions2; + for (auto &a : psOptions) { + psOptions2.push_back(a.c_str()); + } + psOptions2.push_back(0); + + GDALRasterizeOptions* options = GDALRasterizeOptionsNew(psOptions.size() == 0 ? NULL : ((char**) psOptions2.data()), NULL); + int usageError; + auto result = GDALRasterize(pszDest.c_str(), 0, this->ptr, options, &usageError); + GDALRasterizeOptionsFree(options); + if (result == 0) return NULL; + return Dataset::Create(result); +} + +std::shared_ptr Dataset::rasterize(std::shared_ptr hDstDS, std::vector psOptions) { + std::vectorpsOptions2; + for (auto &a : psOptions) { + psOptions2.push_back(a.c_str()); + } + psOptions2.push_back(0); + + GDALRasterizeOptions* options = GDALRasterizeOptionsNew(psOptions.size() == 0 ? NULL : ((char**) psOptions2.data()), NULL); + int usageError; + auto result = GDALRasterize(0, hDstDS->ptr, this->ptr, options, &usageError); + GDALRasterizeOptionsFree(options); + if (result == 0) return NULL; + return Dataset::Create(result); +} + +std::shared_ptr Dataset::footprint(std::string pszDest, std::shared_ptr hDstDS, std::vector psOptions) { + std::vectorpsOptions2; + for (auto &a : psOptions) { + psOptions2.push_back(a.c_str()); + } + psOptions2.push_back(0); + + GDALFootprintOptions* options = GDALFootprintOptionsNew(psOptions.size() == 0 ? NULL : ((char**) psOptions2.data()), NULL); + int usageError; + auto result = GDALFootprint(pszDest.c_str(), hDstDS->ptr, this->ptr, options, &usageError); + GDALFootprintOptionsFree(options); + if (result == 0) return NULL; + return Dataset::Create(result); +} + +// =================================================== DATASET - PRIVATE ======== +Dataset::Dataset(void* dataset) { + this->ptr = dataset; +} + +struct Dataset::MakeSharedEnabler : public Dataset { + template MakeSharedEnabler(Args &&... args):Dataset(std::forward(args)...) {} +}; + +std::shared_ptr Dataset::Create(void* dataset) { + return std::make_shared(dataset); +} diff --git a/src/native/Driver.cpp b/src/native/Driver.cpp new file mode 100644 index 0000000..63e22b9 --- /dev/null +++ b/src/native/Driver.cpp @@ -0,0 +1,117 @@ +#include +#include +#include + +#include "cpl_string.h" +#include "gdal.h" + +Driver::~Driver() { + CPLFree(this->ptr); +} +std::string Driver::getShortName() { + return Gdal::charPtrToString(GDALGetDriverShortName(this->ptr)); +} +std::string Driver::getLongName() { + return Gdal::charPtrToString(GDALGetDriverLongName(this->ptr)); +} + +bool Driver::isReadable() { + return this->getMetadataItem("DCAP_OPEN") == "YES"; +} +bool Driver::isWritable() { + return this->getMetadataItem("DCAP_CREATE") == "YES" || this->getMetadataItem("DCAP_CREATECOPY") == "YES"; +} +bool Driver::isRaster() { + return this->getMetadataItem("DCAP_RASTER") == "YES"; +} +bool Driver::isVector() { + return this->getMetadataItem("DCAP_VECTOR") == "YES"; +} +std::string Driver::getOpenOptions() { + return this->getMetadataItem("DMD_OPENOPTIONLIST"); +} +std::string Driver::getCreationOptions() { + return this->getMetadataItem("DMD_CREATIONOPTIONLIST"); +} +std::string Driver::getLayerCreationOptions() { + return this->getMetadataItem("DS_LAYER_CREATIONOPTIONLIST"); +} +std::string Driver::getExtension() { + return this->getMetadataItem("DMD_EXTENSION"); +} +std::string Driver::getExtensions() { + return this->getMetadataItem("DMD_EXTENSIONS"); +} + +std::string Driver::getHelpTopic() { + return Gdal::charPtrToString(GDALGetDriverHelpTopic(this->ptr)); +} +std::string Driver::getMetadataItem(std::string name) { + return Gdal::charPtrToString(GDALGetMetadataItem(this->ptr, name.c_str(), NULL)); +} +std::shared_ptr Driver::create(std::string utf8_path, int xsize, int ysize, int bands, int eType, std::vector options = std::vector()) { + std::vectoroptions2; + for (auto &a : options) { + options2.push_back(a.c_str()); + } + options2.push_back(0); + + auto result = GDALCreate(this->ptr, utf8_path.c_str(), xsize, ysize, bands, (GDALDataType) eType, options.size() == 0 ? NULL : options2.data()); + if (result == 0) return NULL; + return Dataset::Create(result); +} +std::shared_ptr Driver::createMultiDimensional(std::string utf8_path, std::vector root_group_options, std::vector options = std::vector()) { + std::vectoroptions2; + for (auto &a : options) { + options2.push_back(a.c_str()); + } + options2.push_back(0); + + std::vectorroot_group_options2; + for (auto &a : root_group_options) { + root_group_options2.push_back(a.c_str()); + } + root_group_options2.push_back(0); + + auto result = GDALCreateMultiDimensional(this->ptr, utf8_path.c_str(), root_group_options.size() == 0 ? NULL : root_group_options2.data(), options.size() == 0 ? NULL : options2.data()); + if (result == 0) return NULL; + return Dataset::Create(result); +} +std::shared_ptr Driver::createCopy(std::string utf8_path, std::shared_ptr src, int strict, std::vector options = std::vector()) { + std::vectoroptions2; + for (auto &a : options) { + options2.push_back(a.c_str()); + } + options2.push_back(0); + + auto result = GDALCreateCopy(this->ptr, utf8_path.c_str(), (GDALDatasetH) src->ptr, strict, options.size() == 0 ? NULL : options2.data(), NULL, NULL); + if (result == 0) return NULL; + return Dataset::Create(result); +} +int Driver::deleteDriver(std::string utf8_path) { + return (int) GDALDeleteDataset(this->ptr, utf8_path.c_str()); +} +int Driver::rename(std::string newName, std::string oldName) { + return (int) GDALRenameDataset(this->ptr, newName.c_str(), oldName.c_str()); +} +int Driver::copyFiles(std::string newName, std::string oldName) { + return (int) GDALCopyDatasetFiles(this->ptr, newName.c_str(), oldName.c_str()); +} +int Driver::registerDriver() { + return (int) GDALRegisterDriver(this->ptr); +} +void Driver::deregisterDriver() { + GDALDeregisterDriver(this->ptr); +} +// =================================================== DRIVER - PRIVATE ======== +Driver::Driver(void* driver) { + this->ptr = driver; +} + +struct Driver::MakeSharedEnabler : public Driver { + template MakeSharedEnabler(Args &&... args):Driver(std::forward(args)...) {} +}; + +std::shared_ptr Driver::Create(void* driver) { + return std::make_shared(driver); +} diff --git a/src/native/GCP.cpp b/src/native/GCP.cpp new file mode 100644 index 0000000..815ff05 --- /dev/null +++ b/src/native/GCP.cpp @@ -0,0 +1,78 @@ +#include +#include + +#include "cpl_string.h" +#include "gdal.h" + +GCP::GCP(double x, double y, double z, double pixel, double line, std::string info = "", std::string id = "") { + GDAL_GCP *self = (GDAL_GCP*) CPLMalloc( sizeof( GDAL_GCP ) ); + self->dfGCPX = x; + self->dfGCPY = y; + self->dfGCPZ = z; + self->dfGCPPixel = pixel; + self->dfGCPLine = line; + self->pszInfo = CPLStrdup(info.c_str()); + self->pszId = CPLStrdup(id.c_str()); + GCP((void*) self); +} +GCP::~GCP() { + GDAL_GCP* self = (GDAL_GCP*) this->ptr; + CPLFree(self->pszInfo); + CPLFree(self->pszId); + CPLFree(this->ptr); +} + +double GCP::getX() { + return ((GDAL_GCP*) this->ptr)->dfGCPX; +} +double GCP::getY() { + return ((GDAL_GCP*) this->ptr)->dfGCPY; +} +double GCP::getZ() { + return ((GDAL_GCP*) this->ptr)->dfGCPZ; +} +double GCP::getPixel() { + return ((GDAL_GCP*) this->ptr)->dfGCPPixel; +} +double GCP::getLine() { + return ((GDAL_GCP*) this->ptr)->dfGCPLine; +} +std::string GCP::getInfo() { + return Gdal::charPtrToString(((GDAL_GCP*) this->ptr)->pszInfo); +} +std::string GCP::getId() { + return Gdal::charPtrToString(((GDAL_GCP*) this->ptr)->pszId); +} +void GCP::setX(double x) { + ((GDAL_GCP*) this->ptr)->dfGCPX = x; +} +void GCP::setY(double y) { + ((GDAL_GCP*) this->ptr)->dfGCPY = y; +} +void GCP::setZ(double z) { + ((GDAL_GCP*) this->ptr)->dfGCPZ = z; +} +void GCP::setPixel(double pixel) { + ((GDAL_GCP*) this->ptr)->dfGCPPixel = pixel; +} +void GCP::setLine(double line) { + ((GDAL_GCP*) this->ptr)->dfGCPLine = line; +} +void GCP::setInfo(std::string info) { + ((GDAL_GCP*) this->ptr)->pszInfo = CPLStrdup(info.c_str()); +} +void GCP::setId(std::string id) { + ((GDAL_GCP*) this->ptr)->pszId = CPLStrdup(id.c_str()); +} +// =================================================== GCP - PRIVATE ======== +GCP::GCP(void* gcp) { + this->ptr = gcp; +} + +struct GCP::MakeSharedEnabler : public GCP { + template MakeSharedEnabler(Args &&... args):GCP(std::forward(args)...) {} +}; + +std::shared_ptr GCP::Create(void* gcp) { + return std::make_shared(gcp); +} diff --git a/src/native/Gdal.cpp b/src/native/Gdal.cpp new file mode 100644 index 0000000..d0ca721 --- /dev/null +++ b/src/native/Gdal.cpp @@ -0,0 +1,506 @@ +#include +#include +#include +#include +#include + +#include "cpl_multiproc.h" +#include "cpl_http.h" +#include "cpl_vsi_error.h" + +#include "gdal_utils.h" + +// CPLErrorHandler Gdal::setErrorHandler(CPLErrorHandler) {} +void Gdal::setCurrentErrorHandlerCatchDebug(int bCatchDebug) { + CPLSetCurrentErrorHandlerCatchDebug(bCatchDebug); +} +// void Gdal::pushErrorHandler(CPLErrorHandler) {} +void Gdal::error(int eErrClass, int err_no, std::string fmt) { + CPLError((CPLErr) eErrClass, err_no, "%s", fmt.c_str()); +} +std::string Gdal::goa2GetAuthorizationURL(std::string pszScope) { + return charPtrToString(GOA2GetAuthorizationURL(pszScope.c_str())); +} +std::string Gdal::goa2GetRefreshToken(std::string pszAuthToken, std::string pszScope) { + return charPtrToString(GOA2GetRefreshToken(pszAuthToken.c_str(), pszScope.c_str())); +} +std::string Gdal::goa2GetAccessToken(std::string pszRefreshToken, std::string pszScope) { + return charPtrToString(GOA2GetAccessToken(pszRefreshToken.c_str(), pszScope.c_str())); +} +void Gdal::popErrorHandler() { + CPLPopErrorHandler(); +} +void Gdal::errorReset() { + CPLErrorReset(); +} +std::string Gdal::escapeString(std::string pszString, int nLength, int nScheme) { + return charPtrToString((const char *) CPLEscapeString(pszString.c_str(), nLength, nScheme)); +} +int Gdal::getLastErrorNo() { + return (int) CPLGetLastErrorNo(); +} +int Gdal::getLastErrorType() { + return (int) CPLGetLastErrorType(); +} +std::string Gdal::getLastErrorMsg() { + return charPtrToString(CPLGetLastErrorMsg()); +} +int Gdal::getErrorCounter() { + return CPLGetErrorCounter(); +} +int Gdal::vsiGetLastErrorNo() { + return VSIGetLastErrorNo(); +} +std::string Gdal::vsiGetLastErrorMsg() { + return charPtrToString(VSIGetLastErrorMsg()); +} +void Gdal::vsiErrorReset() { + CPLErrorReset(); +} +void Gdal::pushFinderLocation(std::string l) { + CPLPushFinderLocation(l.c_str()); +} +void Gdal::popFinderLocation() { + CPLPopFinderLocation(); +} +void Gdal::finderClean() { + CPLFinderClean(); +} +std::string Gdal::findFile(std::string pszClass, std::string pszBasename) { + return charPtrToString(CPLFindFile(pszClass.c_str(), pszBasename.c_str())); +} +std::vector Gdal::readDir(std::string pszDirname) { + return charPtrPtrToStringVector(VSIReadDir(pszDirname.c_str())); +} +std::vector Gdal::readDirRecursive(std::string pszPath) { + return charPtrPtrToStringVector(VSIReadDirRecursive(pszPath.c_str())); +} +void Gdal::setConfigOption(std::string key, std::string value) { + setenv("GDAL_DATA", value.c_str(), true); + // CPLSetConfigOption(key.c_str(), value.c_str()); +} +void Gdal::setThreadLocalConfigOption(std::string pszKey, std::string pszValue) { + CPLSetThreadLocalConfigOption(pszKey.c_str(), pszValue.c_str()); +} +std::string Gdal::getConfigOption(std::string key, std::string def) { + return charPtrToString(CPLGetConfigOption(key.c_str(), def.c_str())); +} +std::string Gdal::getGlobalConfigOption(std::string key, std::string def) { + return charPtrToString(CPLGetGlobalConfigOption(key.c_str(), def.c_str())); +} +std::string Gdal::getThreadLocalConfigOption(std::string key, std::string def) { + return charPtrToString(CPLGetThreadLocalConfigOption(key.c_str(), def.c_str())); +} +std::vector Gdal::getConfigOptions() { + return charPtrPtrToStringVector(CPLGetConfigOptions()); +} +void Gdal::setPathSpecificOption(std::string pszPathPrefix, std::string pszKey, std::string pszValue) { + VSISetPathSpecificOption(pszPathPrefix.c_str(), pszKey.c_str(), pszValue.c_str()); +} +std::string Gdal::getPathSpecificOption(std::string pszPath, std::string pszKey, std::string pszDefault) { + return charPtrToString(VSIGetPathSpecificOption(pszPath.c_str(), pszKey.c_str(), pszDefault.c_str())); +} +void Gdal::clearPathSpecificOptions(std::string pszPathPrefix) { + VSIClearPathSpecificOptions(pszPathPrefix.c_str()); +} +std::string Gdal::binaryToHex(int nBytes, std::vector pabyData) { + return charPtrToString(CPLBinaryToHex(nBytes, pabyData.data())); +} +std::vector Gdal::hexToBinary(std::string pszHex) { + std::vector output; + int *arg2 = (int *) 0 ; + int nBytes1; + arg2 = &nBytes1; + + unsigned char *result = CPLHexToBinary(pszHex.c_str(), arg2); + output.assign(result, result + nBytes1); + + return output; +} +int Gdal::fileFromMemBuffer(std::string pszFilename, std::vector pabyData) { + int nBytes = pabyData.size(); + GByte* pabyDataDup = (GByte*)VSIMalloc(nBytes); + if (pabyDataDup == NULL) + return -1; + memcpy(pabyDataDup, pabyData.data(), nBytes); + VSILFILE *fp = VSIFileFromMemBuffer(pszFilename.c_str(), (GByte*) pabyDataDup, nBytes, TRUE); + + if (fp == NULL) { + VSIFree(pabyDataDup); + return -1; + } else { + VSIFCloseL(fp); + return 0; + } +} +int Gdal::unlink(std::string pszFilename) { + return VSIUnlink(pszFilename.c_str()); +} +bool Gdal::unlinkBatch(std::vector papszFiles) { + std::vectorpapszFiles2; + for (auto &a : papszFiles) { + papszFiles2.push_back(a.c_str()); + } + papszFiles2.push_back(0); + + auto files = papszFiles2.data(); + + int* success = VSIUnlinkBatch(papszFiles2.data()); + if( !success ) return false; + int bRet = true; + for(int i = 0; files && files[i]; i++) { + if (!success[i]) { + bRet = false; + break; + } + } + VSIFree(success); + return bRet; +} +int Gdal::mkdir(std::string pszDirname, long nMode) { + return VSIMkdir(pszDirname.c_str(), nMode); +} +int Gdal::rmdir(std::string pszDirname) { + return VSIRmdir(pszDirname.c_str()); +} +int Gdal::mkdirRecursive(std::string pszPathname, long mode) { + return VSIMkdirRecursive(pszPathname.c_str(), mode); +} +int Gdal::rmdirRecursive(std::string pszDirname) { + return VSIRmdirRecursive(pszDirname.c_str()); +} +int Gdal::rename(std::string oldpath, std::string newpath) { + return VSIRename(oldpath.c_str(), newpath.c_str()); +} +int Gdal::copyFile(std::string pszNewPath, std::string pszOldPath) { + return VSICopyFile(pszNewPath.c_str(), pszOldPath.c_str(), NULL, static_cast(-1), NULL, NULL, NULL); +} +std::string Gdal::getActualURL(std::string pszFilename) { + return charPtrToString(VSIGetActualURL(pszFilename.c_str())); +} +std::string Gdal::getSignedURL(std::string pszFilename, std::vector papszOptions) { + std::vectorpapszOptions2; + for (auto &a : papszOptions) { + papszOptions2.push_back(a.c_str()); + } + papszOptions2.push_back(0); + + return charPtrToString(VSIGetSignedURL(pszFilename.c_str(), papszOptions.size() == 0 ? NULL : papszOptions2.data())); +} +std::vector Gdal::getFileSystemsPrefixes() { + return charPtrPtrToStringVector(VSIGetFileSystemsPrefixes()); +} +std::string Gdal::getFileSystemOptions(std::string pszFilename) { + return charPtrToString(VSIGetFileSystemOptions(pszFilename.c_str())); +} +std::vector Gdal::parseCommandLine(std::string pszCommandLine) { + return charPtrPtrToStringVector(CSLParseCommandLine(pszCommandLine.c_str())); +} +int Gdal::getNumCPUs() { + return CPLGetNumCPUs(); +} +uint64_t Gdal::getUsablePhysicalRAM() { + return CPLGetUsablePhysicalRAM(); +} +int Gdal::gcpsToGeoTransform(std::vector> pasGCPs, std::vector padfGeoTransform, int bApproxOK = 1) { + std::vectorpasGCPs2; + for (auto &a : pasGCPs) { + pasGCPs2.push_back(a->ptr); + } + + return GDALGCPsToGeoTransform(pasGCPs2.size(), (GDAL_GCP const *) pasGCPs2.data(), padfGeoTransform.data(), bApproxOK); // CHECK: (GDAL_GCP const *) +} +std::shared_ptr Gdal::getSubdatasetInfo(std::string pszFileName) { + auto result = GDALGetSubdatasetInfo(pszFileName.c_str()); + if (result == 0) return NULL; + return SubdatasetInfo::Create(result); +} +std::vector Gdal::applyGeoTransform(std::vector arg1, double arg2, double arg3) { + double *arg4 = (double *) 0; + double *arg5 = (double *) 0; + + double temp4 = (double)0; arg4 = &temp4; + double temp5 = (double)0; arg5 = &temp5; + + GDALApplyGeoTransform(arg1.data(), arg2, arg3, arg4, arg5); + + std::vector vect{(double)temp4, (double)temp5}; + return vect; +} +std::vector Gdal::invGeoTransform(std::vector padfGeoTransformIn) { + double* arg2 = new double[padfGeoTransformIn.size()]; + + int result = (int)GDALInvGeoTransform(padfGeoTransformIn.data(), arg2); + if (result != 1) { + return std::vector(); + } + + return doublePtrToDoubleVector(arg2); +} +std::string Gdal::versionInfo(std::string pszRequest) { + return charPtrToString(GDALVersionInfo(pszRequest.c_str())); +} +void Gdal::allRegister() { + GDALAllRegister(); +} +void Gdal::registerPlugins() { + GDALRegisterPlugins(); +} +int Gdal::registerPlugin(std::string name) { + return (int) GDALRegisterPlugin(name.c_str()); +} +void Gdal::destroyDriverManager() { + GDALDestroyDriverManager(); +} +int Gdal::getCacheMax() { + return GDALGetCacheMax(); +} +int Gdal::getCacheUsed() { + return GDALGetCacheUsed(); +} +void Gdal::setCacheMax(int nBytes) { + GDALSetCacheMax(nBytes); +} +int Gdal::getDataTypeSize(int eDataType) { + return GDALGetDataTypeSize((GDALDataType) eDataType); +} +int Gdal::dataTypeIsComplex(int eDataType) { + return GDALDataTypeIsComplex((GDALDataType) eDataType); +} +std::string Gdal::getDataTypeName(int eDataType) { + return charPtrToString(GDALGetDataTypeName((GDALDataType) eDataType)); +} +int Gdal::getDataTypeByName(std::string name) { + return GDALGetDataTypeByName(name.c_str()); +} +int Gdal::dataTypeUnion(int a, int b) { + return GDALDataTypeUnion((GDALDataType) a, (GDALDataType) b); +} +std::string Gdal::getColorInterpretationName(int eColorInterp) { + return charPtrToString(GDALGetColorInterpretationName((GDALColorInterp) eColorInterp)); +} +std::string Gdal::getPaletteInterpretationName(int ePaletteInterp) { + return charPtrToString(GDALGetPaletteInterpretationName((GDALPaletteInterp) ePaletteInterp)); +} +std::string Gdal::decToDMS(double a, std::string b, int c) { + return charPtrToString(GDALDecToDMS(a, b.c_str(), c)); +} +double Gdal::packedDMSToDec(double a) { + return GDALPackedDMSToDec(a); +} +double Gdal::decToPackedDMS(double a) { + return GDALDecToPackedDMS(a); +} +int Gdal::getDriverCount() { + return GDALGetDriverCount(); +} +std::shared_ptr Gdal::getDriverByName(std::string name) { + auto result = GDALGetDriverByName(name.c_str()); + if (result == 0) return NULL; + return Driver::Create(result); +} +std::shared_ptr Gdal::getDriver(int i) { + auto result = GDALGetDriver(i); + if (result == 0) return NULL; + return Driver::Create(result); +} +std::shared_ptr Gdal::open(std::string pszFilename) { + return Gdal::open(pszFilename, 0); +} +std::shared_ptr Gdal::open(std::string pszFilename, int eAccess) { + auto result = GDALOpen(pszFilename.c_str(), (GDALAccess) eAccess); + if (result == 0) return NULL; + return Dataset::Create(result); +} +std::shared_ptr Gdal::openEx(std::string pszFilename) { + return Gdal::openEx(pszFilename, 0, std::vector(), std::vector(), std::vector()); +} +std::shared_ptr Gdal::openEx(std::string pszFilename, unsigned int nOpenFlags) { + return Gdal::openEx(pszFilename, nOpenFlags, std::vector(), std::vector(), std::vector()); +} +std::shared_ptr Gdal::openEx(std::string pszFilename, unsigned int nOpenFlags, std::vector papszOpenOptions) { + return Gdal::openEx(pszFilename, nOpenFlags, std::vector(), papszOpenOptions, std::vector()); +} +std::shared_ptr Gdal::openEx(std::string pszFilename, unsigned int nOpenFlags, std::vector papszAllowedDrivers, std::vector papszOpenOptions, std::vector papszSiblingFiles) { + std::vectorpapszAllowedDrivers2; + for (auto &a : papszAllowedDrivers) { + papszAllowedDrivers2.push_back(a.c_str()); + } + papszAllowedDrivers2.push_back(0); + + std::vectorpapszOpenOptions2; + for (auto &a : papszOpenOptions) { + papszOpenOptions2.push_back(a.c_str()); + } + papszOpenOptions2.push_back(0); + + std::vectorpapszSiblingFiles2; + for (auto &a : papszSiblingFiles) { + papszSiblingFiles2.push_back(a.c_str()); + } + papszSiblingFiles2.push_back(0); + + auto result = GDALOpenEx( + pszFilename.c_str(), + nOpenFlags, + papszAllowedDrivers.size() == 0 ? NULL : papszAllowedDrivers2.data(), + papszOpenOptions.size() == 0 ? NULL : papszOpenOptions2.data(), + papszSiblingFiles.size() == 0 ? NULL : papszSiblingFiles2.data() + ); + if (result == 0) return NULL; + return Dataset::Create(result); +} +std::shared_ptr Gdal::openShared(std::string pszFilename, int eAccess) { + auto result = GDALOpenShared(pszFilename.c_str(), (GDALAccess) eAccess); + if (result == 0) return NULL; + return Dataset::Create(result); +} +std::shared_ptr Gdal::identifyDriver(std::string pszFilename, std::vector papszFileList) { + std::vectorpapszFileList2; + for (auto &a : papszFileList) { + papszFileList2.push_back(a.c_str()); + } + papszFileList2.push_back(0); + + auto result = GDALIdentifyDriver(pszFilename.c_str(), papszFileList.size() == 0 ? NULL : papszFileList2.data()); + if (result == 0) return NULL; + return Driver::Create(result); +} +std::shared_ptr Gdal::identifyDriverEx(std::string pszFilename, unsigned int nIdentifyFlags, std::vector papszAllowedDrivers, std::vectorpapszFileList) { + std::vectorpapszAllowedDrivers2; + for (auto &a : papszAllowedDrivers) { + papszAllowedDrivers2.push_back(a.c_str()); + } + papszAllowedDrivers2.push_back(0); + + std::vectorpapszFileList2; + for (auto &a : papszFileList) { + papszFileList2.push_back(a.c_str()); + } + papszFileList2.push_back(0); + + auto result = GDALIdentifyDriverEx( + pszFilename.c_str(), + nIdentifyFlags, + papszAllowedDrivers.size() == 0 ? NULL : papszAllowedDrivers2.data(), + papszFileList.size() == 0 ? NULL : papszFileList2.data() + ); + if (result == 0) return NULL; + return Driver::Create(result); +} + +std::shared_ptr Gdal::warp(std::string pszDest, std::shared_ptr hDstDS, std::vector> pahSrcDS, std::vector psOptions) { + std::vectorpahSrcDS2; + for (auto &a : pahSrcDS) { + pahSrcDS2.push_back(a->ptr); + } + + std::vectorpsOptions2; + for (auto &a : psOptions) { + psOptions2.push_back(a.c_str()); + } + psOptions2.push_back(0); + + GDALWarpAppOptions* options = GDALWarpAppOptionsNew(psOptions.size() == 0 ? NULL : ((char**) psOptions2.data()), NULL); + int usageError; + auto result = GDALWarp(pszDest.c_str(), hDstDS->ptr, pahSrcDS2.size(), pahSrcDS2.data(), options, &usageError); + GDALWarpAppOptionsFree(options); + if (result == 0) return NULL; + return Dataset::Create(result); +} +std::shared_ptr Gdal::buildVRT(std::string pszDest, std::vector> pahSrcDS, std::vector papszSrcDSNames, std::vector psOptions) { + std::vectorpahSrcDS2; + for (auto &a : pahSrcDS) { + pahSrcDS2.push_back(a->ptr); + } + + std::vectorpapszSrcDSNames2; + for (auto &a : papszSrcDSNames) { + papszSrcDSNames2.push_back(a.c_str()); + } + papszSrcDSNames2.push_back(0); + + std::vectorpsOptions2; + for (auto &a : psOptions) { + psOptions2.push_back(a.c_str()); + } + psOptions2.push_back(0); + + GDALBuildVRTOptions* options = GDALBuildVRTOptionsNew(psOptions.size() == 0 ? NULL : ((char**) psOptions2.data()), NULL); + int usageError; + auto result = GDALBuildVRT(pszDest.c_str(), pahSrcDS2.size(), pahSrcDS2.data(), papszSrcDSNames.size() == 0 ? NULL : papszSrcDSNames2.data(), options, &usageError); + GDALBuildVRTOptionsFree(options); + if (result == 0) return NULL; + return Dataset::Create(result); +} +std::shared_ptr Gdal::multiDimTranslate(std::string pszDest, std::shared_ptr hDstDataset, std::vector> pahSrcDS, std::vector psOptions) { + std::vectorpahSrcDS2; + for (auto &a : pahSrcDS) { + pahSrcDS2.push_back(a->ptr); + } + + std::vectorpsOptions2; + for (auto &a : psOptions) { + psOptions2.push_back(a.c_str()); + } + psOptions2.push_back(0); + + GDALMultiDimTranslateOptions* options = GDALMultiDimTranslateOptionsNew(psOptions.size() == 0 ? NULL : ((char**) psOptions2.data()), NULL); + int usageError; + auto result = GDALMultiDimTranslate(pszDest.c_str(), hDstDataset->ptr, pahSrcDS2.size(), pahSrcDS2.data(), options, &usageError); + GDALMultiDimTranslateOptionsFree(options); + if (result == 0) return NULL; + return Dataset::Create(result); +} + +void Gdal::setProjDataPath(std::string path) { + setenv("PROJ_LIB", path.c_str(), true); + /* std::vector paths; + paths.push_back(path.c_str()); + + proj_context_set_search_paths(NULL, paths.size(), paths.data()); */ +} + +std::vector> Gdal::getDrivers() { + int driverCount = Gdal::getDriverCount(); + std::vector> output; + for (int i = 0; i < driverCount; i += 1) { + output.push_back(Gdal::getDriver(i)); + } + return output; +} + + +// =================================================== GDAL - PRIVATE ============ +std::string Gdal::charPtrToString(const char * result) { + std::string output = ""; + if (result) { + output = std::string(result); + // CPLFree((void *) result); + } + return output; +} + +std::vector Gdal::charPtrPtrToStringVector(char ** stringarray) { + std::vector output; + if ( stringarray != NULL ) { + while(*stringarray != NULL) { + output.emplace_back(*stringarray); + stringarray++; + } + } + CSLDestroy(stringarray); + return output; +} + +std::vector Gdal::doublePtrToDoubleVector(double* doublearray) { + std::vector output; + if ( doublearray != NULL ) { + while(*doublearray != NULL) { + output.push_back(*doublearray); + doublearray++; + } + } + delete[] doublearray; + return output; +} diff --git a/src/native/SubdatasetInfo.cpp b/src/native/SubdatasetInfo.cpp new file mode 100644 index 0000000..ac8be51 --- /dev/null +++ b/src/native/SubdatasetInfo.cpp @@ -0,0 +1,33 @@ +#include +#include + +#include "cpl_string.h" +#include "gdal.h" + +SubdatasetInfo::SubdatasetInfo(std::string pszFileName) { + SubdatasetInfo((void*) GDALGetSubdatasetInfo(CPLStrdup(pszFileName.c_str()))); +} +SubdatasetInfo::~SubdatasetInfo() { + CPLFree(this->ptr); +} +std::string SubdatasetInfo::getPathComponent() { + return Gdal::charPtrToString(GDALSubdatasetInfoGetPathComponent((GDALSubdatasetInfoH) this->ptr)); +} +std::string SubdatasetInfo::getSubdatasetComponent() { + return Gdal::charPtrToString(GDALSubdatasetInfoGetSubdatasetComponent((GDALSubdatasetInfoH) this->ptr)); +} +std::string SubdatasetInfo::modifyPathComponent(std::string pszNewFileName) { + return Gdal::charPtrToString(GDALSubdatasetInfoModifyPathComponent((GDALSubdatasetInfoH) this->ptr, pszNewFileName.c_str())); +} +// =================================================== SUBDATASETINFO - PRIVATE ======== +SubdatasetInfo::SubdatasetInfo(void* subdatasetInfo) { + this->ptr = subdatasetInfo; +} + +struct SubdatasetInfo::MakeSharedEnabler : public SubdatasetInfo { + template MakeSharedEnabler(Args &&... args):SubdatasetInfo(std::forward(args)...) {} +}; + +std::shared_ptr SubdatasetInfo::Create(void* subdatasetInfo) { + return std::make_shared(subdatasetInfo); +} diff --git a/src/native/gdal3.js/Dataset.h b/src/native/gdal3.js/Dataset.h new file mode 100644 index 0000000..4077cd9 --- /dev/null +++ b/src/native/gdal3.js/Dataset.h @@ -0,0 +1,99 @@ +#ifndef _GDAL3JS_DATASET_H +#define _GDAL3JS_DATASET_H + +#include +#include + +class Gdal; +class Driver; +class GCP; + +class Dataset { +public: + friend class Gdal; + friend class Driver; + + ~Dataset(); + int buildOverviews(std::string resampling, std::vector overviewlist, std::vector options); + std::vector> getGCPs(); + std::vector getGeoTransform(); + // std::shared_ptr getLayer(int index); + // std::shared_ptr getLayer(std::string layerName); + int getRasterXSize(); + int getRasterYSize(); + int getRasterCount(); + int close(); + std::shared_ptr getDriver(); + // std::shared_ptr getRasterBand(int nBand); + // std::shared_ptr getRootGroup(); + std::string getProjectionRef(); + // std::shared_ptr getSpatialRef(); + int setProjection(std::string prj); + // int setSpatialRef(std::shared_ptr srs); + int setGeoTransform(std::vector argin); + int getGCPCount(); + std::string getGCPProjection(); + // std::shared_ptr getGCPSpatialRef(); + int setGCPs(std::vector> nGCPs, std::string pszGCPProjection); + // int setGCPs2(std::vector> nGCPs, std::shared_ptr hSRS); + int flushCache(); + int addBand(int datatype, std::vector options); + int createMaskBand(int nFlags); + std::vector getFileList(); + // int adviseRead(int xoff, int yoff, int xsize, int ysize, int buf_xsize, int buf_ysize, int buf_type, std::vector band_list, std::vector options); + // std::shared_ptr createLayer(std::string name, std::shared_ptr srs, int geom_type, std::vector options); + // std::shared_ptr copyLayer(std::shared_ptr src_layer, std::string new_name, std::vector options); + int deleteLayer(int index); + int getLayerCount(); + bool isLayerPrivate(int index); + // std::shared_ptr getLayerByIndex(int index); + // std::shared_ptr getLayerByName(std::string layer_name); + void resetReading(); + // std::shared_ptr getNextFeature(); + bool testCapability(std::string cap); + // std::shared_ptr executeSQL(std::string statement, std::shared_ptr spatialFilter, std::string dialect); + // void releaseResultSet(std::shared_ptr layer); + // std::shared_ptr getStyleTable(); + // void setStyleTable(std::shared_ptr table); + int abortSQL(); + int startTransaction(int force); + int commitTransaction(); + int rollbackTransaction(); + void clearStatistics(); + std::vector getFieldDomainNames(std::vector options); + // std::shared_ptr getFieldDomain(std::string name); + // bool addFieldDomain(std::shared_ptr fieldDomain); + bool deleteFieldDomain(std::string name); + // bool updateFieldDomain(std::shared_ptr fieldDomain); + std::vector getRelationshipNames(std::vector options); + // std::shared_ptr getRelationship(std::string name); + // bool addRelationship(std::shared_ptr relationship); + bool deleteRelationship(std::string name); + // bool updateRelationship(std::shared_ptr relationship); + // int readRaster(int xoff, int yoff, int xsize, int ysize, int buf_xsize, int buf_ysize, int buf_type, std::vector regularArrayOut, std::vector band_list, int nPixelSpace, int nLineSpace, int nBandSpace); + // int writeRaster(int xoff, int yoff, int xsize, int ysize, int buf_xsize, int buf_ysize, int buf_type, std::vector regularArrayIn, std::vector band_list, int nPixelSpace, int nLineSpace, int nBandSpace); + + // APPS + // std::string locationInfo(); + std::string info(std::vector psOptions); + std::string vectorInfo(std::vector psOptions); + std::string multiDimInfo(std::vector psOptions); + std::shared_ptr translate(std::string pszDestFilename, std::vector psOptions); + std::shared_ptr vectorTranslate(std::string pszDest, std::vector psOptions); + std::shared_ptr vectorTranslate2(std::shared_ptr hDstDS, std::vector psOptions); + std::shared_ptr demProcessing(std::string pszDestFilename, std::string pszProcessing, std::string pszColorFilename, std::vector psOptions); + std::shared_ptr nearblack(std::string pszDest, std::shared_ptr hDstDS, std::vector psOptions); + std::shared_ptr grid(std::string pszDest, std::vector psOptions); + std::shared_ptr rasterize(std::string pszDest, std::vector psOptions); + std::shared_ptr rasterize(std::shared_ptr hDstDS, std::vector psOptions); + std::shared_ptr footprint(std::string pszDest, std::shared_ptr hDstDS, std::vector psOptions); + +private: + Dataset(void* dataset); + static std::shared_ptr Create(void* dataset); + + struct MakeSharedEnabler; + void *ptr; +}; + +#endif diff --git a/src/native/gdal3.js/Driver.h b/src/native/gdal3.js/Driver.h new file mode 100644 index 0000000..da4ca7e --- /dev/null +++ b/src/native/gdal3.js/Driver.h @@ -0,0 +1,48 @@ +#ifndef _GDAL3JS_DRIVER_H +#define _GDAL3JS_DRIVER_H + +#include +#include + +class Gdal; +class Dataset; +class Driver; + +class Driver { +public: + friend class Gdal; + friend class Dataset; + ~Driver(); + + std::string getShortName(); + std::string getLongName(); + bool isReadable(); + bool isWritable(); + bool isRaster(); + bool isVector(); + std::string getOpenOptions(); + std::string getCreationOptions(); + std::string getLayerCreationOptions(); + std::string getExtension(); + std::string getExtensions(); + std::string getHelpTopic(); + std::string getMetadataItem(std::string name); + std::shared_ptr create(std::string utf8_path, int xsize, int ysize, int bands, int eType, std::vector options); + std::shared_ptr createMultiDimensional(std::string utf8_path, std::vector root_group_options, std::vector options); + std::shared_ptr createCopy(std::string utf8_path, std::shared_ptr src, int strict, std::vector options); + int deleteDriver(std::string utf8_path); + int rename(std::string newName, std::string oldName); + int copyFiles(std::string newName, std::string oldName); + int registerDriver(); + void deregisterDriver(); + + +private: + Driver(void*); + static std::shared_ptr Create(void*); + + struct MakeSharedEnabler; + void *ptr; +}; + +#endif diff --git a/src/native/gdal3.js/GCP.h b/src/native/gdal3.js/GCP.h new file mode 100644 index 0000000..0f9cce8 --- /dev/null +++ b/src/native/gdal3.js/GCP.h @@ -0,0 +1,41 @@ +#ifndef _GDAL3JS_GCP_H +#define _GDAL3JS_GCP_H + +#include +#include + +class Gdal; +class Dataset; + +class GCP { +public: + friend class Gdal; + friend class Dataset; + + GCP(double x, double y, double z, double pixel, double line, std::string info, std::string id); + ~GCP(); + double getX(); + double getY(); + double getZ(); + double getPixel(); + double getLine(); + std::string getInfo(); + std::string getId(); + + void setX(double x); + void setY(double y); + void setZ(double z); + void setPixel(double pixel); + void setLine(double line); + void setInfo(std::string info); + void setId(std::string id); + +private: + GCP(void*); + static std::shared_ptr Create(void*); + + struct MakeSharedEnabler; + void *ptr; +}; + +#endif diff --git a/src/native/gdal3.js/Gdal.h b/src/native/gdal3.js/Gdal.h new file mode 100644 index 0000000..8a10027 --- /dev/null +++ b/src/native/gdal3.js/Gdal.h @@ -0,0 +1,135 @@ +#ifndef _GDAL3JS_GDAL_H +#define _GDAL3JS_GDAL_H + +#include +#include + +class Dataset; +class Driver; +class SubdatasetInfo; +class GCP; + +class Gdal { +public: + friend class Dataset; + friend class Driver; + friend class SubdatasetInfo; + friend class GCP; + // static CPLErrorHandler setErrorHandler(CPLErrorHandler); + static void setCurrentErrorHandlerCatchDebug(int bCatchDebug); + // static void pushErrorHandler(CPLErrorHandler); + static void error(int eErrClass, int err_no, std::string fmt); + static std::string goa2GetAuthorizationURL(std::string pszScope); + static std::string goa2GetRefreshToken(std::string pszAuthToken, std::string pszScope); + static std::string goa2GetAccessToken(std::string pszRefreshToken, std::string pszScope); + static void popErrorHandler(); + static void errorReset(); + static std::string escapeString(std::string pszString, int nLength, int nScheme); + static int getLastErrorNo(); + static int getLastErrorType(); + static std::string getLastErrorMsg(); + static int getErrorCounter(); + static int vsiGetLastErrorNo(); + static std::string vsiGetLastErrorMsg(); + static void vsiErrorReset(); + static void pushFinderLocation(std::string); + static void popFinderLocation(); + static void finderClean(); + static std::string findFile(std::string pszClass, std::string pszBasename); + static std::vector readDir(std::string pszDirname); + static std::vector readDirRecursive(std::string pszPath); + static void setConfigOption(std::string, std::string); + static void setThreadLocalConfigOption(std::string pszKey, std::string pszValue); + static std::string getConfigOption(std::string, std::string); + static std::string getGlobalConfigOption(std::string, std::string); + static std::string getThreadLocalConfigOption(std::string, std::string); + static std::vector getConfigOptions(); + static void setPathSpecificOption(std::string pszPathPrefix, std::string pszKey, std::string pszValue); + static std::string getPathSpecificOption(std::string pszPath, std::string pszKey, std::string pszDefault); + static void clearPathSpecificOptions(std::string pszPathPrefix); + static std::string binaryToHex(int nBytes, std::vector pabyData); + static std::vector hexToBinary(std::string pszHex); + static int fileFromMemBuffer(std::string pszFilename, std::vector pabyData); + static int unlink(std::string pszFilename); + static bool unlinkBatch(std::vector papszFiles); + static int mkdir(std::string pszDirname, long nMode); + static int rmdir(std::string pszDirname); + static int mkdirRecursive(std::string pszPathname, long mode); + static int rmdirRecursive(std::string pszDirname); + static int rename(std::string oldpath, std::string newpath); + static int copyFile(std::string pszNewPath, std::string pszOldPath); + static std::string getActualURL(std::string pszFilename); + static std::string getSignedURL(std::string /*pszFilename*/, std::vector /* papszOptions */); + static std::vector getFileSystemsPrefixes(); + static std::string getFileSystemOptions(std::string pszFilename); + static std::vector parseCommandLine(std::string pszCommandLine); + static int getNumCPUs(); + static uint64_t getUsablePhysicalRAM(); + static int gcpsToGeoTransform(std::vector> pasGCPs, std::vector padfGeoTransform, int bApproxOK); + static std::shared_ptr getSubdatasetInfo(std::string pszFileName); + + // static int computeMedianCutPCT(RasterBand hRed, RasterBand hGreen, RasterBand hBlue/*, int (*pfnIncludePixel)(int, int, void *) */, int nColors, ColorTable hColorTable, GDALProgressFunc pfnProgress/*, void *pProgressArg*/); + // static int ditherRGB2PCT(RasterBand hRed, RasterBand hGreen, RasterBand hBlue, RasterBand hTarget, ColorTable hColorTable, GDALProgressFunc pfnProgress/*, void *pProgressArg*/); + // static int reprojectImage(Dataset hSrcDS, std::string pszSrcWKT, Dataset hDstDS, std::string pszDstWKT, GDALResampleAlg eResampleAlg, double dfWarpMemoryLimit, double dfMaxError, GDALProgressFunc pfnProgress/*, void *pProgressArg*/, std::vector psOptions); + // static int computeProximity(RasterBand hSrcBand, RasterBand hProximityBand, std::vector papszOptions, GDALProgressFunc pfnProgress/*, void *pProgressArg*/); + // static int polygonize(RasterBand hSrcBand, RasterBand hMaskBand, Layer hOutLayer, int iPixValField, std::string papszOptions, GDALProgressFunc pfnProgress/*, void *pProgressArg*/); + // static int fPolygonize(RasterBand hSrcBand, RasterBand hMaskBand, Layer hOutLayer, int iPixValField, std::string papszOptions, GDALProgressFunc pfnProgress/*, void *pProgressArg*/); + // static int fillNodata(RasterBand hTargetBand, RasterBand hMaskBand, double dfMaxSearchDist, int bDeprecatedOption, int nSmoothingIterations, std::string papszOptions, GDALProgressFunc pfnProgress/*, void *pProgressArg*/); + // static int sieveFilter(RasterBand hSrcBand, RasterBand hMaskBand, RasterBand hDstBand, int nSizeThreshold, int nConnectedness, std::string papszOptions, GDALProgressFunc pfnProgress/*, void *pProgressArg*/); + // static int regenerateOverviews(RasterBand hSrcBand, int nOverviewCount, RasterBand *pahOverviewBands, std::string pszResampling, GDALProgressFunc pfnProgress, void *pProgressData); + // static int gridCreate(GDALGridAlgorithm, const void *, int, std::vector, std::vector, std::vector, double, double, double, double, int, int, int, void *, GDALProgressFunc, void *); + // static int contourGenerate(RasterBand hBand, double dfContourInterval, double dfContourBase, int nFixedLevelCount, std::vector padfFixedLevels, int bUseNoData, double dfNoDataValue, void *hLayer, int iIDField, int iElevField, GDALProgressFunc pfnProgress/*, void *pProgressArg*/); + // static int contourGenerateEx(RasterBand hBand, void *hLayer, std::vector options, GDALProgressFunc pfnProgress/*, void *pProgressArg*/); + // static Dataset viewshedGenerate(RasterBand hBand, std::string pszDriverName, std::string pszTargetRasterName, std::vector papszCreationOptions, double dfObserverX, double dfObserverY, double dfObserverHeight, double dfTargetHeight, double dfVisibleVal, double dfInvisibleVal, double dfOutOfRangeVal, double dfNoDataVal, double dfCurvCoeff, GDALViewshedMode eMode, double dfMaxDistance, GDALProgressFunc pfnProgress/*, void *pProgressArg*/, GDALViewshedOutputType heightMode, std::vector papszExtraOptions); + // static Dataset autoCreateWarpedVRT(Dataset hSrcDS, std::string pszSrcWKT, std::string pszDstWKT, GDALResampleAlg eResampleAlg, double dfMaxError, const GDALWarpOptions *psOptions); + // static Dataset createPansharpenedVRT(std::string pszXML, RasterBand hPanchroBand, int nInputSpectralBands, std::vector pahInputSpectralBands); + // static SuggestedWarpOutputRes suggestedWarpOutput(Dataset hSrcDS, GDALTransformerFunc pfnTransformer); + + static std::vector applyGeoTransform(std::vector, double, double); + static std::vector invGeoTransform(std::vector padfGeoTransformIn); + + static std::string versionInfo(std::string pszRequest); + static void allRegister(); + static void registerPlugins(); + static int registerPlugin(std::string name); + static void destroyDriverManager(); + static int getCacheMax(); + static int getCacheUsed(); + static void setCacheMax(int nBytes); + static int getDataTypeSize(int); + static int dataTypeIsComplex(int); + static std::string getDataTypeName(int); + static int getDataTypeByName(std::string); + static int dataTypeUnion(int, int); + static std::string getColorInterpretationName(int); + static std::string getPaletteInterpretationName(int); + static std::string decToDMS(double, std::string, int); + static double packedDMSToDec(double); + static double decToPackedDMS(double); + static int getDriverCount(); + static std::shared_ptr getDriverByName(std::string); + static std::shared_ptr getDriver(int); + static std::shared_ptr open(std::string pszFilename); + static std::shared_ptr open(std::string pszFilename, int eAccess); + static std::shared_ptr openEx(std::string pszFilename); + static std::shared_ptr openEx(std::string pszFilename, unsigned int nOpenFlags); + static std::shared_ptr openEx(std::string pszFilename, unsigned int nOpenFlags, std::vector papszOpenOptions); + static std::shared_ptr openEx(std::string pszFilename, unsigned int nOpenFlags, std::vector papszAllowedDrivers, std::vector papszOpenOptions, std::vector papszSiblingFiles); + static std::shared_ptr openShared(std::string, int); + static std::shared_ptr identifyDriver(std::string pszFilename, std::vector papszFileList); + static std::shared_ptr identifyDriverEx(std::string pszFilename, unsigned int nIdentifyFlags, std::vector papszAllowedDrivers, std::vectorpapszFileList); + + static std::shared_ptr warp(std::string pszDest, std::shared_ptr hDstDS, std::vector> pahSrcDS, std::vector psOptions); + static std::shared_ptr buildVRT(std::string pszDest, std::vector> pahSrcDS, std::vector papszSrcDSNames, std::vector psOptions); + static std::shared_ptr multiDimTranslate(std::string pszDest, std::shared_ptr hDstDataset, std::vector> pahSrcDS, std::vector psOptions); + + static void setProjDataPath(std::string path); + static std::vector> getDrivers(); + +private: + static std::string charPtrToString(const char *); + static std::vector charPtrPtrToStringVector(char **); + static std::vector doublePtrToDoubleVector(double* doublearray); +}; + +#endif diff --git a/src/native/gdal3.js/SubdatasetInfo.h b/src/native/gdal3.js/SubdatasetInfo.h new file mode 100644 index 0000000..59fdef8 --- /dev/null +++ b/src/native/gdal3.js/SubdatasetInfo.h @@ -0,0 +1,27 @@ +#ifndef _GDAL3JS_SUBDATASETINFO_H +#define _GDAL3JS_SUBDATASETINFO_H + +#include +#include + +class Gdal; + +class SubdatasetInfo { +public: + friend class Gdal; + SubdatasetInfo(std::string pszFileName); + ~SubdatasetInfo(); + + std::string getPathComponent(); + std::string getSubdatasetComponent(); + std::string modifyPathComponent(std::string pszNewFileName); + +private: + SubdatasetInfo(void*); + static std::shared_ptr Create(void*); + + struct MakeSharedEnabler; + void *ptr; +}; + +#endif diff --git a/src/native/gdal3.js/empty.h b/src/native/gdal3.js/empty.h new file mode 100644 index 0000000..e69de29 diff --git a/src/native/gdal3.js/empty.i b/src/native/gdal3.js/empty.i new file mode 100644 index 0000000..03e08af --- /dev/null +++ b/src/native/gdal3.js/empty.i @@ -0,0 +1,25 @@ +#ifndef _GDALCPP_I +#define _GDALCPP_I + +%module gdal + +%{ +#include +#include + +EMSCRIPTEN_BINDINGS(stl_wrappers) { + emscripten::register_vector("VectorInt"); + emscripten::register_vector("VectorString"); + emscripten::register_vector>("VectorDriver"); + emscripten::register_map("MapIntInt"); + emscripten::register_map("MapStringString"); +} + +%} + +%feature("shared_ptr"); +%feature("polymorphic_shared_ptr"); + +%include + +#endif diff --git a/src/workerSupport.js b/src/workerSupport.js deleted file mode 100644 index d179aa9..0000000 --- a/src/workerSupport.js +++ /dev/null @@ -1,85 +0,0 @@ -import { getSystemError } from './allJsFunctions/helper/error'; - -function onModuleReady(Gdal) { - if (this.data && this.data.func && Gdal[this.data.func]) { - Gdal[this.data.func](...this.data.params).then((result) => { - postMessage({ success: true, id: this.data.id, data: result }); - }).catch((error) => { - postMessage({ success: false, id: this.data.id, data: { message: error.message } }); - }); - } else { - console.error('undefined function', this.data); - } -} - -function onError(err) { - postMessage({ success: false, id: this.id, data: getSystemError(err.message) }); -} - -export default function workerInsideSupport(initGdalJs) { - let moduleReady; - onmessage = function onmessage(event) { - if (event.data && event.data.func === 'constructor') { - let config = { useWorker: false }; - if (event.data.params && event.data.params.config) { - config = { ...event.data.params.config, ...config }; - } - moduleReady = initGdalJs(config); - moduleReady.then(({ drivers }) => postMessage({ success: true, id: 'onload', data: drivers })).catch((e) => postMessage({ success: false, id: 'onload', data: e })); - return null; - } - - return moduleReady - .then(onModuleReady.bind(event)) - .catch(onError.bind(event)); - }; -} - -const variables = { - gdalWorkerWrapper: null, - drivers: null, -}; -class WorkerWrapper { - constructor(file, config, onload) { - this.promises = { onload: { resolve: onload, reject: console.error } }; - this.gdalWorker = new Worker(file); - this.gdalWorker.onmessage = (evt) => { - if (evt.data && evt.data.id && this.promises[evt.data.id]) { - if (evt.data.success) this.promises[evt.data.id].resolve(evt.data.data); - else this.promises[evt.data.id].reject(evt.data.data); - } - }; - this.gdalWorker.postMessage({ func: 'constructor', params: { config } }); - } - - call(i) { - return new Promise((resolve, reject) => { - i.id = Math.floor(Math.random() * 100000); - this.promises[i.id] = { resolve, reject }; - this.gdalWorker.postMessage(i); - }); - } - - terminate() { - this.gdalWorker.terminate(); - delete this.gdalWorker; - delete this.promises; - } -} - -const gdalProxy = new Proxy({}, { - get(target, name) { - if (name === 'then' || name === 'catch') return target; - if (name === 'drivers') return variables.drivers; - return (...args) => new Promise((resolve, reject) => { - variables.gdalWorkerWrapper.call({ func: name, params: args }) - .then((data) => { resolve(data); }).catch((e) => reject(e)); - }); - }, -}); - -export const workerOutsideSupport = { - variables, - WorkerWrapper, - gdalProxy, -}; diff --git a/test/browser.html b/test/browser.html index a0ab847..c084900 100644 --- a/test/browser.html +++ b/test/browser.html @@ -69,27 +69,21 @@ - - - - - - - - - - - - - - - - - - + + + + + diff --git a/test/raster.spec.js b/test/raster.spec.js index 6141023..dce35d9 100644 --- a/test/raster.spec.js +++ b/test/raster.spec.js @@ -2,11 +2,19 @@ /* eslint-disable func-names */ const isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'; // https://github.com/iliakan/detect-node/blob/master/index.js +let Module; let Gdal; +let dest; let assert; +let xml2js; -if (isNode) assert = require('chai').assert; -else assert = chai.assert; +if (isNode) { + assert = require('chai').assert; + xml2js = require('xml-js').xml2js; +} else { + assert = chai.assert; + xml2js = window.xml2js; +} const ignoredInputFormats = ['']; const ignoredOutputFormats = [ @@ -45,51 +53,85 @@ const suffixes = { 'NWT_GRD': { outputParams: ['-ot', 'Float32'] }, }; -createTest(); -async function createTest() { +init(); +async function init() { if (isNode) { - const dest = require('fs').mkdtempSync('/tmp/gdaljs'); - const initGdalJs = require('../build/package/gdal3.coverage'); - Gdal = await initGdalJs({ path: 'build/package', dest }); + dest = require('fs').mkdtempSync('/tmp/gdal3js'); + const initGdalJs = require('../node.js'); + Module = await initGdalJs({ path: 'dist' }); + Gdal = Module.Gdal; + Gdal.allRegister(); + createTest(); } else { - Gdal = await initGdalJs({ path: '../package', useWorker: false }); + window.isGdalReadyToTest.then(() => { + Module = window.Module; + Gdal = window.Gdal; + dest = window.dest; + createTest(); + }); } - - describe('Raster Drivers', async () => { - Object.values(Gdal.drivers.raster).filter(v => (v.extension !== "" || v.extensions !== "")).forEach(driver => { - if (ignoredOutputFormats.includes(driver.shortName)) return; - const suffix = suffixes[driver.shortName] || {}; - const tempParams = suffixes[driver.shortName] && suffixes[driver.shortName].outputParams ? suffixes[driver.shortName].outputParams : []; - +} +async function createTest() { + describe('Raster Drivers', () => { + const drivers = Module.toArray(Gdal.getDrivers()); + drivers.filter(d => d.isRaster() && (d.getExtension() !== '' || d.getExtensions() !== '')).forEach((driver) => { + const driverShortName = driver.getShortName(); + if (ignoredOutputFormats.includes(driverShortName)) return; + // if (driverShortName !== 'HFA') return; + const suffix = suffixes[driverShortName] || {}; + const tempParams = suffixes[driverShortName] && suffixes[driverShortName].outputParams ? suffixes[driverShortName].outputParams : []; [ [], - ...getOptions(driver.creationOptionList).map(value => ['-co', value]), + ...getOptions(driver.getCreationOptions()).map(value => ['-co', value]), ] - .filter((s) => s.length != 2 || (!ignoredParams.includes(driver.shortName) && !ignoredParams.includes(driver.shortName+'-'+s[1].split('=')[0]))) + .filter((s) => s.length != 2 || (!ignoredParams.includes(driverShortName) && !ignoredParams.includes(driverShortName+'-'+s[1].split('=')[0]))) .forEach((s) => { + console.log('start', driverShortName); const params = [...s, ...tempParams]; - const p = ['-of', driver.shortName, ...params]; + const p = ['-of', driverShortName, ...params]; + const pVector = new Module.VectorString(); + p.forEach((a) => pVector.push_back(a)); const p2 = `[${params.map(s => "'"+s+"'").join(', ')}]`; + // if (p2 !== '[]') return; let firstDataset2; const writeFunc = async () => { + console.log('2'); + const a = new Module.VectorString(); + a.push_back('-json'); + let file = `data/${suffix.file || 'spaf27_epsg'}.tif`; if (!isNode) { const fileData = await fetch(file); file = new File([await fileData.blob()], `${suffix.file || 'spaf27_epsg'}.tif`); + file = (await Module.autoMountFiles([file]))[0]; } else file = `test/${file}`; - const result = await Gdal.open(file); - const firstDataset = result.datasets[0]; - assert.strictEqual(firstDataset.pointer > 0, true, 'An error occurred while opening the tif file. (ptr == 0)'); - const outputPath = await Gdal.gdal_translate(firstDataset, p); + const firstDataset = Gdal.openEx(file); + assert.strictEqual(firstDataset !== null, true, 'An error occurred while opening the tif file. (ptr == 0)'); + const r = Math.random(); - const result2 = await Gdal.open(`${outputPath.real}${suffix.outputFile || ''}`); - firstDataset2 = result2.datasets[0]; - const info = await Gdal.getInfo(firstDataset2); - assert.strictEqual(firstDataset2.pointer > 0, true, 'An error occurred while converting the file. (ptr == 0)'); - assert.strictEqual(info.bandCount > 0, true, `${driver.shortName} file has no layer. (bandCount == 0)`); + const extensions = driver.getExtensions(); + let extension = driver.getExtension(); + if (extension === '' && extensions !== '') { + extension = extensions.split(' ')[0]; + } + if (extension !== '') { + extension = extension.replace('.', '').replace('/', ''); + } + + const ext = extension || 'unknown'; + const abc = firstDataset.translate(dest + '/d' + r + '.' + ext, pVector); + assert.strictEqual(abc !== null, true, 'An error occurred while converting the file2. (ptr == 0)'); + console.log('f2', abc); + abc.close(); + firstDataset2 = Gdal.openEx(dest + '/d' + r + '.' + ext); + assert.strictEqual(firstDataset2 !== null, true, 'An error occurred while converting the file. (ptr == 0)'); + + const info = JSON.parse(firstDataset2.info(a)); + // console.log('z', info); + assert.strictEqual(info.bands.length > 0, true, `${driverShortName} file has no layer. (bandCount == 0)`); }; const readFunc = async () => { @@ -100,24 +142,29 @@ async function createTest() { const info3 = await Gdal.getInfo(firstDataset3); assert.strictEqual(info3.bandCount > 0, true, `tif file has no layer. (bandCount == 0)`); }; - if (driver.isReadable && driver.isWritable) { - it(`tif -> ${driver.shortName} params: ${p2} && ${driver.shortName} -> tif`, async () => { - console.log(`tif -> ${driver.shortName} params: ${p2} && ${driver.shortName} -> tif`); + if (driver.isReadable() && driver.isWritable()) { + console.log(`tif -> ${driverShortName} params: ${p2} && ${driverShortName} -> tif`); + it(`tif -> ${driverShortName} params: ${p2} && ${driverShortName} -> tif`, async () => { + console.log('4'); + console.log(`tif -> ${driverShortName} params: ${p2} && ${driverShortName} -> tif`); await writeFunc(); // await readFunc(); }); - } else if (driver.isWritable) { - it(`tif -> ${driver.shortName} params: ${p2}`, async () => { - console.log(`tif -> ${driver.shortName} params: ${p2}`); + console.log('================='); + } else if (driver.isWritable()) { + it(`tif -> ${driverShortName} params: ${p2}`, async () => { + console.log(`tif -> ${driverShortName} params: ${p2}`); await writeFunc(); }); } + console.log('end', driverShortName); }); }); }); } -function getOptions(optionList) { +function getOptions(optionList2) { + const optionList = xmlToJs(optionList2); const output = []; const list = (optionList || []).filter(o => (o.type === 'string-select' || o.type === 'boolean') && o.scope !== 'raster'); list.forEach(o => { @@ -132,3 +179,22 @@ function getOptions(optionList) { }); return output; } + +function xmlToJs(data) { + if (data) { + const tempJs = xml2js(data); + if (tempJs.elements && tempJs.elements.length > 0) { + if (tempJs.elements.length !== 1) console.warn('invalid xml!'); + if (tempJs.elements[0] && tempJs.elements[0].elements) { + return tempJs.elements[0].elements.map((o) => { + const temp = o.attributes; + if (o.elements && o.elements.length > 0) { + temp.options = o.elements.map((o2) => o2.elements[0].text); + } + return temp; + }); + } + } + } + return null; +} diff --git a/test/vector.spec.js b/test/vector.spec.js index 4b039b0..fde1897 100644 --- a/test/vector.spec.js +++ b/test/vector.spec.js @@ -2,14 +2,22 @@ /* eslint-disable func-names */ const isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'; // https://github.com/iliakan/detect-node/blob/master/index.js +let Module; let Gdal; +let dest; let assert; +let xml2js; -if (isNode) assert = require('chai').assert; -else assert = chai.assert; +if (isNode) { + assert = require('chai').assert; + xml2js = require('xml-js').xml2js; +} else { + assert = chai.assert; + xml2js = window.xml2js; +} const ignoredInputFormats = ['']; -const ignoredOutputFormats = ['GeoJSON', 'S57', 'PDS4', 'PDF', 'PGDUMP', 'OpenFileGDB']; +const ignoredOutputFormats = ['GeoJSON', 'S57', 'PDS4', 'PDF', 'PGDUMP', 'OpenFileGDB', 'GPSBabel']; const ignoredParams = [ 'ESRI Shapefile-SHPT', 'CSV', @@ -33,31 +41,46 @@ const suffixes = { 'MVT': {outputFile: '/0/0/0.pbf'}, }; -createTest(); -async function createTest() { +init(); +async function init() { if (isNode) { - const dest = require('fs').mkdtempSync('/tmp/gdaljs'); - const initGdalJs = require('../build/package/gdal3.coverage'); - Gdal = await initGdalJs({ path: 'build/package', dest }); + dest = require('fs').mkdtempSync('/tmp/gdal3js'); + const initGdalJs = require('../node.js'); + Module = await initGdalJs({ path: 'dist' }); + Gdal = Module.Gdal; + Gdal.allRegister(); + createTest(); } else { - Gdal = await initGdalJs({ path: '../package', useWorker: false }); + window.isGdalReadyToTest.then(() => { + Module = window.Module; + Gdal = window.Gdal; + dest = window.dest; + createTest(); + }); } - +} +async function createTest() { describe('Vector Drivers', async () => { - Object.values(Gdal.drivers.vector).filter(v => (v.extension !== "" || v.extensions !== "")).forEach(driver => { - if (ignoredOutputFormats.includes(driver.shortName)) return; - const suffix = suffixes[driver.shortName] || {}; - const tempParams = suffixes[driver.shortName] && suffixes[driver.shortName].outputParams ? suffixes[driver.shortName].outputParams : []; + const b = new Module.VectorString(); + b.push_back('-json'); + const drivers = Module.toArray(Gdal.getDrivers()); + drivers.filter(d => d.isVector() && (d.getExtension() !== '' || d.getExtensions() !== '')).forEach((driver) => { + const driverShortName = driver.getShortName(); + if (ignoredOutputFormats.includes(driverShortName)) return; + const suffix = suffixes[driverShortName] || {}; + const tempParams = suffixes[driverShortName] && suffixes[driverShortName].outputParams ? suffixes[driverShortName].outputParams : []; [ [], - ...getOptions(driver.layerCreationOptionList).map(value => ['-lco', value]), - ...getOptions(driver.creationOptionList).map(value => ['-dsco', value]), + ...getOptions(driver.getLayerCreationOptions()).map(value => ['-lco', value]), + ...getOptions(driver.getCreationOptions()).map(value => ['-dsco', value]), ] - .filter((s) => s.length != 2 || (!ignoredParams.includes(driver.shortName) && !ignoredParams.includes(driver.shortName+'-'+s[1].split('=')[0]))) + .filter((s) => s.length != 2 || (!ignoredParams.includes(driverShortName) && !ignoredParams.includes(driverShortName+'-'+s[1].split('=')[0]))) .forEach((s) => { const params = [...s, ...tempParams]; - const p = ['-f', driver.shortName, ...params]; + const p = ['-f', driverShortName, ...params]; + const pVector = new Module.VectorString(); + p.forEach((a) => pVector.push_back(a)); const p2 = `[${params.map(s => "'"+s+"'").join(', ')}]`; let firstDataset2; @@ -67,37 +90,62 @@ async function createTest() { if (!isNode) { const fileData = await fetch(file); file = new File([await fileData.blob()], `${suffix.file || 'polygon-line-point'}.geojson`); + file = (await Module.autoMountFiles([file]))[0]; } else file = `test/${file}`; - const result = await Gdal.open(file); - const firstDataset = result.datasets[0]; - assert.strictEqual(firstDataset.pointer > 0, true, 'An error occurred while opening the geojson file. (ptr == 0)'); - const outputPath = await Gdal.ogr2ogr(firstDataset, p); + const firstDataset = Gdal.openEx(file); + assert.strictEqual(firstDataset !== null, true, 'An error occurred while opening the geojson file. (ptr == 0)'); + + const r = Math.random(); + const extensions = driver.getExtensions(); + let extension = driver.getExtension(); + if (extension === '' && extensions !== '') { + extension = extensions.split(' ')[0]; + } + if (extension !== '') { + extension = extension.replace('.', '').replace('/', ''); + } + + let ext = extension || 'unknown'; + if (driverShortName === 'MapInfo File' && p.indexOf('FORMAT=MIF') !== -1) ext = 'mif'; + + const abc = firstDataset.vectorTranslate(dest + '/d' + r + '.' + ext, pVector); + assert.strictEqual(abc !== null, true, 'An error occurred while converting the file2. (ptr == 0)'); + abc.close(); - const result2 = await Gdal.open(`${outputPath.real}${suffix.outputFile || ''}`); - firstDataset2 = result2.datasets[0]; - const info = await Gdal.getInfo(firstDataset2); - assert.strictEqual(firstDataset2.pointer > 0, true, 'An error occurred while converting the file. (ptr == 0)'); - assert.strictEqual(info.featureCount > 0, true, `${driver.shortName} file has no feature. (featureCount == 0)`); + firstDataset2 = Gdal.openEx(dest + '/d' + r + '.' + ext + (suffix.outputFile || '')); + assert.strictEqual(firstDataset2 !== null, true, 'An error occurred while converting the file. (ptr == 0)'); + + const info = JSON.parse(firstDataset2.vectorInfo(b)); + const featureCount = info.layers.reduce((acc, layer) => acc + layer.featureCount, 0); + assert.strictEqual(featureCount > 0, true, `${driverShortName} file has no feature. (featureCount == 0)`); }; const readFunc = async () => { - const outputPath2 = await Gdal.ogr2ogr(firstDataset2, ['-f', 'GeoJSON', ...(suffix.inputParams || [])]); + const options = ['-f', 'GeoJSON', ...(suffix.inputParams || [])]; + const pVector2 = new Module.VectorString(); + options.forEach((a) => pVector2.push_back(a)); + const r = Math.random(); + const abc = firstDataset2.vectorTranslate(dest + '/d' + r + '.geojson', pVector2); + assert.strictEqual(abc !== null, true, 'An error occurred while converting the file2. (ptr == 0)'); + abc.close(); + + const firstDataset3 = Gdal.openEx(dest + '/d' + r + '.geojson'); + assert.strictEqual(firstDataset3 !== null, true, 'An error occurred while converting the file. (ptr == 0)'); - const result3 = await Gdal.open(outputPath2.real); - const firstDataset3 = result3.datasets[0]; - const info3 = await Gdal.getInfo(firstDataset3); - assert.strictEqual(info3.featureCount > 0, true, 'geojson file has no feature. (featureCount == 0)'); + const info3 = JSON.parse(firstDataset3.vectorInfo(b)); + const featureCount = info3.layers.reduce((acc, layer) => acc + layer.featureCount, 0); + assert.strictEqual(featureCount > 0, true, 'geojson file has no feature. (featureCount == 0)'); }; - if (driver.isReadable && driver.isWritable) { - it(`geojson -> ${driver.shortName} params: ${p2} && ${driver.shortName} -> geojson`, async () => { - console.log(`geojson -> ${driver.shortName} params: ${p2} && ${driver.shortName} -> geojson`); + if (driver.isReadable() && driver.isWritable()) { + it(`geojson -> ${driverShortName} params: ${p2} && ${driverShortName} -> geojson`, async () => { + console.log(`geojson -> ${driverShortName} params: ${p2} && ${driverShortName} -> geojson`); await writeFunc(); await readFunc(); }); - } else if (driver.isWritable) { - it(`geojson -> ${driver.shortName} params: ${p2}`, async () => { - console.log(`geojson -> ${driver.shortName} params: ${p2}`); + } else if (driver.isWritable()) { + it(`geojson -> ${driverShortName} params: ${p2}`, async () => { + console.log(`geojson -> ${driverShortName} params: ${p2}`); await writeFunc(); }); } @@ -106,7 +154,8 @@ async function createTest() { }); } -function getOptions(optionList) { +function getOptions(optionList2) { + const optionList = xmlToJs(optionList2); const output = []; const list = (optionList || []).filter(o => (o.type === 'string-select' || o.type === 'boolean') && o.scope !== 'raster'); list.forEach(o => { @@ -121,3 +170,22 @@ function getOptions(optionList) { }); return output; } + +function xmlToJs(data) { + if (data) { + const tempJs = xml2js(data); + if (tempJs.elements && tempJs.elements.length > 0) { + if (tempJs.elements.length !== 1) console.warn('invalid xml!'); + if (tempJs.elements[0] && tempJs.elements[0].elements) { + return tempJs.elements[0].elements.map((o) => { + const temp = o.attributes; + if (o.elements && o.elements.length > 0) { + temp.options = o.elements.map((o2) => o2.elements[0].text); + } + return temp; + }); + } + } + } + return null; +}